<!DOCTYPE node PUBLIC
"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
  <interface name="org.freedesktop.UDisks.Device">
    <doc:doc>
      <doc:description>
        <doc:para>
          This interface provides information about a block device on
          a UNIX-like system. In addition to just providing
          information, methods can be invoked to perform operations on
          the block device. Objects implementing this interface have
          object paths prefixed with <doc:tt>/devices/</doc:tt>
          followed by a sanitized representation of the base name of
          their native path. As the D-Bus specification greatly limits
          what characters can be used in object paths, this doesn't
          necessarily map one to one with the native basename; for
          example the native
          path <doc:tt>/sys/devices/virtual/block/dm-0</doc:tt> will
          be represented as <doc:tt>/devices/dm_0</doc:tt>.
        </doc:para>
        <doc:para>
          Most methods on this interface take an array of strings
          for options that can affect what the method does. Some of
          these options are literal strings (such
          as <doc:tt>noatime</doc:tt>) while some are encoded in the
          form of a key/value pair (such
          as <doc:tt>label=</doc:tt>).
        </doc:para>
        <doc:para>
          A general note about properties: the set of values
          returned can be expected to grow in the future as both
          hardware and operating system capabilities evolve.  Care
          has been taken to namespace values so applications can
          properly fall back (see e.g.
          <doc:ref type="property" to="Device:DriveMediaCompatibility">DriveMediaCompatibility</doc:ref>)
          and export both general and specific properties (such as
          <doc:ref type="property" to="Device:IdUsage">IdUsage</doc:ref>
          vs.
          <doc:ref type="property" to="Device:IdType">IdType</doc:ref>).
          In general an empty string in a property means not
          set. Since the empty string is not a valid object path we
          use the "/" to mean "not set" for object paths.
        </doc:para>
      </doc:description>
    </doc:doc>

    <!-- ************************************************************ -->

    <method name="JobCancel">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>

      <doc:doc>
        <doc:description>
          <doc:para>
            Cancels a job in progress.
          </doc:para>
        </doc:description>
        <doc:permission>
          The caller will need one of the following PolicyKit authorizations:
          <doc:list>
            <doc:item>
              <doc:term>org.freedesktop.udisks.cancel-job-others</doc:term>
              <doc:definition>To cancel a job initiated by another user</doc:definition>
            </doc:item>
          </doc:list>
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.PolicyKit.Error.NotAuthorized">if the caller lacks the appropriate PolicyKit authorization</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Failed">if the operation failed</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <!-- ************************************************************ -->

    <method name="PartitionTableCreate">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="scheme" direction="in" type="s">
        <doc:doc><doc:summary>
            The scheme of the partition table to create.
        </doc:summary></doc:doc>
      </arg>
      <arg name="options" direction="in" type="as">
        <doc:doc><doc:summary>No options are currently supported.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Creates a new partition table. The following partition table schemes are supported:
            <doc:list>
              <doc:item>
                <doc:term>none</doc:term>
                <doc:definition>To zero out existing partition tables signatures.</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>mbr</doc:term>
                <doc:definition>
                  Use the
                  <doc:ulink url="http://en.wikipedia.org/wiki/Master_Boot_Record">Master Boot Record</doc:ulink>
                  partitioning scheme.
                </doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>gpt</doc:term>
                <doc:definition>
                  Use the
                  <doc:ulink url="http://en.wikipedia.org/wiki/GUID_Partition_Table">GUID Partition Table</doc:ulink>
                  scheme.
                </doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>apm</doc:term>
                <doc:definition>
                  Use the
                  <doc:ulink url="http://en.wikipedia.org/wiki/Apple_Partition_Map">Apple Partition Map</doc:ulink>
                  partitioning scheme.
                </doc:definition>
              </doc:item>
            </doc:list>
          </doc:para>
        </doc:description>
        <doc:permission>
          The caller will need one of the following PolicyKit authorizations:
          <doc:list>
            <doc:item>
              <doc:term>org.freedesktop.udisks.change</doc:term>
              <doc:definition>If the operation is on a
                <doc:ref type="property" to="Device:DeviceIsSystemInternal">non-system-internal</doc:ref>
                device</doc:definition>
            </doc:item>
            <doc:item>
              <doc:term>org.freedesktop.udisks.change-system-internal</doc:term>
              <doc:definition>If the operation is on a
                <doc:ref type="property" to="Device:DeviceIsSystemInternal">system-internal</doc:ref>
                device</doc:definition>
            </doc:item>
          </doc:list>
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.PolicyKit.Error.NotAuthorized">if the caller lacks the appropriate PolicyKit authorization</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Busy">if the device or a partition on it are busy</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Failed">if the operation failed</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Cancelled">if the job was cancelled</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <!-- ************************************************************ -->

    <method name="PartitionDelete">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="options" direction="in" type="as">
        <doc:doc><doc:summary>No options are currently supported.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Deletes a partition, removing it from the enclosing partition table.
          </doc:para>
        </doc:description>
        <doc:permission>
          The caller will need one of the following PolicyKit authorizations:
          <doc:list>
            <doc:item>
              <doc:term>org.freedesktop.udisks.change</doc:term>
              <doc:definition>If the operation is on a
                <doc:ref type="property" to="Device:DeviceIsSystemInternal">non-system-internal</doc:ref>
                device</doc:definition>
            </doc:item>
            <doc:item>
              <doc:term>org.freedesktop.udisks.change-system-internal</doc:term>
              <doc:definition>If the operation is on a
                <doc:ref type="property" to="Device:DeviceIsSystemInternal">system-internal</doc:ref>
                device</doc:definition>
            </doc:item>
          </doc:list>
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.PolicyKit.Error.NotAuthorized">if the caller lacks the appropriate PolicyKit authorization</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Busy">if the device is busy</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Failed">if the operation failed</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Cancelled">if the job was cancelled</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <!-- ************************************************************ -->

    <method name="PartitionCreate">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="offset" direction="in" type="t">
        <doc:doc><doc:summary>Where on the device to create the partition.</doc:summary></doc:doc>
      </arg>
      <arg name="size" direction="in" type="t">
        <doc:doc><doc:summary>Size of the partitition to create.</doc:summary></doc:doc>
      </arg>
      <arg name="type" direction="in" type="s">
        <doc:doc><doc:summary>
            The type of the partition to create. Valid types depends
            on the partitioning scheme used:
            <doc:list>
              <doc:item>
                <doc:term>mbr</doc:term>
                <doc:definition>
                  For the
                  <doc:ulink url="http://en.wikipedia.org/wiki/Master_Boot_Record">Master Boot Record</doc:ulink>
                  partitioning scheme, the
                  given type must be a string representation of an
                  integer (both decimal and hexadecimal encodings are
                  accepted) between 0 and 255 both inclusive.
                </doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>gpt</doc:term>
                <doc:definition>
                  Any valid GUID string.
                </doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>apm</doc:term>
                <doc:definition>
                  Any valid type for
                  <doc:ulink url="http://en.wikipedia.org/wiki/Apple_Partition_Map">Apple Partition Map</doc:ulink>
                  for example <doc:tt>Apple_Unix_SVR2</doc:tt>.
                </doc:definition>
              </doc:item>
            </doc:list>
        </doc:summary></doc:doc>
      </arg>
      <arg name="label" direction="in" type="s">
        <doc:doc><doc:summary>
            The label to use for the partition. Leave blank if the
            partition table scheme is <doc:tt>mbr</doc:tt>.
        </doc:summary></doc:doc>
      </arg>
      <arg name="flags" direction="in" type="as">
        <doc:doc><doc:summary>
            Flags to use for the partition. Valid flags depends on the
            partitioning scheme used:
            <doc:list>
              <doc:item>
                <doc:term>mbr</doc:term>
                <doc:definition>
                  Only the flag <doc:tt>boot</doc:tt> is valid.
                </doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>gpt</doc:term>
                <doc:definition>
                  Only the flag <doc:tt>required</doc:tt> is valid.
                </doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>apm</doc:term>
                <doc:definition>
                  The flags
                  <doc:tt>allocated</doc:tt>,
                  <doc:tt>in_use</doc:tt>,
                  <doc:tt>boot</doc:tt>,
                  <doc:tt>allow_read</doc:tt>,
                  <doc:tt>allow_write</doc:tt>,
                  <doc:tt>boot_code_is_pic</doc:tt>
                  are valid.
                </doc:definition>
              </doc:item>
            </doc:list>
        </doc:summary></doc:doc>
      </arg>
      <arg name="options" direction="in" type="as">
        <doc:doc><doc:summary>Currently unused.</doc:summary></doc:doc>
      </arg>
      <arg name="fstype" direction="in" type="s">
        <doc:doc><doc:summary>
            The file system to create in new partition. Leave
            blank to skip creating a file system. See the
            <doc:ref type="method" to="Device.FilesystemCreate">FilesystemCreate()</doc:ref> method
            for details.
        </doc:summary></doc:doc>
      </arg>
      <arg name="fsoptions" direction="in" type="as">
        <doc:doc><doc:summary>
            Options to use for file system creation. See the
            <doc:ref type="method" to="Device.FilesystemCreate">FilesystemCreate()</doc:ref> method
            for details.
        </doc:summary></doc:doc>
      </arg>
      <arg name="created_device" direction="out" type="o">
        <doc:doc><doc:summary>The object path of the newly added partition.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Create a new partition and, optionally, create a file
            system on it. The partition won't necessarily be created
            at the exact location requested due to disk geometry
            constraints.
          </doc:para>
        </doc:description>
        <doc:permission>
          The caller will need one of the following PolicyKit authorizations:
          <doc:list>
            <doc:item>
              <doc:term>org.freedesktop.udisks.change</doc:term>
              <doc:definition>If the operation is on a
                <doc:ref type="property" to="Device:DeviceIsSystemInternal">non-system-internal</doc:ref>
                device</doc:definition>
            </doc:item>
            <doc:item>
              <doc:term>org.freedesktop.udisks.change-system-internal</doc:term>
              <doc:definition>If the operation is on a
                <doc:ref type="property" to="Device:DeviceIsSystemInternal">system-internal</doc:ref>
                device</doc:definition>
            </doc:item>
          </doc:list>
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.PolicyKit.Error.NotAuthorized">if the caller lacks the appropriate PolicyKit authorization</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Busy">if the device is busy</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Failed">if the operation failed</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Cancelled">if the job was cancelled</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <!-- ************************************************************ -->

    <method name="PartitionModify">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="type" direction="in" type="s">
        <doc:doc><doc:summary>
            The type of the partition to create. See the <doc:tt>type</doc:tt> parameter of the
            <doc:ref type="method" to="Device.PartitionCreate">PartitionCreate()</doc:ref> method
            for details on valid types.
        </doc:summary></doc:doc>
      </arg>
      <arg name="label" direction="in" type="s">
        <doc:doc><doc:summary>
            The label to use for the partition. See the <doc:tt>label</doc:tt> parameter of the
            <doc:ref type="method" to="Device.PartitionCreate">PartitionCreate()</doc:ref> method
            for details on valid labels.
        </doc:summary></doc:doc>
      </arg>
      <arg name="flags" direction="in" type="as">
        <doc:doc><doc:summary>
            Flags to use for the partition. See the <doc:tt>flags</doc:tt> parameter of the
            <doc:ref type="method" to="Device.PartitionCreate">PartitionCreate()</doc:ref> method
            for details on valid flags
        </doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Modifies meta data for a partition, such as type, label and flags.
            TODO: Consider allowing changing offset and
            size. Or maybe that should be a separate method.
          </doc:para>
        </doc:description>
        <doc:permission>
          The caller will need one of the following PolicyKit authorizations:
          <doc:list>
            <doc:item>
              <doc:term>org.freedesktop.udisks.change</doc:term>
              <doc:definition>If the operation is on a
                <doc:ref type="property" to="Device:DeviceIsSystemInternal">non-system-internal</doc:ref>
                device</doc:definition>
            </doc:item>
            <doc:item>
              <doc:term>org.freedesktop.udisks.change-system-internal</doc:term>
              <doc:definition>If the operation is on a
                <doc:ref type="property" to="Device:device-is-system-internal">system-internal</doc:ref>
                device</doc:definition>
            </doc:item>
          </doc:list>
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.PolicyKit.Error.NotAuthorized">if the caller lacks the appropriate PolicyKit authorization</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Busy">if the enclosing partition table device is busy</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Failed">if the operation failed</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Cancelled">if the job was cancelled</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <!-- ************************************************************ -->

    <method name="FilesystemCreate">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="fstype" direction="in" type="s">
        <doc:doc><doc:summary>
            The type of file system to
            create. Pass <doc:tt>empty</doc:tt> to not create a file
            system and just clear the areas of the device known to host
            file system signatures. Use @TODO@ to get a list of file systems that can
            be created.
        </doc:summary></doc:doc>
      </arg>
      <arg name="options" direction="in" type="as">
        <doc:doc><doc:summary>
            To set the label on the file system use
            the <doc:tt>label=NAME</doc:tt> option. Labels may not be
            supported for all file systems and the allowed length of a
            label may vary (see @TODO@).  To create the file system on
            an LUKS encrypted block device, pass
            the <doc:tt>luks_encrypt=</doc:tt> option with the value
            set to the passphrase to use. For file systems with the
            concept of owners (e.g.
            <doc:tt>ext3</doc:tt>), the options <doc:tt>take_ownership_uid=</doc:tt> and
            <doc:tt>take_ownership_gid=</doc:tt> are supported and can be used to set the
            initial owner of the created file system.
        </doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Create a file system on a device. If
            the <doc:tt>luks_encrypt=</doc:tt> option is passed then an
            LUKS encrypted block device will be created, then unlocked and
            the file system will be created on the corresponding
            cleartext device.
          </doc:para>
        </doc:description>
        <doc:permission>
          The caller will need one of the following PolicyKit authorizations:
          <doc:list>
            <doc:item>
              <doc:term>org.freedesktop.udisks.change</doc:term>
              <doc:definition>If the operation is on a
                <doc:ref type="property" to="Device:DeviceIsSystemInternal">non-system-internal</doc:ref>
                device</doc:definition>
            </doc:item>
            <doc:item>
              <doc:term>org.freedesktop.udisks.change-system-internal</doc:term>
              <doc:definition>If the operation is on a
                <doc:ref type="property" to="Device:device-is-system-internal">system-internal</doc:ref>
                device</doc:definition>
            </doc:item>
          </doc:list>
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.PolicyKit.Error.NotAuthorized">if the caller lacks the appropriate PolicyKit authorization</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Busy">if the device is busy</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Failed">if the operation failed</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Cancelled">if the job was cancelled</doc:error>
	  <doc:error name="org.freedesktop.PolicyKit.Error.FilesystemToolsMissing">if mkfs for this type is not available</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <!-- ************************************************************ -->

    <method name="FilesystemSetLabel">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="new_label" direction="in" type="s">
        <doc:doc><doc:summary>
            New label for file system.
        </doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Changes the file system label. See the <doc:tt>options</doc:tt> parameter of
            <doc:ref type="method"
            to="Device.FilesystemCreate">FilesystemCreate()</doc:ref>
            method for details of what valid labels are valid.
          </doc:para>
        </doc:description>
        <doc:permission>
          The caller will need one of the following PolicyKit authorizations:
          <doc:list>
            <doc:item>
              <doc:term>org.freedesktop.udisks.change</doc:term>
              <doc:definition>If the operation is on a
                <doc:ref type="property" to="Device:DeviceIsSystemInternal">non-system-internal</doc:ref>
                device</doc:definition>
            </doc:item>
            <doc:item>
              <doc:term>org.freedesktop.udisks.change-system-internal</doc:term>
              <doc:definition>If the operation is on a
                <doc:ref type="property" to="Device:DeviceIsSystemInternal">system-internal</doc:ref>
                device</doc:definition>
            </doc:item>
          </doc:list>
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.PolicyKit.Error.NotAuthorized">if the caller lacks the appropriate PolicyKit authorization</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Busy">if the device is busy and changing the label requires an unmounted file system</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Failed">if the operation failed</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Cancelled">if the job was cancelled</doc:error>
	  <doc:error name="org.freedesktop.PolicyKit.Error.FilesystemToolsMissing">if the label changing tool for this file system type is not available</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <!-- ************************************************************ -->

    <method name="FilesystemMount">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="filesystem_type" direction="in" type="s">
        <doc:doc><doc:summary>File system type to use.</doc:summary></doc:doc>
      </arg>
      <arg name="options" direction="in" type="as">
        <doc:doc><doc:summary>
            Mount Options. Valid mount options include mount options accepted by the native mount program.
            The option <quote>auth_no_user_interaction</quote> can be used to avoid user interaction (e.g. authentication dialogs) when checking whether the caller is authorized.</doc:summary></doc:doc>
      </arg>
      <arg name="mount_path" direction="out" type="s">
        <doc:doc><doc:summary>Where the device was mounted.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Mount the device. If the device is referenced in the
            system-wide <doc:tt>/etc/fstab</doc:tt> file, the given
            parameters are all ignored and the device will be
            attempted to be mounted as the calling user.
          </doc:para>
        </doc:description>
        <doc:permission>
          The caller will need one of the following PolicyKit authorizations:
          <doc:list>
            <doc:item>
              <doc:term>org.freedesktop.udisks.filesystem-mount</doc:term>
              <doc:definition>If the operation is on a
                <doc:ref type="property" to="Device:DeviceIsSystemInternal">non-system-internal</doc:ref>
                device</doc:definition>
            </doc:item>
            <doc:item>
              <doc:term>org.freedesktop.udisks.filesystem-mount-system-internal</doc:term>
              <doc:definition>If the operation is on a
                <doc:ref type="property" to="Device:DeviceIsSystemInternal">system-internal</doc:ref>
                device</doc:definition>
            </doc:item>
          </doc:list>
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.PolicyKit.Error.NotAuthorized">if the caller lacks the appropriate PolicyKit authorization</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Busy">if the device is busy</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Failed">if the operation failed</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Cancelled">if the job was cancelled</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.InvalidOption">if an invalid or malformed mount option was given</doc:error>
	  <doc:error name="org.freedesktop.PolicyKit.Error.FilesystemDriverMissing">if the kernel driver for this file system type is not available</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <!-- ************************************************************ -->

    <method name="FilesystemUnmount">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="options" direction="in" type="as">
        <doc:doc><doc:summary>Unmount options. Valid options currently include only 'force'.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Unmount the device. If the device is referenced in the
            system-wide <doc:tt>/etc/fstab</doc:tt> file (both at
            mount time and when this method is invoked), the device
            will be attempted to be unmounted as the calling user.
          </doc:para>
        </doc:description>
        <doc:permission>
          The caller will need one of the following PolicyKit authorizations:
          <doc:list>
            <doc:item>
              <doc:term>org.freedesktop.udisks.filesystem-unmount-others</doc:term>
              <doc:definition>To unmount a device mounted by another user</doc:definition>
            </doc:item>
          </doc:list>
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.PolicyKit.Error.NotAuthorized">if the caller lacks the appropriate PolicyKit authorization</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Busy">if the device is busy</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Failed">if the operation failed</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Cancelled">if the job was cancelled</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.InvalidOption">if an invalid or malformed unmount option was given</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <!-- ************************************************************ -->

    <method name="FilesystemCheck">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="options" direction="in" type="as">
        <doc:doc><doc:summary>Currently unused.</doc:summary></doc:doc>
      </arg>
      <arg name="is_clean" direction="out" type="b">
        <doc:doc><doc:summary>
            Returns TRUE if the file system is clean, FALSE if there are errors on the file system.
        </doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Perform a non-interactive file system check.
          </doc:para>
        </doc:description>
        <doc:permission>
          The caller will need one of the following PolicyKit authorizations:
          <doc:list>
            <doc:item>
              <doc:term>org.freedesktop.udisks.filesystem-check</doc:term>
              <doc:definition>To check a file system on a
                <doc:ref type="property" to="Device:DeviceIsSystemInternal">non-system-internal</doc:ref>
                device.</doc:definition>
            </doc:item>
            <doc:item>
              <doc:term>org.freedesktop.udisks.filesystem-check-system-internal</doc:term>
              <doc:definition>To check a file system on a
                <doc:ref type="property" to="Device:DeviceIsSystemInternal">system-internal</doc:ref>
                device.</doc:definition>
            </doc:item>
          </doc:list>
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.PolicyKit.Error.NotAuthorized">if the caller lacks the appropriate PolicyKit authorization</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Busy">if the device is mounted and the file system doesn't support online file system checking. See TODO for how to determine if a file system supports online fsck</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Failed">if the operation failed</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Cancelled">if the job was cancelled</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <!-- ************************************************************ -->

    <method name="FilesystemListOpenFiles">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="QVariantList" />
      <arg name="processes" direction="out" type="a(uus)">
        <doc:doc><doc:summary>
            An array of triples (<doc:tt>pid</doc:tt>, <doc:tt>uid</doc:tt>, command line for the process
            image) for processes currently having open files on the given mounted file system.
            Note that this operation is not run as a job.
        </doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            List open files on a mounted file system.
          </doc:para>
        </doc:description>
        <doc:permission>
          The caller will need one of the following PolicyKit authorizations:
          <doc:list>
            <doc:item>
              <doc:term>org.freedesktop.udisks.filesystem-lsof</doc:term>
              <doc:definition>To check a file system on a
                <doc:ref type="property" to="Device:DeviceIsSystemInternal">non-system-internal</doc:ref>
                device.</doc:definition>
            </doc:item>
            <doc:item>
              <doc:term>org.freedesktop.udisks.filesystem-lsof-system-internal</doc:term>
              <doc:definition>To check a file system on a
                <doc:ref type="property" to="Device:DeviceIsSystemInternal">system-internal</doc:ref>
                device.</doc:definition>
            </doc:item>
          </doc:list>
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.PolicyKit.Error.NotAuthorized">if the caller lacks the appropriate PolicyKit authorization</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Busy">if the device is mounted and the file system doesn't support online file system checking. See TODO for how to determine if a file system supports online fsck</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Failed">if the operation failed</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <!-- ************************************************************ -->

    <method name="LuksUnlock">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="passphrase" direction="in" type="s">
        <doc:doc><doc:summary>Passphrase for unlocking the cleartext data.</doc:summary></doc:doc>
      </arg>
      <arg name="options" direction="in" type="as">
        <doc:doc><doc:summary>Currently unused.</doc:summary></doc:doc>
      </arg>
      <arg name="cleartext_device" direction="out" type="o">
        <doc:doc><doc:summary>The cleartext device created.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Sets up a cleartext device using the given device as backing store.
          </doc:para>
        </doc:description>
        <doc:permission>
          The caller will need one of the following PolicyKit authorizations:
          <doc:list>
            <doc:item>
              <doc:term>org.freedesktop.udisks.luks-unlock</doc:term>
              <doc:definition>To unlock LUKS encrypted devices</doc:definition>
            </doc:item>
          </doc:list>
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.PolicyKit.Error.NotAuthorized">if the caller lacks the appropriate PolicyKit authorization</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Busy">if the device is busy</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Failed">if the operation failed</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Cancelled">if the job was cancelled</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <!-- ************************************************************ -->

    <method name="LuksLock">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="options" direction="in" type="as">
        <doc:doc><doc:summary>Currently unused.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Tears down the cleartext device set up using
            e.g. the <doc:ref type="method"
            to="Device.LuksUnlock">LuksUnlock()</doc:ref>
            method.
          </doc:para>
        </doc:description>
        <doc:permission>
          The caller will need one of the following PolicyKit authorizations:
          <doc:list>
            <doc:item>
              <doc:term>org.freedesktop.udisks.luks-lock-others</doc:term>
              <doc:definition>To lock an encrypted LUKS device unlocked by another user</doc:definition>
            </doc:item>
          </doc:list>
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.PolicyKit.Error.NotAuthorized">if the caller lacks the appropriate PolicyKit authorization</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Busy">if the device is busy</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Failed">if the operation failed</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Cancelled">if the job was cancelled</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <!-- ************************************************************ -->

    <method name="LuksChangePassphrase">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="current_passphrase" direction="in" type="s">
        <doc:doc><doc:summary>The current passphrase.</doc:summary></doc:doc>
      </arg>
      <arg name="new_passphrase" direction="in" type="s">
        <doc:doc><doc:summary>The new passphrase.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Change the passphrase used to unlock a LUKS encrypted device.
          </doc:para>
        </doc:description>
        <doc:permission>
          The caller will need one of the following PolicyKit authorizations:
          <doc:list>
            <doc:item>
              <doc:term>org.freedesktop.udisks.change</doc:term>
              <doc:definition>If the operation is on a
                <doc:ref type="property" to="Device:DeviceIsSystemInternal">non-system-internal</doc:ref>
                device</doc:definition>
            </doc:item>
            <doc:item>
              <doc:term>org.freedesktop.udisks.change-system-internal</doc:term>
              <doc:definition>If the operation is on a
                <doc:ref type="property" to="Device:DeviceIsSystemInternal">system-internal</doc:ref>
                device</doc:definition>
            </doc:item>
          </doc:list>
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.PolicyKit.Error.NotAuthorized">if the caller lacks the appropriate PolicyKit authorization</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Busy">if the device is busy</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Failed">if the operation failed</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Cancelled">if the job was cancelled</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <!-- ************************************************************ -->

    <method name="LinuxMdAddSpare">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="component" direction="in" type="o">
        <doc:doc><doc:summary>Object path of the component to add</doc:summary></doc:doc>
      </arg>
      <arg name="options" direction="in" type="as">
        <doc:doc><doc:summary>Currently unused.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Adds a component to a Linux md RAID array. Existing data
            on the given component will be erased.
          </doc:para>
        </doc:description>
        <doc:permission>
          The caller will need the following PolicyKit authorization:
          <doc:list>
            <doc:item>
              <doc:term>org.freedesktop.udisks.linux-md</doc:term>
              <doc:definition>
                Needed to configured Linux md Software RAID devices.
              </doc:definition>
            </doc:item>
          </doc:list>
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.PolicyKit.Error.NotAuthorized">if the caller lacks the appropriate PolicyKit authorization</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Busy">component to add is busy</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Failed">if the operation failed</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Cancelled">if the job was cancelled</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <!-- ************************************************************ -->

    <method name="LinuxMdExpand">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="components" direction="in" type="ao">
        <doc:doc><doc:summary>Object paths of the components to use for growing the array</doc:summary></doc:doc>
      </arg>
      <arg name="options" direction="in" type="as">
        <doc:doc><doc:summary>Currently unused.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Grows the Linux md RAID array with the given components.
          </doc:para>
        </doc:description>
        <doc:permission>
          The caller will need the following PolicyKit authorization:
          <doc:list>
            <doc:item>
              <doc:term>org.freedesktop.udisks.linux-md</doc:term>
              <doc:definition>
                Needed to configured Linux md Software RAID devices.
              </doc:definition>
            </doc:item>
          </doc:list>
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.PolicyKit.Error.NotAuthorized">if the caller lacks the appropriate PolicyKit authorization</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Busy">component to add is busy</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Failed">if the operation failed</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Cancelled">if the job was cancelled</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <!-- ************************************************************ -->

    <method name="LinuxMdRemoveComponent">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="component" direction="in" type="o">
        <doc:doc><doc:summary>The component to remove from the array.</doc:summary></doc:doc>
      </arg>
      <arg name="options" direction="in" type="as">
        <doc:doc><doc:summary>No options are currently supported.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Removes a component from a Linux md RAID array. The component
            will be removed and then the signatures on the component will be
            scrubbed.
          </doc:para>
        </doc:description>
        <doc:permission>
          The caller will need the following PolicyKit authorization:
          <doc:list>
            <doc:item>
              <doc:term>org.freedesktop.udisks.linux-md</doc:term>
              <doc:definition>
                Needed to configured Linux md Software RAID devices.
              </doc:definition>
            </doc:item>
          </doc:list>
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.PolicyKit.Error.NotAuthorized">if the caller lacks the appropriate PolicyKit authorization</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Busy">component to add is busy</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Failed">if the operation failed</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Cancelled">if the job was cancelled</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <!-- ************************************************************ -->

    <method name="LinuxMdStop">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="options" direction="in" type="as">
        <doc:doc><doc:summary>Currently unused.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Stops a Linux md RAID array.
          </doc:para>
        </doc:description>
        <doc:permission>
          The caller will need the following PolicyKit authorization:
          <doc:list>
            <doc:item>
              <doc:term>org.freedesktop.udisks.linux-md</doc:term>
              <doc:definition>
                Needed to configured Linux md Software RAID devices.
              </doc:definition>
            </doc:item>
          </doc:list>
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.PolicyKit.Error.NotAuthorized">if the caller lacks the appropriate PolicyKit authorization</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Failed">if the operation failed</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Cancelled">if the job was cancelled</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <!-- ************************************************************ -->

    <method name="LinuxLvm2LVStop">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="options" direction="in" type="as">
        <doc:doc><doc:summary>Currently unused.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Stops a Linux LVM2 Logical Volume.
          </doc:para>
        </doc:description>
        <doc:permission>
          The caller will need the following PolicyKit authorization:
          <doc:list>
            <doc:item>
              <doc:term>org.freedesktop.udisks.linux-lvm2</doc:term>
              <doc:definition>
                Needed to configured Linux LVM2.
              </doc:definition>
            </doc:item>
          </doc:list>
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.PolicyKit.Error.NotAuthorized">if the caller lacks the appropriate PolicyKit authorization</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Failed">if the operation failed</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Cancelled">if the job was cancelled</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <!-- ************************************************************ -->

    <method name="LinuxMdCheck">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="options" direction="in" type="as">
        <doc:doc><doc:summary>
            Use the <doc:tt>repair</doc:tt> option to fix any problems encountered.
        </doc:summary></doc:doc>
      </arg>
      <arg name="number_of_errors" direction="out" type="t">
        <doc:doc>
          <doc:summary>
            Number of mismatched sectors/pages found (or fixed if the <doc:tt>repair</doc:tt> option is used).
        </doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Checks a Linux md RAID array and returns the number of
            sectors/page with errors found/fixed. This can only be done if the
            property
            <doc:ref type="property" to="Device:LinuxMdSyncAction">LinuxMdSyncAction</doc:ref>
            is <quote>idle</quote>.
          </doc:para>
        </doc:description>
        <doc:permission>
          The caller will need the following PolicyKit authorization:
          <doc:list>
            <doc:item>
              <doc:term>org.freedesktop.udisks.linux-md</doc:term>
              <doc:definition>
                Needed to configured Linux md Software RAID devices.
              </doc:definition>
            </doc:item>
          </doc:list>
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.PolicyKit.Error.NotAuthorized">if the caller lacks the appropriate PolicyKit authorization</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Failed">if the operation failed</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Cancelled">if the job was cancelled</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <!-- ************************************************************ -->

    <method name="DriveInhibitPolling">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="options" direction="in" type="as">
        <doc:doc><doc:summary>Inhibit options. Currently no options are recognized.</doc:summary></doc:doc>
      </arg>

      <arg name="cookie" direction="out" type="s">
        <doc:doc><doc:summary>
            A cookie that can be used in the
            <doc:ref type="method" to="Device.DriveUninhibitPolling">DriveUninhibitPolling()</doc:ref> method
            to stop inhibiting polling of the device.
        </doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Inhibits the daemon from polling the device for media changes.
          </doc:para>
        </doc:description>
        <doc:permission>
          The caller will need one of the following PolicyKit authorizations:
          <doc:list>
            <doc:item>
              <doc:term>org.freedesktop.udisks.inhibit-polling</doc:term>
              <doc:definition>To inhibit polling</doc:definition>
            </doc:item>
          </doc:list>
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.PolicyKit.Error.NotAuthorized">if the caller lacks the appropriate PolicyKit authorization</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Failed">if the operation failed</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <!-- ************************************************************ -->

    <method name="DriveUninhibitPolling">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>

      <arg name="cookie" direction="in" type="s">
        <doc:doc><doc:summary>
            A cookie obtained from the
            <doc:ref type="method" to="Device.DriveInhibitPolling">DriveInhibitPolling()</doc:ref> method.
        </doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Uninhibits daemon from polling the device for media changes.
          </doc:para>
        </doc:description>
        <doc:errors>
          <doc:error name="org.freedesktop.PolicyKit.Error.Failed">if the given cookie is malformed</doc:error>
        </doc:errors>
      </doc:doc>
    </method>


    <!-- ************************************************************ -->

    <method name="DrivePollMedia">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>

      <doc:doc>
        <doc:description>
          <doc:para>
            Polls the drive for media. This is typically only useful when the
            <doc:ref type="property" to="Device:DeviceIsMediaChangeDetected">DeviceIsMediaChangeDetected</doc:ref> property
            is FALSE.
          </doc:para>
        </doc:description>
        <doc:permission>
          The caller will need one of the following PolicyKit authorizations:
          <doc:list>
            <doc:item>
              <doc:term>org.freedesktop.udisks.inhibit-polling</doc:term>
              <doc:definition>To inhibit polling</doc:definition>
            </doc:item>
          </doc:list>
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.PolicyKit.Error.Failed">if the operation failed</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <!-- ************************************************************ -->

    <method name="DriveEject">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="options" direction="in" type="as">
        <doc:doc><doc:summary>Eject options. Currently no options are recognized.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Ejects media from the device.
          </doc:para>
        </doc:description>
        <doc:permission>
          The caller will need one of the following PolicyKit authorizations:
          <doc:list>
            <doc:item>
              <doc:term>org.freedesktop.udisks.drive-eject</doc:term>
              <doc:definition>To eject media from a device</doc:definition>
            </doc:item>
          </doc:list>
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.PolicyKit.Error.NotAuthorized">if the caller lacks the appropriate PolicyKit authorization</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Busy">if the device or a dependent device (e.g. partition or cleartext luks device) is busy (e.g. mounted)</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Failed">if the operation failed</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Cancelled">if the job was cancelled</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.InvalidOption">if an invalid or malformed option was given</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <!-- ************************************************************ -->

    <method name="DriveDetach">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="options" direction="in" type="as">
        <doc:doc><doc:summary>Detach options. Currently no options are recognized.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Detachs the device by e.g. powering down the physical port
            it is connected to. Note that not all devices or ports are
            capable of this. Check the
            <doc:ref type="property" to="Device:DriveCanDetach">DriveCanDetach</doc:ref>
            property before attempting to invoke this method.
          </doc:para>
          <doc:para>
            Note that the physical port a drive belongs to may be
            located inside the physical casing - for example, some
            netbooks provide a SD card drive connect through USB. As
            such, users of this method should be careful – don't
            automatically invoke this method if the user presses
            e.g. an Eject button in the UI. Instead, provide e.g. a
            "Safely Remove Drive" option.
          </doc:para>
        </doc:description>
        <doc:permission>
          The caller will need one of the following PolicyKit authorizations:
          <doc:list>
            <doc:item>
              <doc:term>org.freedesktop.udisks.drive-detach</doc:term>
              <doc:definition>To detach a device</doc:definition>
            </doc:item>
          </doc:list>
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.PolicyKit.Error.NotAuthorized">if the caller lacks the appropriate PolicyKit authorization</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Busy">if the device or a dependent device (e.g. partition or cleartext luks device) is busy (e.g. mounted)</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Failed">if the operation failed</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Cancelled">if the job was cancelled</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.InvalidOption">if an invalid or malformed option was given</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <!-- ************************************************************ -->

    <method name="DriveSetSpindownTimeout">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="timeout_seconds" direction="in" type="i">
        <doc:doc><doc:summary>
            Number of seconds before the drive should be spun down.
        </doc:summary></doc:doc>
      </arg>

      <arg name="options" direction="in" type="as">
        <doc:doc><doc:summary>
            Options related to setting spindown timeout. Currently no options are recognized.
        </doc:summary></doc:doc>
      </arg>

      <arg name="cookie" direction="out" type="s">
        <doc:doc><doc:summary>
            A cookie that can be used in the
            <doc:ref type="method" to="Device.DriveUnsetSpindownTimeout">DriveUnsetSpindownTimeout()</doc:ref> method
            to unset the spindown timeout of the device.
        </doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Configures spindown timeout for the drive.
            Check the
            <doc:ref type="property" to="Device:DriveCanSpindown">DriveCanSpindown</doc:ref>
            property before attempting to invoke this method.
            Caution should be exercised when using this method, see
            the SPINNING DOWN DISKS section in the
            udisks<doc:tt>(1)</doc:tt> man page before using it.
          </doc:para>
        </doc:description>
        <doc:permission>
          The caller will need one of the following PolicyKit authorizations:
          <doc:list>
            <doc:item>
              <doc:term>org.freedesktop.udisks.drive-set-spindown</doc:term>
              <doc:definition>To set spindown timeouts</doc:definition>
            </doc:item>
          </doc:list>
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.PolicyKit.Error.NotAuthorized">if the caller lacks the appropriate PolicyKit authorization</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Failed">if the operation failed</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.InvalidOption">if an invalid or malformed option was given</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <!-- ************************************************************ -->

    <method name="DriveUnsetSpindownTimeout">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>

      <arg name="cookie" direction="in" type="s">
        <doc:doc><doc:summary>
            A cookie obtained from the
            <doc:ref type="method" to="Device.DriveSetSpindownTimeout">DriveSetSpindownTimeout()</doc:ref> method.
        </doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Unsets spindown timeout for the drive.
          </doc:para>
        </doc:description>
        <doc:permission>
          The caller will need one of the following PolicyKit authorizations:
          <doc:list>
            <doc:item>
              <doc:term>org.freedesktop.udisks.drive-set-spindown</doc:term>
              <doc:definition>To set spindown timeouts</doc:definition>
            </doc:item>
          </doc:list>
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.PolicyKit.Error.NotAuthorized">if the caller lacks the appropriate PolicyKit authorization</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Failed">if the operation failed</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <!-- ************************************************************ -->

    <method name="DriveAtaSmartRefreshData">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="options" direction="in" type="as">
        <doc:doc><doc:summary>
            The option <doc:tt>nowakeup</doc:tt> can be passed to
            avoid spinning up the disk if it's in a low-power mode.
            The option <doc:tt>simulate=</doc:tt> can be used to pass a path to
            a blob with libatasmart data to use instead of reading it from the disk.
            The <doc:tt>simulate=</doc:tt> option can only be used by the super user.
        </doc:summary></doc:doc>
      </arg>
      <doc:doc>
        <doc:description>
          <doc:para>
            Refreshes the
            <doc:ulink url="http://en.wikipedia.org/wiki/S.M.A.R.T">ATA SMART</doc:ulink>
            data for the given drive. Note that this operation is not run as a job.
          </doc:para>
        </doc:description>
        <doc:permission>
          The caller will need one of the following PolicyKit authorizations:
          <doc:list>
            <doc:item>
              <doc:term>org.freedesktop.udisks.drive-ata-smart-refresh</doc:term>
              <doc:definition>Needed to refresh ATA SMART data</doc:definition>
            </doc:item>
          </doc:list>
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.PolicyKit.Error.NotAuthorized">if the caller lacks the appropriate PolicyKit authorization</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.AtaSmartWouldWakeup">If the disk is sleeping and the <doc:tt>nowakeup</doc:tt> option was passed</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Failed">if the operation failed</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <!-- ************************************************************ -->

    <method name="DriveAtaSmartInitiateSelftest">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>

      <arg name="test" direction="in" type="s">
        <doc:doc><doc:summary>
            The name of the test to run; supported values are 'short'
            (usually less than ten minutes), 'extended' (usually tens
            of minutes) and 'conveyance' (usually a few minutes).
        </doc:summary></doc:doc>
      </arg>
      <arg name="options" direction="in" type="as">
        <doc:doc><doc:summary>Currently unused.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Runs a ATA SMART self test on the drive.
          </doc:para>
        </doc:description>
        <doc:permission>
          The caller will need one of the following PolicyKit authorizations:
          <doc:list>
            <doc:item>
              <doc:term>org.freedesktop.udisks.drive-ata-smart-selftest</doc:term>
              <doc:definition>Needed to run ATA SMART self tests</doc:definition>
            </doc:item>
          </doc:list>
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.PolicyKit.Error.NotAuthorized">if the caller lacks the appropriate PolicyKit authorization</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Failed">if the operation failed</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Cancelled">if the job was cancelled</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <!-- ************************************************************ -->

    <method name="DriveBenchmark">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="QVariantList" />
      <annotation name="com.trolltech.QtDBus.QtTypeName.Out1" value="QVariantList" />
      <annotation name="com.trolltech.QtDBus.QtTypeName.Out2" value="QVariantList" />

      <arg name="do_write_benchmark" direction="in" type="b">
        <doc:doc><doc:summary>
            If TRUE, write performance will be benchmarked in addition
            to read performance. Note that benchmarking write performance
            will scribble zeros in various parts of the drive and can
            only be used on a drive where the contents are completely
            unrecognized (e.g. no partition table and device). Use
            this option with caution.
        </doc:summary></doc:doc>
      </arg>
      <arg name="options" direction="in" type="as">
        <doc:doc><doc:summary>Currently unused.</doc:summary></doc:doc>
      </arg>

      <arg name="read_transfer_rate_results" direction="out" type="a(td)">
        <doc:doc><doc:summary>
            An array of pairs where the first element is the offset
            and the second element is the measured read transfer rate
            (in bytes/sec) at the given offset.
        </doc:summary></doc:doc>
      </arg>

      <arg name="write_transfer_rate_results" direction="out" type="a(td)">
        <doc:doc><doc:summary>
            An array of pairs where the first element is the offset
            and the second element is the measured read transfer rate
            (in bytes/sec) at the given offset.
            This is an empty array unless write benchmarking has been
            requested.
        </doc:summary></doc:doc>
      </arg>

      <arg name="access_time_results" direction="out" type="a(td)">
        <doc:doc><doc:summary>
            An array of pairs where the first element is the offset
            and the second element the amount of time (in seconds) it
            took to seek to the position.
        </doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Benchmarks the drive.
          </doc:para>
        </doc:description>
        <doc:permission>
          The caller will need one of the following PolicyKit authorizations:
          <doc:list>
            <doc:item>
              <doc:term>org.freedesktop.udisks.change</doc:term>
              <doc:definition>Needed to run benchmarks</doc:definition>
            </doc:item>
          </doc:list>
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.PolicyKit.Error.NotAuthorized">if the caller lacks the appropriate PolicyKit authorization</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Failed">if the operation failed</doc:error>
          <doc:error name="org.freedesktop.PolicyKit.Error.Cancelled">if the job was cancelled</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

    <!-- ************************************************************ -->

    <signal name="Changed">
      <doc:doc>
        <doc:description>
          <doc:para>
            Something on the device changed. Changes in job state wont
            trigger this signal; see the <doc:ref type="signal"
            to="Device::JobChanged">JobChanged()</doc:ref> signal.
          </doc:para>
        </doc:description>
      </doc:doc>
    </signal>

    <!-- ************************************************************ -->

    <signal name="JobChanged">
      <arg name="job_in_progress" type="b">
        <doc:doc><doc:summary>Whether a job is currently in progress.</doc:summary></doc:doc>
      </arg>
      <arg name="job_is_cancellable" type="b">
        <doc:doc><doc:summary>Whether the job is cancellable.</doc:summary></doc:doc>
      </arg>
      <arg name="job_id" type="s">
        <doc:doc><doc:summary>The identifier of the job.</doc:summary></doc:doc>
      </arg>
      <arg name="job_initiated_by_uid" type="u">
        <doc:doc><doc:summary>The UNIX user id of the user who initiated the job.</doc:summary></doc:doc>
      </arg>
      <arg name="job_percentage" type="d">
        <doc:doc><doc:summary>Percentage completed of the job (between 0 and 100, negative if unknown).</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Emitted when a job on a device changes. Clients should
            listen to this signal to avoid polling the daemon for job
            state.
          </doc:para>
        </doc:description>
      </doc:doc>
    </signal>

    <!-- ************************************************************ -->

    <property name="NativePath" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            OS specific native path of the device. On Linux this is the sysfs path, for example <doc:tt>/sys/devices/pci0000:00/0000:00:1f.2/host2/target2:0:1/2:0:1:0/block/sda</doc:tt>.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceDetectionTime" type="t" access="read">
      <doc:doc><doc:description><doc:para>
            The point in time (seconds since the Epoch Jan 1, 1970 0:00 UTC) when the device
            was detected by the daemon.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceMediaDetectionTime" type="t" access="read">
      <doc:doc><doc:description><doc:para>
            The point in time (seconds since the Epoch Jan 1, 1970 0:00 UTC) when the
            media currently in the device was detected by the daemon or 0 if the
            device has no media.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceMajor" type="x" access="read">
      <doc:doc><doc:description><doc:para>
            Major for the device or -1 if not set.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceMinor" type="x" access="read">
      <doc:doc><doc:description><doc:para>
            Major for the device or -1 if not set.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceFile" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            UNIX special device file for device. Example: <doc:tt>/dev/sda</doc:tt>.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceFilePresentation" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            Either the value of the
            <doc:ref type="property" to="Device:DeviceFile">DeviceFile</doc:ref>
            property, otherwise the preferred device file (typically a symlink to the value of the
            <doc:ref type="property" to="Device:DeviceFile">DeviceFile</doc:ref>
            property) to present in user interface.
            Example: <doc:tt>/dev/mapper/mpathb</doc:tt> or
            <doc:tt>/dev/vg_phobos/lv_root</doc:tt>.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceFileById" type="as" access="read">
      <doc:doc><doc:description><doc:para>
            Symlinks to UNIX special device file that are stable and uniquely identifies the device.
            Example: <doc:tt>/dev/disk/by-id/scsi-SATA_ST910021AS_3MH05AVA</doc:tt>,
            <doc:tt>/dev/disk/by-id/ata-ST910021AS_3MH05AVA</doc:tt>.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceFileByPath" type="as" access="read">
      <doc:doc><doc:description><doc:para>
            Symlinks to UNIX special device file that uniquely identifies the port/partition the device
            is plugged into. Example: <doc:tt>/dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:1:0</doc:tt>
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceIsSystemInternal" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            TRUE if the device is considered system internal. Typically, system internal devices
            include non-removable internal hard disks and other drives that are not easily added/removed
            by a local console user. The heuristic typically used is that only devices on removable media
            and devices connected via Firewire, USB, eSATA and SDIO are considered external.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceIsPartition" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            TRUE if the device is a partition. See the properties starting with partition- for details.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceIsPartitionTable" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            TRUE if the device contains a partition table. See partition- properties for details.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceIsRemovable" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            TRUE if the device contains removable media.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceIsMediaAvailable" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            TRUE if media is available in the device.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceIsMediaChangeDetected" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            TRUE if media changes are detected.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceIsMediaChangeDetectionPolling" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            TRUE if media changes are detected through the host
            polling the device, e.g. waking up every two seconds to
            revalidate the media. This typically keeps the device in a
            high power state and uses cycles on the CPU. As an
            example, SATA AN capable optical drives does not need
            polling.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceIsMediaChangeDetectionInhibitable" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            TRUE if it is possible to inhibit media detection on the device (to avoid keeping the device in a high power state and waking up the host).
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceIsMediaChangeDetectionInhibited" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            TRUE if media detection is inhibited (to avoid keeping the device in a high power state and waking up the host).
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceIsReadOnly" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            TRUE if the device read-only.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceIsDrive" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            TRUE if the device is a drive.
            See the drive- properties for details.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceIsOpticalDisc" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            TRUE if the device is an optical drive and an optical disc is inserted.
            See the optical-disc- properties for details.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceIsMounted" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            TRUE if the device is mounted.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceMountPaths" type="as" access="read">
      <doc:doc><doc:description><doc:para>
            A list of paths in the root namespace where the root of the device is mounted.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsMounted">DeviceIsMounted</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceMountedByUid" type="u" access="read">
      <doc:doc><doc:description><doc:para>
            The UNIX user id of the user who mounted the device. Set to 0 if
            not mounted by udisks.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsMounted">DeviceIsMounted</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceIsLuks" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            TRUE if device is an LUKS encrypted device. See Lucks properties for details.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceIsLuksCleartext" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            TRUE if device is a cleartext device backed by a LUKS encrypted device. See LucksCleartext properties for details.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceIsLinuxMdComponent" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            TRUE if the device is a Linux md RAID component. See LinuxMdComponent properties for details.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceIsLinuxMd" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            TRUE if the device is a Linux md RAID array. See LinuxMd properties for details.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceIsLinuxLvm2LV" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            TRUE if the device is a Linux LVM2 logical volume. See LinuxLvm2LV properties for details.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceIsLinuxLvm2PV" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            TRUE if the device is a Linux LVM2 physical. See LinuxLvm2PV properties for details.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceIsLinuxDmmpComponent" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            TRUE if the device is a component (e.g. active path) of a Linux dm-multipath device.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceIsLinuxDmmp" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            TRUE if the device is a Linux dm-multipath device.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceIsLinuxLoop" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            TRUE if the device is a Linux loop device.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceSize" type="t" access="read">
      <doc:doc><doc:description><doc:para>
            The size of the device in bytes.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DeviceBlockSize" type="t" access="read">
      <doc:doc><doc:description><doc:para>
            The block size of the device in bytes.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DevicePresentationHide" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            A hint if the device should be hidden from the user interface.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DevicePresentationNopolicy" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            A hint if the device (or e.g. the multi-disk device that the device is
            part of) shouldn't be automatically mounted / assembled.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DevicePresentationName" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The name to use when presenting the device to an end user.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DevicePresentationIconName" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The icon to use when presenting the device to an end user. If set, must be a name
            following the freedesktop.org icon theme specification.
      </doc:para></doc:description></doc:doc>
    </property>

    <property name="JobInProgress" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            The job properties specify if a job initiated via the
            udisks daemon is currently in progress.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="JobId" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            This property is used to identify the job and maps 1-1
            with the names of the method calls on this interface,
            e.g. 'FilesystemCreate' and so on.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="JobInitiatedByUid" type="u" access="read">
      <doc:doc><doc:description><doc:para>
            The UNIX user id of the user who initiated the job.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="JobIsCancellable" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            Whether the job can be cancelled
            using <doc:ref type="method"
            to="Device.JobCancel">JobCancel()</doc:ref> method.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="JobPercentage" type="d" access="read">
      <doc:doc><doc:description><doc:para>
            Percentage completed of the job (between 0 and 100, negative if unknown).
      </doc:para></doc:description></doc:doc>
    </property>

    <property name="IdUsage" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            A result of probing for signatures on the block device;
            known values are:
            <doc:list>
              <doc:item>
                <doc:term>filesystem</doc:term>
                <doc:definition>A mountable file system was detected</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>crypto</doc:term>
                <doc:definition>Encrypted data (e.g. LUKS) was detected</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>partitiontable</doc:term>
                <doc:definition>A partition table was detected</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>raid</doc:term>
                <doc:definition>Used for RAID and LVM components</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>other</doc:term>
                <doc:definition>A non-standard signature was detected</doc:definition>
              </doc:item>
            </doc:list>
            If blank, no known signature was detected. This doesn't
            necessarily mean the device contains no structured data;
            it only means that no signature known to the probing code
            was detected.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="IdType" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            This property contains more information about the result
            of probing the block device. It's value depends of the
            value the
            <doc:ref type="property" to="Device:IdUsage">IdUsage</doc:ref>
            property:
            <doc:list>
              <doc:item>
                <doc:term>filesystem</doc:term>
                <doc:definition>The mountable file system that was detected (e.g. <doc:tt>ext3</doc:tt>, <doc:tt>vfat</doc:tt>)</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>crypto</doc:term>
                <doc:definition>Known values include <doc:tt>crypto_LUKS</doc:tt></doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>partitiontable</doc:term>
                <doc:definition>
                  Known values include
                  <doc:tt>mbr</doc:tt> (for the
                  <doc:ulink url="http://en.wikipedia.org/wiki/Master_Boot_Record">Master Boot Record</doc:ulink>
                  scheme),
                  <doc:tt>gpt</doc:tt> (for the
                  <doc:ulink url="http://en.wikipedia.org/wiki/GUID_Partition_Table">GUID Partition Table</doc:ulink>
                  scheme),
                  <doc:tt>apm</doc:tt> (for the
                  <doc:ulink url="http://en.wikipedia.org/wiki/Apple_Partition_Map">Apple Partition Map</doc:ulink>
                  scheme).
                </doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>raid</doc:term>
                <doc:definition>
                  Known values include
                  <doc:tt>LVM1_member</doc:tt> (for Linux LVM1 components),
                  <doc:tt>LVM2_member</doc:tt> (for Linux LVM2 components),
                  <doc:tt>linux_raid_member</doc:tt> (for Linux md (Software RAID) components)
                </doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>other</doc:term>
                <doc:definition>
                  Known values include
                  <doc:tt>swap</doc:tt> (for swap space),
                  <doc:tt>suspend</doc:tt> (data used when resuming from STD)
                </doc:definition>
              </doc:item>
            </doc:list>
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="IdVersion" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The version of the
            detected file system (or other identified data structure) identified by the
            <doc:ref type="property" to="Device:IdUsage">IdUsage</doc:ref>
            and
            <doc:ref type="property" to="Device:IdType">IdType</doc:ref>
            properties.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="IdUuid" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The UUID (universally unique identifier) of the
            detected file system (or other identified data structure) identified by the
            <doc:ref type="property" to="Device:IdUsage">IdUsage</doc:ref>
            and
            <doc:ref type="property" to="Device:IdUsage">IdType</doc:ref>
            properties.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="IdLabel" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The user-visible label of the
            detected file system (or other identified data structure) identified by the
            <doc:ref type="property" to="Device:IdUsage">IdUsage</doc:ref>
            and
            <doc:ref type="property" to="Device:IdUsage">IdType</doc:ref>
            properties.
      </doc:para></doc:description></doc:doc>
    </property>

    <property name="LuksHolder" type="o" access="read">
      <doc:doc><doc:description><doc:para>
            The cleartext device that is using the LUKS device.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLuksCleartext">DeviceIsLuks</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>

    <property name="LuksCleartextSlave" type="o" access="read">
      <doc:doc><doc:description><doc:para>
            The encrypted LUKS device backing a crypto cleartext device.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLuksCleartext">DeviceIsLuksCleartext</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="LuksCleartextUnlockedByUid" type="u" access="read">
      <doc:doc><doc:description><doc:para>
            The UNIX user id of the user who unlocked the LUKS device. Set to 0 if
            not unlocked by udisks.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLuksCleartext">DeviceIsLuksCleartext</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>

    <property name="PartitionSlave" type="o" access="read">
      <doc:doc><doc:description><doc:para>
            The object path of the partition table the partition is part of.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsPartition">DeviceIsPartition</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="PartitionScheme" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The scheme of the partition table this partition is part of.
            See the <doc:tt>scheme</doc:tt> parameter of the
            <doc:ref type="method" to="Device.PartitionTableCreate">PartitionTableCreate()</doc:ref> method
            for details on known partitioning schemes.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsPartition">DeviceIsPartition</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="PartitionType" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The type of the partition.
            See the <doc:tt>type</doc:tt> parameter of the
            <doc:ref type="method" to="Device.PartitionCreate">PartitionCreate()</doc:ref> method
            for details on known partitioning types.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsPartition">DeviceIsPartition</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="PartitionLabel" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The label of the partition.
            See the <doc:tt>label</doc:tt> parameter of the
            <doc:ref type="method" to="Device.PartitionCreate">PartitionCreate()</doc:ref> method
            for details on partition labels.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsPartition">DeviceIsPartition</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="PartitionUuid" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The UUID of the partition.
            See the <doc:tt>uuid</doc:tt> parameter of the
            <doc:ref type="method" to="Device.PartitionCreate">PartitionCreate()</doc:ref> method
            for details on partition UUID's.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsPartition">DeviceIsPartition</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="PartitionFlags" type="as" access="read">
      <doc:doc><doc:description><doc:para>
            Partition flags.
            See the <doc:tt>flags</doc:tt> parameter of the
            <doc:ref type="method" to="Device.PartitionCreate">PartitionCreate()</doc:ref> method
            for details on partition flags.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsPartition">DeviceIsPartition</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="PartitionNumber" type="i" access="read">
      <doc:doc><doc:description><doc:para>
            Number of the partition. Typically partition numbers start at 1 and are identical
            to the numbers used by the kernel. Note that partitions may not be sequentially
            numbered.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsPartition">DeviceIsPartition</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="PartitionOffset" type="t" access="read">
      <doc:doc><doc:description><doc:para>
            Offset in bytes where the partition is located on the enclosing partition table device (see
            <doc:ref type="property" to="Device:DeviceIsPartition">PartitionSlave</doc:ref>).
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsPartition">DeviceIsPartition</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="PartitionSize" type="t" access="read">
      <doc:doc><doc:description><doc:para>
            Size of the partition in bytes.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsPartition">DeviceIsPartition</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="PartitionAlignmentOffset" type="t" access="read">
      <doc:doc><doc:description><doc:para>

            The amount of bytes the beginning of the partition is offset
            from the disk's natural alignment.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsPartition">DeviceIsPartition</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>

    <property name="PartitionTableScheme" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The scheme of the partition table.
            See the <doc:tt>scheme</doc:tt> parameter of the
            <doc:ref type="method" to="Device.PartitionTableCreate">PartitionTableCreate()</doc:ref> method
            for details on known partitioning schemes.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsPartitionTable">DeviceIsPartitionTable</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="PartitionTableCount" type="i" access="read">
      <doc:doc><doc:description><doc:para>
            Number of partitions in the partition table.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsPartitionTable">DeviceIsPartitionTable</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>

    <property name="DriveVendor" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            Name of the vendor of the drive, for example <doc:tt>MATSHITA</doc:tt> or <doc:tt>BELKIN</doc:tt>.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsDrive">DeviceIsDrive</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DriveModel" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            Name of the model of the drive, for example <doc:tt>ST910021AS</doc:tt> or <doc:tt>USB 2 HS-CF</doc:tt>.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsDrive">DeviceIsDrive</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DriveRevision" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            Revision of the drive, for example <doc:tt>3.07</doc:tt> or <doc:tt>1.95</doc:tt>.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsDrive">DeviceIsDrive</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DriveSerial" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The serial number of the drive or blank if unknown.
            Examples: <doc:tt>3MH05AVA</doc:tt>, <doc:tt>A0000001B900</doc:tt>.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsDrive">DeviceIsDrive</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DriveWwn" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The <doc:ulink url="http://en.wikipedia.org/wiki/World_Wide_Name">World Wide Name</doc:ulink>
            in hex (without a leading "0x") or blank if the drive has no WWN.
            Example: <doc:tt>50014ee0016eb572</doc:tt>.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsDrive">DeviceIsDrive</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DriveRotationRate" type="u" access="read">
      <doc:doc><doc:description><doc:para>
            The rotational rate of the disk (e.g. 4200, 5400, 5900, 7200, 10000, 15000) in rounds
            per minute or 0 if unknown.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsDrive">DeviceIsDrive</doc:ref>
            is TRUE and
            <doc:ref type="property" to="Device:DriveIsRotational">DriveIsRotational</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DriveWriteCache" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            Whether the write cache is enabled, known values include "enabled" and "disabled" and
            the blank string if unknown.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsDrive">DeviceIsDrive</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DriveConnectionInterface" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The interface through which the drive is connected. Known values include:

            <doc:list type="bullet">
              <doc:item>
                <doc:term>virtual</doc:term>
                <doc:definition>Device is a composite device e.g. Software RAID or similar</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>ata</doc:term>
                <doc:definition>Connected via ATA</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>ata_serial</doc:term>
                <doc:definition>Connected via Serial ATA</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>ata_serial_esata</doc:term>
                <doc:definition>Connected via eSATA</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>ata_parallel</doc:term>
                <doc:definition>Connected via Parallel ATA</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>scsi</doc:term>
                <doc:definition>Connected via SCSI</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>usb</doc:term>
                <doc:definition>Connected via the Universal Serial Bus</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>firewire</doc:term>
                <doc:definition>Connected via Firewire</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>sdio</doc:term>
                <doc:definition>Connected via SDIO</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>platform</doc:term>
                <doc:definition>Part of the platform, e.g. PC floppy drive</doc:definition>
              </doc:item>
            </doc:list>
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsDrive">DeviceIsDrive</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DriveConnectionSpeed" type="t" access="read">
      <doc:doc><doc:description><doc:para>
            The nominal speed of the connection interface in bits per
            second. If unknown this property is set to 0.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsDrive">DeviceIsDrive</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DriveMediaCompatibility" type="as" access="read">
      <doc:doc><doc:description><doc:para>
            An array of media types that can be used in the
            drive. This property is sometimes set using quirk files if
            the hardware isn't capable of precisely reporting it.
            Known values include:
            <doc:list>
              <doc:item>
                <doc:term>flash</doc:term>
                <doc:definition>Flash Card</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>flash_cf</doc:term>
                <doc:definition>CompactFlash</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>flash_ms</doc:term>
                <doc:definition>MemoryStick</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>flash_sm</doc:term>
                <doc:definition>SmartMedia</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>flash_sd</doc:term>
                <doc:definition>Secure Digital</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>flash_sdhc</doc:term>
                <doc:definition>Secure Digital High-Capacity</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>flash_mmc</doc:term>
                <doc:definition>MultiMediaCard</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>floppy</doc:term>
                <doc:definition>Floppy Disk</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>floppy_zip</doc:term>
                <doc:definition>Zip Disk</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>floppy_jaz</doc:term>
                <doc:definition>Jaz Disk</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>optical</doc:term>
                <doc:definition>Optical Disc</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>optical_cd</doc:term>
                <doc:definition>Compact Disc</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>optical_cd_r</doc:term>
                <doc:definition>Compact Disc Recordable</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>optical_cd_rw</doc:term>
                <doc:definition>Compact Disc Rewritable</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>optical_dvd</doc:term>
                <doc:definition>Digital Versatile Disc</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>optical_dvd_r</doc:term>
                <doc:definition>DVD-R</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>optical_dvd_rw</doc:term>
                <doc:definition>DVD-RW</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>optical_dvd_ram</doc:term>
                <doc:definition>DVD-RAM</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>optical_dvd_plus_r</doc:term>
                <doc:definition>DVD+R</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>optical_dvd_plus_rw</doc:term>
                <doc:definition>DVD+RW</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>optical_dvd_plus_r_dl</doc:term>
                <doc:definition>DVD+R Dual Layer</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>optical_dvd_plus_rw_dl</doc:term>
                <doc:definition>DVD+RW Dual Layer</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>optical_bd</doc:term>
                <doc:definition>Bluray Disc</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>optical_bd_r</doc:term>
                <doc:definition>BluRay Recordable</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>optical_bd_re</doc:term>
                <doc:definition>BluRay Rewritable</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>optical_hddvd</doc:term>
                <doc:definition>HD DVD</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>optical_hddvd_r</doc:term>
                <doc:definition>HD DVD Recordable</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>optical_hddvd_rw</doc:term>
                <doc:definition>HD DVD Rewritable</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>optical_mo</doc:term>
                <doc:definition>Magneto Optical</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>optical_mrw</doc:term>
                <doc:definition>Can read Mount Rainer media</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>optical_mrw_w</doc:term>
                <doc:definition>Can write Mount Rainer media</doc:definition>
              </doc:item>
            </doc:list>
          </doc:para><doc:para>
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsDrive">DeviceIsDrive</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DriveMedia" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The type of media currently in the drive (blank if no media is available). Known
            values include the ones listed for the
            <doc:ref type="property" to="Device:DriveMediaCompatibility">DriveMediaCompatibility</doc:ref>
            property.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsDrive">DeviceIsDrive</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DriveIsMediaEjectable" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            TRUE only if the media can be physically ejected by issuing a command
            from the host to the drive (e.g. optical and Zip drives).
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsDrive">DeviceIsDrive</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DriveCanDetach" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            TRUE only if the drive is capable of being detached by
            e.g. powering down the port it is connected to.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsDrive">DeviceIsDrive</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DriveCanSpindown" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            TRUE only if the drive is capable of being put into
            a standby mode (typically powering down the spindle motor).
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsDrive">DeviceIsDrive</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DriveIsRotational" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            TRUE if the disk uses rotational media, such as a hard disk.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsDrive">DeviceIsDrive</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DriveAdapter" type="o" access="read">
      <doc:doc><doc:description><doc:para>
            The object of the storage adapter for the drive or "/" if no adapter exists.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsDrive">DeviceIsDrive</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DrivePorts" type="ao" access="read">
      <doc:doc><doc:description><doc:para>
            The object paths of the ports for the drive or empty if no ports exist.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsDrive">DeviceIsDrive</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DriveSimilarDevices" type="ao" access="read">
      <doc:doc><doc:description><doc:para>
            An array of object paths for devices with similar serial number and/or WWN.
            Typically all drives with similar serial number and/or WWN
            are configured as a multipath device (for example via the
            Linux device-mapper target cf.
            <doc:ref type="property" to="Device:DeviceIsLinuxDmmp">DeviceIsLinuxDmmp</doc:ref> and
            <doc:ref type="property" to="Device:DeviceIsLinuxDmmpComponent">DeviceIsLinuxDmmpComponent</doc:ref>)
            but in some cases the OS needs manual configuration.
            Presentation-level software can (and should) display a
            warning when this property is non-empty and the device
            isn't a multipath component or multipath device e.g. when both
            <doc:ref type="property" to="Device:DeviceIsLinuxDmmpComponent">DeviceIsLinuxDmmpComponent</doc:ref>) and
            <doc:ref type="property" to="Device:DeviceIsLinuxDmmp">DeviceIsLinuxDmmp</doc:ref>)
            is FALSE.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsDrive">DeviceIsDrive</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>

    <!-- **************************************************************************************************** -->

    <property name="OpticalDiscIsBlank" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            TRUE only if the disc is appendable.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsOpticalDisc">DeviceIsOpticalDisc</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="OpticalDiscIsAppendable" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            TRUE only if the disc is appendable.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsOpticalDisc">DeviceIsOpticalDisc</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="OpticalDiscIsClosed" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            TRUE only if the disc is appendable.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsOpticalDisc">DeviceIsOpticalDisc</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="OpticalDiscNumTracks" type="u" access="read">
      <doc:doc><doc:description><doc:para>
            Number of tracks on the disc.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsOpticalDisc">DeviceIsOpticalDisc</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="OpticalDiscNumAudioTracks" type="u" access="read">
      <doc:doc><doc:description><doc:para>
            Number of audio tracks on the disc.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsOpticalDisc">DeviceIsOpticalDisc</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="OpticalDiscNumSessions" type="u" access="read">
      <doc:doc><doc:description><doc:para>
            Number of sessions on the disc.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsOpticalDisc">DeviceIsOpticalDisc</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>

    <!-- **************************************************************************************************** -->

    <property name="DriveAtaSmartIsAvailable" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            TRUE if the disk is capable of reporting SMART data, FALSE otherwise.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DriveAtaSmartTimeCollected" type="t" access="read">
      <doc:doc><doc:description><doc:para>
            The point in time (seconds since the Epoch Jan 1, 1970
            0:00 UTC) when ATA SMART data was collected.
            This property is only valid if
            <doc:ref type="property" to="Device:DriveAtaSmartTimeCollected">DriveAtaSmartTimeCollected</doc:ref>
            is greater than zero.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DriveAtaSmartStatus" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The overall assessment for the disk. Is one of the following strings
            <quote>GOOD</quote>,
            <quote>BAD_ATTRIBUTES_IN_THE_PAST</quote> (At least one pre-fail attribute is exceeded its threshold in the past),
            <quote>BAD_SECTOR</quote> (At least one bad sector),
            <quote>BAD_ATTRIBUTE_NOW</quote> (At least one pre-fail attribute is exceeding its threshold now),
            <quote>BAD_SECTOR_MANY</quote> (Many bad sectors)),
            <quote>BAD_STATUS</quote> (Smart Self Assessment negative)
            or empty if some error occured trying to determine the result.
            This property is only valid if
            <doc:ref type="property" to="Device:DriveAtaSmartTimeCollected">DriveAtaSmartTimeCollected</doc:ref>
            is greater than zero.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="DriveAtaSmartBlob" type="ay" access="read">
      <doc:doc><doc:description><doc:para>
            A blob containing the ATA SMART data. This blob can be used with libatasmart to get
            more information.
            This property is only valid if
            <doc:ref type="property" to="Device:DriveAtaSmartTimeCollected">DriveAtaSmartTimeCollected</doc:ref>
            is greater than zero.
      </doc:para></doc:description></doc:doc>
    </property>

    <!-- **************************************************************************************************** -->

    <property name="LinuxMdComponentLevel" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The RAID level of the array the component is part of. Known values include
            <doc:list>
              <doc:item>
                <doc:term>linear</doc:term>
                <doc:definition>The array is Just A Bunch of Disks</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>raid0</doc:term>
                <doc:definition>RAID-0</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>raid1</doc:term>
                <doc:definition>RAID-1</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>raid4</doc:term>
                <doc:definition>RAID-4</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>raid5</doc:term>
                <doc:definition>RAID-5</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>raid6</doc:term>
                <doc:definition>RAID-6</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>raid10</doc:term>
                <doc:definition>RAID-10</doc:definition>
              </doc:item>
            </doc:list>
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxMdComponent">DeviceIsLinuxMdComponent</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="LinuxMdComponentPosition" type="i" access="read">
      <doc:doc><doc:description><doc:para>
            The zero-based position of the component or -1 if not part of a running array.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxMdComponent">DeviceIsLinuxMdComponent</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="LinuxMdComponentNumRaidDevices" type="i" access="read">
      <doc:doc><doc:description><doc:para>
            The number of component devices in the array the component is part of.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxMdComponent">DeviceIsLinuxMdComponent</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="LinuxMdComponentUuid" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The UUID of the array the component is part of.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxMdComponent">DeviceIsLinuxMdComponent</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="LinuxMdComponentName" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The name of the array the component is part of. Blank if the array
            doesn't have a name (e.g. pre-1.0 meta data).
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxMdComponent">DeviceIsLinuxMdComponent</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="LinuxMdComponentHomeHost" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The home host of the array the component is part of, e.g. where it was created. Blank if the array
            has pre-1.0 meta data.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxMdComponent">DeviceIsLinuxMdComponent</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="LinuxMdComponentVersion" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The version of superblock of the component.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxMdComponent">DeviceIsLinuxMdComponent</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="LinuxMdComponentHolder" type="o" access="read">
      <doc:doc><doc:description><doc:para>
            The holder of the component or "/" if the component isn't claimed by any array.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxMdComponent">DeviceIsLinuxMdComponent</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="LinuxMdComponentState" type="as" access="read">
      <doc:doc><doc:description><doc:para>
            The state of the component (contents of <literal>md/dev-XXX/state</literal> file).
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxMdComponent">DeviceIsLinuxMdComponent</doc:ref>
            is TRUE and
            <doc:ref type="property" to="Device:DeviceIsLinuxMdComponentHolder">DeviceIsLinuxMdComponentHolder</doc:ref>
            is non-empty.
      </doc:para></doc:description></doc:doc>
    </property>

    <property name="LinuxMdState" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The state of the array (contents of the <literal>md/array_state</literal> file).
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxMd">DeviceIsLinuxMd</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="LinuxMdLevel" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The RAID level of the array. For known values see the
            <doc:ref type="property" to="Device:LinuxMdComponentLevel">LinuxMdComponentLevel</doc:ref>
            property.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxMd">DeviceIsLinuxMd</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="LinuxMdUuid" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The UUID of the array.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxMd">DeviceIsLinuxMd</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="LinuxMdHomeHost" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The home host of the array, e.g. where if was created. Blank if the array
            has pre-1.0 meta data.
            <doc:ref type="property" to="Device:DeviceIsLinuxMd">DeviceIsLinuxMd</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="LinuxMdName" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The name of the array. Blank if the array
            doesn't have a name (e.g. pre-1.0 meta data).
            <doc:ref type="property" to="Device:DeviceIsLinuxMd">DeviceIsLinuxMd</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="LinuxMdNumRaidDevices" type="i" access="read">
      <doc:doc><doc:description><doc:para>
            Number of component devices in the array.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxMd">DeviceIsLinuxMd</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="LinuxMdVersion" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            Metadata version used in the components.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxMd">DeviceIsLinuxMd</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="LinuxMdSlaves" type="ao" access="read">
      <doc:doc><doc:description><doc:para>
            An array of object paths for components currently part of the array.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxMd">DeviceIsLinuxMd</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="LinuxMdIsDegraded" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            TRUE only if the array is running in degraded mode.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxMd">DeviceIsLinuxMd</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="LinuxMdSyncAction" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The operation currently pending on the array. Known values
            include
            <doc:list>
              <doc:item>
                <doc:term>idle</doc:term>
                <doc:definition>No operation is pending</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>reshape</doc:term>
                <doc:definition>A reshape is in progress</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>resync</doc:term>
                <doc:definition>Redudancy is being calculated</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>repair</doc:term>
                <doc:definition>A repair operation is in progress</doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>recover</doc:term>
                <doc:definition>A hot spare is being built to replace a failed/missing device</doc:definition>
              </doc:item>
            </doc:list>
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxMd">DeviceIsLinuxMd</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="LinuxMdSyncPercentage" type="d" access="read">
      <doc:doc><doc:description><doc:para>
            The progress of the current sync operation.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxMd">DeviceIsLinuxMd</doc:ref>
            is TRUE and the value of the property
            <doc:ref type="property" to="Device:LinuxMdSyncAction">LinuxMdSyncAction</doc:ref>
            is not <doc:tt>idle</doc:tt>.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="LinuxMdSyncSpeed" type="t" access="read">
      <doc:doc><doc:description><doc:para>
            The speed of the sync operation in bytes per second.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxMd">DeviceIsLinuxMd</doc:ref>
            is TRUE and the value of the property
            <doc:ref type="property" to="Device:LinuxMdSyncAction">LinuxMdSyncAction</doc:ref>
            is not <doc:tt>idle</doc:tt>.
      </doc:para></doc:description></doc:doc>
    </property>

    <!-- ********************* -->
    <!-- LVM2 Physical Volumes -->
    <!-- ********************* -->

    <!-- Data about the Physical Volume itself  -->
    <property name="LinuxLvm2PVUuid" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The UUID of the PV.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxLvm2PV">DeviceIsLinuxLvm2PV</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="LinuxLvm2PVNumMetadataAreas" type="u" access="read">
      <doc:doc><doc:description><doc:para>
            The number of metadata areas on the PV.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxLvm2PV">DeviceIsLinuxLvm2PV</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>

    <!-- Data about the Volume Group that the Physical Volume is part of  -->
    <property name="LinuxLvm2PVGroupName" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The name of the volume group (that this physical volume belongs to).
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxLvm2PV">DeviceIsLinuxLvm2PV</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="LinuxLvm2PVGroupUuid" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The UUID of the volume group (that this physical volume belongs to).
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxLvm2PV">DeviceIsLinuxLvm2PV</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="LinuxLvm2PVGroupSize" type="t" access="read">
      <doc:doc><doc:description><doc:para>
            The size of the volume group (that this physical volume belongs to) in bytes.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxLvm2PV">DeviceIsLinuxLvm2PV</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="LinuxLvm2PVGroupUnallocatedSize" type="t" access="read">
      <doc:doc><doc:description><doc:para>
            The unallocated size of the volume group (that this physical volume belongs to) in bytes.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxLvm2PV">DeviceIsLinuxLvm2PV</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="LinuxLvm2PVGroupSequenceNumber" type="t" access="read">
      <doc:doc><doc:description><doc:para>
            The sequence number for the volume group (that this physical volume belongs to).
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxLvm2PV">DeviceIsLinuxLvm2PV</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="LinuxLvm2PVGroupExtentSize" type="t" access="read">
      <doc:doc><doc:description><doc:para>
            The extent size for the volume group (that this physical volume belongs to) in bytes.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxLvm2PV">DeviceIsLinuxLvm2PV</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="LinuxLvm2PVGroupPhysicalVolumes" type="as" access="read">
      <doc:doc><doc:description><doc:para>
            The physical volumes that belongs to the volume group (that this physical volume belongs to).
            Each element is a semicolon separated list of key/value pairs. The only known key/value
            type as this point is <literal>uuid</literal> for the UUID of the physical volume.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxLvm2PV">DeviceIsLinuxLvm2PV</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="LinuxLvm2PVGroupLogicalVolumes" type="as" access="read">
      <doc:doc><doc:description><doc:para>
            The logical volumes that belongs to the volume group (that this physical volume belongs to).
            Each element is a semicolon separated list of key/value pairs. The only known key/value
            types as this point are
            <literal>uuid</literal> (for the UUID of the logical volume),
            <literal>name</literal> (for the name of the logical volume),
            <literal>size</literal> (for the size of the logical volume) and
            <literal>active</literal> (whether the logical volume is active).
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxLvm2PV">DeviceIsLinuxLvm2PV</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>


    <!-- ******************** -->
    <!-- LVM2 Logical Volumes -->
    <!-- ******************** -->

    <!-- Data about the LV itself -->
    <property name="LinuxLvm2LVName" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The name of the logical volume.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxLvm2LV">DeviceIsLinuxLvm2LV</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="LinuxLvm2LVUuid" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The UUID of the logical volume.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxLvm2LV">DeviceIsLinuxLvm2LV</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="LinuxLvm2LVGroupName" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The name of volume group the logical volume belongs to.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxLvm2LV">DeviceIsLinuxLvm2LV</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="LinuxLvm2LVGroupUuid" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The UUID of the volume group the logical volume belongs to.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxLvm2LV">DeviceIsLinuxLvm2LV</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>

    <!-- ******************** -->
    <!-- Multipath Component -->
    <!-- ******************** -->

    <property name="LinuxDmmpComponentHolder" type="o" access="read">
      <doc:doc><doc:description><doc:para>
            The object path of the multi-path device the component is currently part of.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxDmmpComponent">DeviceIsLinuxDmmpComponent</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>

    <!-- ***************** -->
    <!-- Multipath Device -->
    <!-- ***************** -->

    <property name="LinuxDmmpName" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The symbolic name for the multipath device, e.g. <doc:tt>mpathb</doc:tt>.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxDmmp">DeviceIsLinuxDmmp</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="LinuxDmmpSlaves" type="ao" access="read">
      <doc:doc><doc:description><doc:para>
            The object paths of currently active component devices, e.g. paths.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxDmmp">DeviceIsLinuxDmmp</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>
    <property name="LinuxDmmpParameters" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The parameters/configuration for the multipath device.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxDmmp">DeviceIsLinuxDmmp</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>

    <property name="LinuxLoopFilename" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The file backing the loop device.
            This property is only valid if
            <doc:ref type="property" to="Device:DeviceIsLinuxLoop">DeviceIsLinuxLoop</doc:ref>
            is TRUE.
      </doc:para></doc:description></doc:doc>
    </property>

  </interface>

</node>
