Skip to content

Commit

Permalink
nvme: Add controller self-test operations and status
Browse files Browse the repository at this point in the history
Vastly simplified interface, only selected properties exposed.
  • Loading branch information
tbzatek committed May 6, 2022
1 parent 78d087b commit f6d3cd0
Show file tree
Hide file tree
Showing 4 changed files with 528 additions and 29 deletions.
11 changes: 11 additions & 0 deletions data/org.freedesktop.UDisks2.policy.in
Original file line number Diff line number Diff line change
Expand Up @@ -534,6 +534,17 @@
</defaults>
</action>

<!-- Start and abort SMART self-tests -->
<action id="org.freedesktop.udisks2.nvme-smart-selftest">
<description>Run device self-test</description>
<message>Authentication is required to run a device self-test</message>
<defaults>
<allow_any>auth_admin</allow_any>
<allow_inactive>auth_admin</allow_inactive>
<allow_active>auth_admin_keep</allow_active>
</defaults>
</action>

<!-- ###################################################################### -->
<!-- Canceling jobs -->

Expand Down
72 changes: 72 additions & 0 deletions data/org.freedesktop.UDisks2.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1094,6 +1094,45 @@
-->
<property name="SmartTemperature" type="q" access="read"/>

<!-- SmartSelftestStatus:
@since: 2.10.0
The status of the last self-test. Known values include:
<variablelist>
<varlistentry><term>success</term>
<listitem><para>Operation completed without error (or never ran).</para></listitem></varlistentry>
<varlistentry><term>aborted</term>
<listitem><para>Operation was aborted by a Device Self-test command.</para></listitem></varlistentry>
<varlistentry><term>ctrl_reset</term>
<listitem><para>Operation was aborted by a Controller Level Reset.</para></listitem></varlistentry>
<varlistentry><term>ns_removed</term>
<listitem><para>Operation was aborted due to a removal of a namespace from the namespace inventory.</para></listitem></varlistentry>
<varlistentry><term>aborted_format</term>
<listitem><para>Operation was aborted due to the processing of a Format NVM command.</para></listitem></varlistentry>
<varlistentry><term>fatal_error</term>
<listitem><para>A fatal error or unknown test error occurred while the controller was executing the device self-test operation and the operation did not complete.</para></listitem></varlistentry>
<varlistentry><term>unknown_seg_fail</term>
<listitem><para>Operation completed with a segment that failed and the segment that failed is not known.</para></listitem></varlistentry>
<varlistentry><term>known_seg_fail</term>
<listitem><para>Operation completed with one or more failed segments.</para></listitem></varlistentry>
<varlistentry><term>aborted_unknown</term>
<listitem><para>Operation was aborted for unknown reason.</para></listitem></varlistentry>
<varlistentry><term>aborted_sanitize</term>
<listitem><para>Operation was aborted due to a sanitize operation.</para></listitem></varlistentry>
<varlistentry><term>inprogress</term>
<listitem><para>Self-test operation is currently in progress.</para></listitem></varlistentry>
</variablelist>
-->
<property name="SmartSelftestStatus" type="s" access="read"/>

<!--
SmartSelftestPercentRemaining:
@since: 2.10.0
The percent remaining or -1 if unknown.
-->
<property name="SmartSelftestPercentRemaining" type="i" access="read"/>

<!--
SmartUpdate:
@options: Options (currently unused except for <link linkend="udisks-std-options">standard options</link>).
Expand Down Expand Up @@ -1163,6 +1202,39 @@
<arg name="attributes" direction="out" type="a{sv}"/>
</method>

<!--
SmartSelftestStart:
@type: The type test to run.
@options: Options (currently unused except for <link linkend="udisks-std-options">standard options</link>).
@since: 2.10.0
Starts a device selftest operation on all active namespaces accessible through the controller
at the time the operation is started. A device selftest operation is a diagnostic testing
sequence that tests the integrity and functionality of the controller and may include testing
of the media associated with namespaces.
The @type parameter indicates the type of test to start - valid values are
<literal>short</literal>, <literal>extended</literal> and <literal>vendor-specific</literal>.
Note that the method returns immediately after the test has been started
successfully and the operation is performed in the background.
-->
<method name="SmartSelftestStart">
<arg name="type" direction="in" type="s"/>
<arg name="options" direction="in" type="a{sv}"/>
</method>

<!--
SmartSelftestAbort:
@options: Options (currently unused except for <link linkend="udisks-std-options">standard options</link>).
@since: 2.10.0
Aborts a running device selftest.
-->
<method name="SmartSelftestAbort">
<arg name="options" direction="in" type="a{sv}"/>
</method>

</interface>

<!-- ********************************************************************** -->
Expand Down
13 changes: 13 additions & 0 deletions doc/udisks2-sections.txt.in.in
Original file line number Diff line number Diff line change
Expand Up @@ -1267,11 +1267,21 @@ udisks_nvme_controller_call_smart_update
udisks_nvme_controller_call_smart_update_finish
udisks_nvme_controller_call_smart_update_sync
udisks_nvme_controller_complete_smart_update
udisks_nvme_controller_call_smart_selftest_start
udisks_nvme_controller_call_smart_selftest_start_finish
udisks_nvme_controller_call_smart_selftest_start_sync
udisks_nvme_controller_complete_smart_selftest_start
udisks_nvme_controller_call_smart_selftest_abort
udisks_nvme_controller_call_smart_selftest_abort_finish
udisks_nvme_controller_call_smart_selftest_abort_sync
udisks_nvme_controller_complete_smart_selftest_abort
udisks_nvme_controller_get_controller_id
udisks_nvme_controller_get_fguid
udisks_nvme_controller_get_nvme_revision
udisks_nvme_controller_get_smart_critical_warning
udisks_nvme_controller_get_smart_power_on_hours
udisks_nvme_controller_get_smart_selftest_percent_remaining
udisks_nvme_controller_get_smart_selftest_status
udisks_nvme_controller_get_smart_temperature
udisks_nvme_controller_get_smart_updated
udisks_nvme_controller_get_state
Expand All @@ -1282,13 +1292,16 @@ udisks_nvme_controller_dup_fguid
udisks_nvme_controller_dup_nvme_revision
udisks_nvme_controller_dup_smart_critical_warning
udisks_nvme_controller_dup_state
udisks_nvme_controller_dup_smart_selftest_status
udisks_nvme_controller_dup_subsystem_nqn
udisks_nvme_controller_dup_transport
udisks_nvme_controller_set_controller_id
udisks_nvme_controller_set_fguid
udisks_nvme_controller_set_nvme_revision
udisks_nvme_controller_set_smart_critical_warning
udisks_nvme_controller_set_smart_power_on_hours
udisks_nvme_controller_set_smart_selftest_percent_remaining
udisks_nvme_controller_set_smart_selftest_status
udisks_nvme_controller_set_smart_temperature
udisks_nvme_controller_set_smart_updated
udisks_nvme_controller_set_state
Expand Down

0 comments on commit f6d3cd0

Please sign in to comment.