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

<!--
 Copyright (C) 2014 Tomas Bzatek <tbzatek@redhat.com>
               2015 Gris Ge <fge@redhat.com>

 This library is free software; you can redistribute it and/or
 modify it under the terms of the GNU Lesser General Public
 License as published by the Free Software Foundation; either
 version 2 of the License, or (at your option) any later version.

 This library is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 Lesser General Public License for more details.

 You should have received a copy of the GNU Lesser General
 Public License along with this library; if not, write to the
 Free Software Foundation, Inc., 59 Temple Place, Suite 330,
 Boston, MA 02111-1307, USA.
-->

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

  <!--
    org.freedesktop.UDisks2.Drive.LSM:
    @short_description: LSM interface exported on disk objects
    @since: 2.3.0

    Objects implementing this interface also implement the
    #org.freedesktop.UDisks2.Drive interface.
  -->
  <interface name="org.freedesktop.UDisks2.Drive.LSM">
    <!-- IsOK:
        Whether this drive is read and writeable without any error or warnings.
        It's the single preliminary check on whether things go wrong.
        Noted: even from user's view, RAID degrade does not cause any
        error or warning at OS level, the 'isOK' property will still be set
        as 'FALSE' to suggest user to do more checking on what's going on.
    -->
    <property name="IsOK" type="b" access="read"/>

    <!-- IsRaidDegraded:
        Whether this drive is degraded RAID, for example, one disk failure
        in RAID 5 group is considered as degraded RAID.
    -->
    <property name="IsRaidDegraded" type="b" access="read"/>

    <!-- IsRaidError:
        Whether this drive is facing RAID error, for example, two disks
        failure in RAID 5 group at the same time is considered as RAID error,
        user will lose data access and facing write failure.
    -->
    <property name="IsRaidError" type="b" access="read"/>

    <!-- IsRaidVerifying:
        Whether the RAID group of current drive allocated from is
        verifying its data integrity by comparing mirror(RAID1) or verifying
        parity(RAID 5/6).
    -->
    <property name="IsRaidVerifying" type="b" access="read"/>

    <!-- IsRaidReconstructing:
        Whether the RAID group of current drive allocated from is
        reconstructing its data on newly joined disk or out-synced disk.
    -->
    <property name="IsRaidReconstructing" type="b" access="read"/>

    <!-- RaidType:
         A string of backend RAID type of this disk drive.
         Could be one of these values:
            JBOD, RAID 0, RAID 1, RAID 5, RAID 6, RAID 10, RAID 50, RAID 60
        There will be a space between RAID number and 'RAID' string.
        If unknown, leave it as empty.
    -->
    <property name="RaidType" type="s" access="read"/>

    <!-- StatusInfo:
         A message for administrator about RAID detail issue.
         Some examples:
            Disk enclosure 1 slot 9(serial: CVDA452606ME1207GN) is offline.
            Disk enclosure 1 slot 10 is predicted to be fail soon.
        Empty string if no issue or LibStorageMgmt failed to retrieve so.
    -->
    <property name="StatusInfo" type="s" access="read"/>


    <!-- MinIoSize:
        The minimum I/O size, device preferred I/O size for random I/O.
        Any I/O size not equal to a multiple of this value may get
        significant speed penalty. Normally it refers to strip size of
        each RAID disk(extent). If LibStorageMgmt failed to detect min_io_size,
        it will try these values in the sequence of:
            logical sector size -> physical sector size ->  0
    -->
    <property name="MinIoSize" type="u" access="read"/>

    <!-- OptIoSize:
        The optimal I/O size, device preferred I/O size for sequential
        I/O. Normally it refers to RAID group stripe size. If LibStorageMgmt
        failed to detect opt_io_size, it will be set to 0.
    -->
    <property name="OptIoSize" type="u" access="read"/>

    <!-- RaidDiskCount:
        The count of disk assebled the RAID group where this disk drive came
        from. This impact the performance of this disk drive.
        If LibStorageMgmt failed to detect RAID disk count, it will be set to
        0.
    -->
    <property name="RaidDiskCount" type="u" access="read"/>

  </interface>

  <!--
    org.freedesktop.UDisks2.Drive.LsmLocal:
    @short_description: Interface exported on disk drive objects for managing
                        local direct attached storage.
    @since: 2.6.3

    Objects implementing this interface also implement the
    #org.freedesktop.UDisks2.Drive interface.
    This interface will exist on all disk drive objects.
  -->
  <interface name="org.freedesktop.UDisks2.Drive.LsmLocal">
    <!--
        TurnIdentLEDOn:
        @since: 2.6.3
        @options: Options (currently unused except for <link linkend="udisks-std-options">standard options</link>).

        Turn on the identification LED of disk.
        This method only works on SCSI enclosure disks yet.
        Error 'org.freedesktop.UDisks2.Error.NotSupported' will be raised
        if not supported.
    -->
    <method name="TurnIdentLEDOn">
        <arg name="options" direction="in" type="a{sv}"/>
    </method>

    <!--
        TurnIdentLEDOff:
        @since: 2.6.3
        @options: Options (currently unused except for <link linkend="udisks-std-options">standard options</link>).

        Turn off the identification LED of disk.
        This method only works on SCSI enclosure disks yet.
        Error 'org.freedesktop.UDisks2.Error.NotSupported' will be raised
        if not supported.
    -->
    <method name="TurnIdentLEDOff">
        <arg name="options" direction="in" type="a{sv}"/>
    </method>

    <!--
        TurnFaultLEDOn:
        @since: 2.6.3
        @options: Options (currently unused except for <link linkend="udisks-std-options">standard options</link>).

        Turn on the fault LED of disk.
        This method only works on SCSI enclosure disks yet.
        Error 'org.freedesktop.UDisks2.Error.NotSupported' will be raised
        if not supported.
    -->
    <method name="TurnFaultLEDOn">
        <arg name="options" direction="in" type="a{sv}"/>
    </method>

    <!--
        TurnFaultLEDOff:
        @since: 2.6.3
        @options: Options (currently unused except for <link linkend="udisks-std-options">standard options</link>).

        Turn off the fault LED of disk.
        This method only works on SCSI enclosure disks yet.
        Error 'org.freedesktop.UDisks2.Error.NotSupported' will be raised
        if not supported.
    -->
    <method name="TurnFaultLEDOff">
        <arg name="options" direction="in" type="a{sv}"/>
    </method>
  </interface>
</node>
