<!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">

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

    <method name="EnumerateAdapters">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="devices" direction="out" type="ao">
        <doc:doc><doc:summary>An array of object paths for storage adapters.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Enumerate all storage adapters on the system.
          </doc:para>
        </doc:description>
      </doc:doc>
    </method>

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

    <method name="EnumerateExpanders">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="devices" direction="out" type="ao">
        <doc:doc><doc:summary>An array of object paths for storage expanders.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Enumerate all storage expanders on the system.
          </doc:para>
        </doc:description>
      </doc:doc>
    </method>

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

    <method name="EnumeratePorts">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="devices" direction="out" type="ao">
        <doc:doc><doc:summary>An array of object paths for ports.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Enumerate all storage ports on the system.
          </doc:para>
        </doc:description>
      </doc:doc>
    </method>

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

    <method name="EnumerateDevices">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="devices" direction="out" type="ao">
        <doc:doc><doc:summary>An array of object paths for devices.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Enumerate all disk devices on the system.
          </doc:para>
        </doc:description>
      </doc:doc>
    </method>

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

    <method name="EnumerateDeviceFiles">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="device_files" direction="out" type="as">
        <doc:doc><doc:summary>An array device file names.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Enumerate all device files (including symlinks) for disk devices on the system.
          </doc:para>
        </doc:description>
      </doc:doc>
    </method>

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

    <method name="FindDeviceByDeviceFile">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="device_file" direction="in" type="s">
        <doc:doc><doc:summary>UNIX special device file</doc:summary></doc:doc>
      </arg>
      <arg name="device" direction="out" type="o">
        <doc:doc><doc:summary>Object path of device</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Finds a device by device path.
          </doc:para>
        </doc:description>
      </doc:doc>
    </method>

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

    <method name="FindDeviceByMajorMinor">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="device_major" direction="in" type="x">
        <doc:doc><doc:summary>Device major</doc:summary></doc:doc>
      </arg>
      <arg name="device_minor" direction="in" type="x">
        <doc:doc><doc:summary>Device minor</doc:summary></doc:doc>
      </arg>
      <arg name="device" direction="out" type="o">
        <doc:doc><doc:summary>Object path of device</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Finds a device by major:minor.
          </doc:para>
        </doc:description>
      </doc:doc>
    </method>

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

    <method name="DriveInhibitAllPolling">
      <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="Disks.DriveUninhibitAllPolling">DriveUninhibitAllPolling()</doc:ref> method
            to stop inhibiting polling of all devices.
        </doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Inhibits the daemon from polling devices 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="DriveUninhibitAllPolling">
      <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="Disks.DriveInhibitAllPolling">DriveInhibitAllPolling()</doc:ref> method.
        </doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Uninhibits daemon from polling devices 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="DriveSetAllSpindownTimeouts">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="timeout_seconds" direction="in" type="i">
        <doc:doc><doc:summary>
            Number of seconds before drives 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 timeouts. 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="Drive.DriveUnsetAllSpindownTimeouts">DriveUnsetAllSpindownTimeouts()</doc:ref> method
            to unset the spindown timeout for drives.
        </doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Configures spindown timeout for all drives capable of being spun down.
            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="DriveUnsetAllSpindownTimeouts">
      <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="LinuxLvm2VGStart">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="uuid" direction="in" type="s">
        <doc:doc><doc:summary>The UUID of the volume group to start.</doc:summary></doc:doc>
      </arg>
      <arg name="options" direction="in" type="as">
        <doc:doc><doc:summary>Options for starting the VG. Currently no options are supported.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Starts all logical volumes in Linux LVM2 Volume Group.
          </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 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 one of the given components 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="LinuxLvm2VGStop">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="uuid" direction="in" type="s">
        <doc:doc><doc:summary>The UUID of the volume group to stop.</doc:summary></doc:doc>
      </arg>
      <arg name="options" direction="in" type="as">
        <doc:doc><doc:summary>Options for stopping the VG. Currently no options are supported.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Stops all logical volumes in Linux LVM2 Volume Group.
          </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 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 one of the given components 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="LinuxLvm2VGSetName">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="uuid" direction="in" type="s">
        <doc:doc><doc:summary>The UUID of the volume group to set the name for.</doc:summary></doc:doc>
      </arg>
      <arg name="name" direction="in" type="s">
        <doc:doc><doc:summary>The new name for the volume group.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Sets the name for a volume group.
          </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 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 one of the given components 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="LinuxLvm2VGAddPV">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="uuid" direction="in" type="s">
        <doc:doc><doc:summary>The UUID of the volume group to add a physical volume to.</doc:summary></doc:doc>
      </arg>
      <arg name="physical_volume" direction="in" type="o">
        <doc:doc><doc:summary>The objcet path of the device to use as a physical volume.</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 Physical volume to a Linux LVM2 Volume Group. Existing data
            on the given device to use for a physical volume 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-lvm2</doc:term>
              <doc:definition>
                Needed to configured Linux LVM2 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 one of the given components 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="LinuxLvm2VGRemovePV">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="vg_uuid" direction="in" type="s">
        <doc:doc><doc:summary>The UUID of the volume group to remove the physical volume from.</doc:summary></doc:doc>
      </arg>
      <arg name="pv_uuid" direction="in" type="s">
        <doc:doc><doc:summary>The UUID of the physical volume to remove from the VG.</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>
            Removes a Physical volume from a Linux LVM2 Volume Group.
          </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 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 one of the given components 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="LinuxLvm2LVSetName">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="group_uuid" direction="in" type="s">
        <doc:doc><doc:summary>The UUID of the volume group for the logical volume.</doc:summary></doc:doc>
      </arg>
      <arg name="uuid" direction="in" type="s">
        <doc:doc><doc:summary>The UUID of the logical volume to set the name for.</doc:summary></doc:doc>
      </arg>
      <arg name="name" direction="in" type="s">
        <doc:doc><doc:summary>The new name for the logical volume.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Sets the name for a 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 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 one of the given components 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="LinuxLvm2LVStart">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="group_uuid" direction="in" type="s">
        <doc:doc><doc:summary>The UUID of the volume group of the logical volume to start belongs to.</doc:summary></doc:doc>
      </arg>
      <arg name="uuid" direction="in" type="s">
        <doc:doc><doc:summary>The UUID of the logical volume to start.</doc:summary></doc:doc>
      </arg>
      <arg name="options" direction="in" type="as">
        <doc:doc><doc:summary>Options for starting the logical volume. Currently no options are supported.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Starts a 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 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 one of the given components 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="LinuxLvm2LVRemove">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="group_uuid" direction="in" type="s">
        <doc:doc><doc:summary>The UUID of the volume group of the logical volume to start belongs to.</doc:summary></doc:doc>
      </arg>
      <arg name="uuid" direction="in" type="s">
        <doc:doc><doc:summary>The UUID of the logical volume to remove.</doc:summary></doc:doc>
      </arg>
      <arg name="options" direction="in" type="as">
        <doc:doc><doc:summary>Options used for the removal of the logical volume. Currently no options are supported.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Removes a 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 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 one of the given components 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="LinuxLvm2LVCreate">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="group_uuid" direction="in" type="s">
        <doc:doc><doc:summary>The UUID of the volume group to create a logical volume in.</doc:summary></doc:doc>
      </arg>
      <arg name="name" direction="in" type="s">
        <doc:doc><doc:summary>The name for the logical volume.</doc:summary></doc:doc>
      </arg>
      <arg name="size" direction="in" type="t">
        <doc:doc><doc:summary>The size of the logical volume, in bytes.</doc:summary></doc:doc>
      </arg>
      <arg name="num_stripes" direction="in" type="u">
        <doc:doc><doc:summary>Number of stripes to use.</doc:summary></doc:doc>
      </arg>
      <arg name="stripe_size" direction="in" type="t">
        <doc:doc><doc:summary>The stripe size to use or 0 if @num_stripes is 0. This must be a power of two.</doc:summary></doc:doc>
      </arg>
      <arg name="num_mirrors" direction="in" type="u">
        <doc:doc><doc:summary>Number of mirrors to use.</doc:summary></doc:doc>
      </arg>
      <arg name="options" direction="in" type="as">
        <doc:doc><doc:summary>Options used when creating the logical volume. Currently no options are supported.</doc:summary></doc:doc>
      </arg>
      <arg name="fstype" direction="in" type="s">
        <doc:doc><doc:summary>
            The file system to create in new logical filesystem. Leave
            blank to skip creating a file system. See the
            <doc:ref type="method" to="Device.FilesystemCreate">Device.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">Device.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 logical volume.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Creates a new 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 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 one of the given components 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="LinuxMdStart">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="components" direction="in" type="ao">
        <doc:doc><doc:summary>The object paths of the components of the array to start.</doc:summary></doc:doc>
      </arg>
      <arg name="options" direction="in" type="as">
        <doc:doc><doc:summary>Options for starting the array. Currently no options are supported.</doc:summary></doc:doc>
      </arg>

      <arg name="device" direction="out" type="o">
        <doc:doc><doc:summary>The object path of the assembled array device.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Starts an Linux md RAID array. The array will be assembled
            and started in degraded mode if an insufficient number of
            components are given.
          </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">if one of the given components 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="LinuxMdCreate">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="components" direction="in" type="ao">
        <doc:doc><doc:summary>The object paths of the components to use for the array.</doc:summary></doc:doc>
      </arg>
      <arg name="level" direction="in" type="s">
        <doc:doc><doc:summary>RAID level.</doc:summary></doc:doc>
      </arg>
      <arg name="stripe_size" direction="in" type="t">
        <doc:doc><doc:summary>Stripe Size in bytes, or 0 to use the default stripe size.</doc:summary></doc:doc>
      </arg>
      <arg name="name" direction="in" type="s">
        <doc:doc><doc:summary>Name of the array.</doc:summary></doc:doc>
      </arg>
      <arg name="options" direction="in" type="as">
        <doc:doc><doc:summary>Options for creating the array. Currently no options are supported.</doc:summary></doc:doc>
      </arg>

      <arg name="device" direction="out" type="o">
        <doc:doc><doc:summary>The object path of the created array device.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Creates a Linux md RAID array. The array will be created and
            assembled.
          </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">if one of the given components 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="Inhibit">
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <arg name="cookie" direction="out" type="s">
        <doc:doc><doc:summary>
            A cookie that can be used in the
            <doc:ref type="method" to="Disks.Uninhibit">Uninhibit()</doc:ref> method.
            to stop inhibiting the daemon.
        </doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Inhibits clients from invoking methods on the daemon
            of the daemon that require authorization (all methods
            will return the <doc:tt>org.freedesktop.PolicyKit.Error.Inhibited</doc:tt> error)
            if the caller is not the super user.
            This is typically used by OS installers and other
            programs that expects full control of the system, specifically
            to avoid automounting devices.
          </doc:para>
        </doc:description>
        <doc:permission>
          Only the super user can invoke this method.
        </doc:permission>
        <doc:errors>
          <doc:error name="org.freedesktop.PolicyKit.Error.NotAuthorized">if the caller is not the super user</doc:error>
        </doc:errors>
      </doc:doc>
    </method>

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

    <method name="Uninhibit">
      <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="Disks.Inhibit">Inhibit()</doc:ref> method.
        </doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Uninhibits other clients from using the daemon.
          </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>


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

    <signal name="DeviceAdded">
      <arg name="device" type="o">
        <doc:doc><doc:summary>Object path of device that was added.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Emitted when a device is added.
          </doc:para>
        </doc:description>
      </doc:doc>
    </signal>

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

    <signal name="DeviceRemoved">
      <arg name="device" type="o">
        <doc:doc><doc:summary>Object path of device that was removed.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Emitted when a device is removed.
          </doc:para>
        </doc:description>
      </doc:doc>
    </signal>

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

    <signal name="DeviceChanged">
      <arg name="device" type="o">
        <doc:doc><doc:summary>Object path of device that was changed.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Emitted when a device changed.
          </doc:para>
        </doc:description>
      </doc:doc>
    </signal>

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

    <signal name="DeviceJobChanged">
      <arg name="device" type="o">
        <doc:doc><doc:summary>The object path of the device.</doc:summary></doc:doc>
      </arg>
      <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_num_tasks" type="i">
        <doc:doc><doc:summary>Number of tasks in the job.</doc:summary></doc:doc>
      </arg>
      <arg name="job_cur_task" type="i">
        <doc:doc><doc:summary>Current task number (zero-based offset).</doc:summary></doc:doc>
      </arg>
      <arg name="job_cur_task_id" type="s">
        <doc:doc><doc:summary>Task identifier for current task.</doc:summary></doc:doc>
      </arg>
      <arg name="job_cur_task_percentage" type="d">
        <doc:doc><doc:summary>Percentage completed of current task (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.
          </doc:para>
        </doc:description>
      </doc:doc>
    </signal>

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

    <signal name="AdapterAdded">
      <arg name="adapter" type="o">
        <doc:doc><doc:summary>Object path of adapter that was added.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Emitted when an adapter is added.
          </doc:para>
        </doc:description>
      </doc:doc>
    </signal>
    <signal name="AdapterRemoved">
      <arg name="adapter" type="o">
        <doc:doc><doc:summary>Object path of adapter that was removed.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Emitted when an adapter is removed.
          </doc:para>
        </doc:description>
      </doc:doc>
    </signal>
    <signal name="AdapterChanged">
      <arg name="adapter" type="o">
        <doc:doc><doc:summary>Object path of adapter that was changed.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Emitted when an adapter changed.
          </doc:para>
        </doc:description>
      </doc:doc>
    </signal>

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

    <signal name="ExpanderAdded">
      <arg name="expander" type="o">
        <doc:doc><doc:summary>Object path of expander that was added.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Emitted when an expander is added.
          </doc:para>
        </doc:description>
      </doc:doc>
    </signal>
    <signal name="ExpanderRemoved">
      <arg name="expander" type="o">
        <doc:doc><doc:summary>Object path of expander that was removed.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Emitted when an expander is removed.
          </doc:para>
        </doc:description>
      </doc:doc>
    </signal>
    <signal name="ExpanderChanged">
      <arg name="expander" type="o">
        <doc:doc><doc:summary>Object path of expander that was changed.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Emitted when an expander changed.
          </doc:para>
        </doc:description>
      </doc:doc>
    </signal>

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

    <signal name="PortAdded">
      <arg name="port" type="o">
        <doc:doc><doc:summary>Object path of port that was added.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Emitted when a port is added.
          </doc:para>
        </doc:description>
      </doc:doc>
    </signal>
    <signal name="PortRemoved">
      <arg name="port" type="o">
        <doc:doc><doc:summary>Object path of port that was removed.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Emitted when a port is removed.
          </doc:para>
        </doc:description>
      </doc:doc>
    </signal>
    <signal name="PortChanged">
      <arg name="port" type="o">
        <doc:doc><doc:summary>Object path of port that was changed.</doc:summary></doc:doc>
      </arg>

      <doc:doc>
        <doc:description>
          <doc:para>
            Emitted when a port changed.
          </doc:para>
        </doc:description>
      </doc:doc>
    </signal>

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

    <property name="DaemonVersion" type="s" access="read">
      <doc:doc><doc:description><doc:para>
            The version of the running daemon.
      </doc:para></doc:description></doc:doc>
    </property>

    <property name="DaemonIsInhibited" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            TRUE only if the daemon is inhibited.
      </doc:para></doc:description></doc:doc>
    </property>

    <property name="SupportsLuksDevices" type="b" access="read">
      <doc:doc><doc:description><doc:para>
            TRUE only if the daemon can create encrypted LUKS block devices, see the
            <doc:ref type="method" to="Device.LuksLock">LuksUnlock()</doc:ref> and
            <doc:ref type="method" to="Device.LuksLock">LuksLock()</doc:ref>
            methods for details.
      </doc:para></doc:description></doc:doc>
    </property>


    <!-- TODO: maybe this should return a dictionary so we can grow it in the future? -->
    <property name="KnownFilesystems" type="a(ssbbbubbbbbbbb)" access="read">
      <annotation name="com.trolltech.QtDBus.QtTypeName" value="QVariantList">
      <doc:doc><doc:description><doc:para>
            An array of file systems known to the daemon and what features are supported.
            Each element in the array contains the following members:
            <doc:list>
              <doc:item>
                <doc:term>id</doc:term>
                <doc:definition>
                  The name / identifier of the file system (such as <doc:tt>ext3</doc:tt> or <doc:tt>vfat</doc:tt>),
                  similar to the contents of the
                  <doc:ref type="property" to="Device:IdType">Device:IdType</doc:ref>
                  property.
                </doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>name</doc:term>
                <doc:definition>
                  A human readable name for the file system such as "Linux Ext3".
                </doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>supports_unix_owners</doc:term>
                <doc:definition>
                  Whether the file system supports the UNIX owners model (e.g. ext3 does, but vfat doesn't).
                </doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>can_mount</doc:term>
                <doc:definition>
                  Whether the file system can be mounted.
                </doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>can_create</doc:term>
                <doc:definition>
                  Whether the file system can be created on a device.
                </doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>max_label_len</doc:term>
                <doc:definition>
                  The maximum amount of bytes that the file system label can hold. Set to zero if the file
                  system doesn't support labels.
                </doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>supports_label_rename</doc:term>
                <doc:definition>
                  Whether the label of the file system can be changed.
                </doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>supports_online_label_rename</doc:term>
                <doc:definition>
                  Whether the label can be changed while the file system is mounted.
                </doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>supports_fsck</doc:term>
                <doc:definition>
                  Whether the file system can be checked.
                </doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>supports_online_fsck</doc:term>
                <doc:definition>
                  Whether the file system can be checked while mounted.
                </doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>supports_resize_enlarge</doc:term>
                <doc:definition>
                  Whether the file system can be enlarged.
                </doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>supports_online_resize_enlarge</doc:term>
                <doc:definition>
                  Whether the file system can be enlarged while mounted.
                </doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>supports_resize_shrink</doc:term>
                <doc:definition>
                  Whether the file system can be shrunk.
                </doc:definition>
              </doc:item>
              <doc:item>
                <doc:term>supports_online_resize_shrink</doc:term>
                <doc:definition>
                  Whether the file system can be shrunk while mounted.
                </doc:definition>
              </doc:item>
            </doc:list>

      </doc:para></doc:description></doc:doc>
    </property>

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

  </interface>

</node>
