<?xml version="1.0"?>
<!-- This file was automatically generated from C sources - DO NOT EDIT!
To affect the contents of this file, edit the original C definitions,
and/or use gtk-doc annotations.  -->
<repository version="1.2"
            xmlns="http://www.gtk.org/introspection/core/1.0"
            xmlns:c="http://www.gtk.org/introspection/c/1.0"
            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
  <include name="GObject" version="2.0"/>
  <include name="Gio" version="2.0"/>
  <package name="blockdev"/>
  <namespace name="BlockDev"
             version="3.0"
             shared-library="libblockdev.so.3,libbd_utils.so.3"
             c:identifier-prefixes="BD"
             c:symbol-prefixes="bd">
    <constant name="BTRFS_MAIN_VOLUME_ID"
              value="5"
              c:type="BD_BTRFS_MAIN_VOLUME_ID">
      <source-position filename="lib/plugin_apis/btrfs.h" line="9"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="BTRFS_MIN_MEMBER_SIZE"
              value="134217728"
              c:type="BD_BTRFS_MIN_MEMBER_SIZE">
      <source-position filename="lib/plugin_apis/btrfs.h" line="10"/>
      <type name="guint64" c:type="guint64"/>
    </constant>
    <record name="BtrfsDeviceInfo"
            c:type="BDBtrfsDeviceInfo"
            glib:type-name="BDBtrfsDeviceInfo"
            glib:get-type="bd_btrfs_device_info_get_type"
            c:symbol-prefix="btrfs_device_info">
      <source-position filename="lib/plugin_apis/btrfs.h" line="31"/>
      <field name="id" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="35">ID of the device</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="path" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="36">path of the device</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="37">size of the device</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="used" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="38">size of the used space</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <method name="copy"
              c:identifier="bd_btrfs_device_info_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="40">Creates a new copy of @info.</doc>
        <source-position filename="lib/plugin_apis/btrfs.h" line="46"/>
        <return-value transfer-ownership="full">
          <type name="BtrfsDeviceInfo" c:type="BDBtrfsDeviceInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/btrfs.h"
                 line="42">%BDBtrfsDeviceInfo to copy</doc>
            <type name="BtrfsDeviceInfo" c:type="BDBtrfsDeviceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_btrfs_device_info_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="49">Frees @info.</doc>
        <source-position filename="lib/plugin_apis/btrfs.h" line="55"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/btrfs.h"
                 line="51">%BDBtrfsDeviceInfo to free</doc>
            <type name="BtrfsDeviceInfo" c:type="BDBtrfsDeviceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="BtrfsError"
                 c:type="BDBtrfsError"
                 glib:error-domain="g-bd-btrfs-error-quark">
      <source-position filename="lib/plugin_apis/btrfs.h" line="20"/>
      <member name="tech_unavail"
              value="0"
              c:identifier="BD_BTRFS_ERROR_TECH_UNAVAIL">
      </member>
      <member name="device" value="1" c:identifier="BD_BTRFS_ERROR_DEVICE">
      </member>
      <member name="parse" value="2" c:identifier="BD_BTRFS_ERROR_PARSE">
      </member>
    </enumeration>
    <record name="BtrfsFilesystemInfo"
            c:type="BDBtrfsFilesystemInfo"
            glib:type-name="BDBtrfsFilesystemInfo"
            glib:get-type="bd_btrfs_filesystem_info_get_type"
            c:symbol-prefix="btrfs_filesystem_info">
      <source-position filename="lib/plugin_apis/btrfs.h" line="105"/>
      <field name="label" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="109">label of the filesystem</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="uuid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="110">uuid of the filesystem</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="num_devices" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="111">number of device in the filesystem</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="used" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="112">size of the used space</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <method name="copy"
              c:identifier="bd_btrfs_filesystem_info_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="114">Creates a new copy of @info.</doc>
        <source-position filename="lib/plugin_apis/btrfs.h" line="120"/>
        <return-value transfer-ownership="full">
          <type name="BtrfsFilesystemInfo" c:type="BDBtrfsFilesystemInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/btrfs.h"
                 line="116">%BDBtrfsFilesystemInfo to copy</doc>
            <type name="BtrfsFilesystemInfo" c:type="BDBtrfsFilesystemInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_btrfs_filesystem_info_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="123">Frees @info.</doc>
        <source-position filename="lib/plugin_apis/btrfs.h" line="129"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/btrfs.h"
                 line="125">%BDBtrfsFilesystemInfo to free</doc>
            <type name="BtrfsFilesystemInfo" c:type="BDBtrfsFilesystemInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="BtrfsSubvolumeInfo"
            c:type="BDBtrfsSubvolumeInfo"
            glib:type-name="BDBtrfsSubvolumeInfo"
            glib:get-type="bd_btrfs_subvolume_info_get_type"
            c:symbol-prefix="btrfs_subvolume_info">
      <source-position filename="lib/plugin_apis/btrfs.h" line="68"/>
      <field name="id" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="72">ID of the subvolume</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="parent_id" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="73">ID of the parent (sub)volume</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="path" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="74">path of the subvolume</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <method name="copy"
              c:identifier="bd_btrfs_subvolume_info_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="76">Creates a new copy of @info.</doc>
        <source-position filename="lib/plugin_apis/btrfs.h" line="82"/>
        <return-value transfer-ownership="full">
          <type name="BtrfsSubvolumeInfo" c:type="BDBtrfsSubvolumeInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/btrfs.h"
                 line="78">%BDBtrfsSubvolumeInfo to copy</doc>
            <type name="BtrfsSubvolumeInfo" c:type="BDBtrfsSubvolumeInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_btrfs_subvolume_info_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="85">Frees @info.</doc>
        <source-position filename="lib/plugin_apis/btrfs.h" line="91"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/btrfs.h"
                 line="87">%BDBtrfsSubvolumeInfo to free</doc>
            <type name="BtrfsSubvolumeInfo" c:type="BDBtrfsSubvolumeInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="BtrfsTech" c:type="BDBtrfsTech">
      <source-position filename="lib/plugin_apis/btrfs.h" line="138"/>
      <member name="fs" value="0" c:identifier="BD_BTRFS_TECH_FS">
      </member>
      <member name="multi_dev"
              value="1"
              c:identifier="BD_BTRFS_TECH_MULTI_DEV">
      </member>
      <member name="subvol" value="2" c:identifier="BD_BTRFS_TECH_SUBVOL">
      </member>
      <member name="snapshot" value="3" c:identifier="BD_BTRFS_TECH_SNAPSHOT">
      </member>
    </enumeration>
    <bitfield name="BtrfsTechMode" c:type="BDBtrfsTechMode">
      <source-position filename="lib/plugin_apis/btrfs.h" line="145"/>
      <member name="create" value="1" c:identifier="BD_BTRFS_TECH_MODE_CREATE">
      </member>
      <member name="delete" value="2" c:identifier="BD_BTRFS_TECH_MODE_DELETE">
      </member>
      <member name="modify" value="4" c:identifier="BD_BTRFS_TECH_MODE_MODIFY">
      </member>
      <member name="query" value="8" c:identifier="BD_BTRFS_TECH_MODE_QUERY">
      </member>
    </bitfield>
    <record name="CryptoBITLKInfo"
            c:type="BDCryptoBITLKInfo"
            glib:type-name="BDCryptoBITLKInfo"
            glib:get-type="bd_crypto_bitlk_info_get_type"
            c:symbol-prefix="crypto_bitlk_info">
      <source-position filename="lib/plugin_apis/crypto.h" line="322"/>
      <field name="cipher" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="326">used cipher (e.g. "aes")</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="mode" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="327">used cipher mode (e.g. "xts-plain")</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="uuid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="328">UUID of the BITLK device</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="backing_device" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="329">name of the underlying block device</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="sector_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="330">size (in bytes) of encryption sector</doc>
        <type name="guint32" c:type="guint32"/>
      </field>
      <method name="copy"
              c:identifier="bd_crypto_bitlk_info_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="341">Creates a new copy of @info.</doc>
        <source-position filename="lib/plugin_apis/crypto.h" line="347"/>
        <return-value transfer-ownership="full">
          <type name="CryptoBITLKInfo" c:type="BDCryptoBITLKInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="343">%BDCryptoBITLKInfo to copy</doc>
            <type name="CryptoBITLKInfo" c:type="BDCryptoBITLKInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_crypto_bitlk_info_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="332">Frees @info.</doc>
        <source-position filename="lib/plugin_apis/crypto.h" line="338"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="334">%BDCryptoBITLKInfo to free</doc>
            <type name="CryptoBITLKInfo" c:type="BDCryptoBITLKInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="CryptoError"
                 c:type="BDCryptoError"
                 glib:error-domain="g-bd-crypto-error-quark">
      <source-position filename="lib/plugin_apis/crypto.h" line="31"/>
      <member name="tech_unavail"
              value="0"
              c:identifier="BD_CRYPTO_ERROR_TECH_UNAVAIL">
      </member>
      <member name="device" value="1" c:identifier="BD_CRYPTO_ERROR_DEVICE">
      </member>
      <member name="state" value="2" c:identifier="BD_CRYPTO_ERROR_STATE">
      </member>
      <member name="invalid_spec"
              value="3"
              c:identifier="BD_CRYPTO_ERROR_INVALID_SPEC">
      </member>
      <member name="format_failed"
              value="4"
              c:identifier="BD_CRYPTO_ERROR_FORMAT_FAILED">
      </member>
      <member name="resize_failed"
              value="5"
              c:identifier="BD_CRYPTO_ERROR_RESIZE_FAILED">
      </member>
      <member name="resize_perm"
              value="6"
              c:identifier="BD_CRYPTO_ERROR_RESIZE_PERM">
      </member>
      <member name="add_key" value="7" c:identifier="BD_CRYPTO_ERROR_ADD_KEY">
      </member>
      <member name="remove_key"
              value="8"
              c:identifier="BD_CRYPTO_ERROR_REMOVE_KEY">
      </member>
      <member name="no_key" value="9" c:identifier="BD_CRYPTO_ERROR_NO_KEY">
      </member>
      <member name="key_slot"
              value="10"
              c:identifier="BD_CRYPTO_ERROR_KEY_SLOT">
      </member>
      <member name="nss_init_failed"
              value="11"
              c:identifier="BD_CRYPTO_ERROR_NSS_INIT_FAILED">
      </member>
      <member name="cert_decode"
              value="12"
              c:identifier="BD_CRYPTO_ERROR_CERT_DECODE">
      </member>
      <member name="escrow_failed"
              value="13"
              c:identifier="BD_CRYPTO_ERROR_ESCROW_FAILED">
      </member>
      <member name="invalid_params"
              value="14"
              c:identifier="BD_CRYPTO_ERROR_INVALID_PARAMS">
      </member>
      <member name="keyring" value="15" c:identifier="BD_CRYPTO_ERROR_KEYRING">
      </member>
      <member name="keyfile_failed"
              value="16"
              c:identifier="BD_CRYPTO_ERROR_KEYFILE_FAILED">
      </member>
      <member name="invalid_context"
              value="17"
              c:identifier="BD_CRYPTO_ERROR_INVALID_CONTEXT">
      </member>
    </enumeration>
    <record name="CryptoIntegrityExtra"
            c:type="BDCryptoIntegrityExtra"
            glib:type-name="BDCryptoIntegrityExtra"
            glib:get-type="bd_crypto_integrity_extra_get_type"
            c:symbol-prefix="crypto_integrity_extra">
      <source-position filename="lib/plugin_apis/crypto.h" line="191"/>
      <field name="sector_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="195">integrity sector size</doc>
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="journal_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="196">size of journal in bytes</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="journal_watermark" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="197">journal flush watermark in percents; in bitmap mode sectors-per-bit</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="journal_commit_time" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="198">journal commit time (or bitmap flush time) in ms</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="interleave_sectors" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="199">number of interleave sectors (power of two)</doc>
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="tag_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="200">tag size per-sector in bytes</doc>
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="buffer_sectors" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="201">number of sectors in one buffer</doc>
        <type name="guint32" c:type="guint32"/>
      </field>
      <constructor name="new" c:identifier="bd_crypto_integrity_extra_new">
        <source-position filename="lib/plugin_apis/crypto.h" line="233"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="231">a new Integrity extra argument</doc>
          <type name="CryptoIntegrityExtra" c:type="BDCryptoIntegrityExtra*"/>
        </return-value>
        <parameters>
          <parameter name="sector_size" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="223">integrity sector size, 0 for default (512)</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="journal_size" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="224">size of journal in bytes</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
          <parameter name="journal_watermark" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="225">journal flush watermark in percents; in bitmap mode sectors-per-bit</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="journal_commit_time" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="226">journal commit time (or bitmap flush time) in ms</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="interleave_sectors" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="227">number of interleave sectors (power of two)</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
          <parameter name="tag_size" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="228">tag size per-sector in bytes</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
          <parameter name="buffer_sectors" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="229">number of sectors in one buffer</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="copy"
              c:identifier="bd_crypto_integrity_extra_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="203">Creates a new copy of @extra.</doc>
        <source-position filename="lib/plugin_apis/crypto.h" line="209"/>
        <return-value transfer-ownership="full">
          <type name="CryptoIntegrityExtra" c:type="BDCryptoIntegrityExtra*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extra"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="205">%BDCryptoIntegrityExtra to copy</doc>
            <type name="CryptoIntegrityExtra"
                  c:type="BDCryptoIntegrityExtra*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_crypto_integrity_extra_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="212">Frees @extra.</doc>
        <source-position filename="lib/plugin_apis/crypto.h" line="218"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extra"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="214">%BDCryptoIntegrityExtra to free</doc>
            <type name="CryptoIntegrityExtra"
                  c:type="BDCryptoIntegrityExtra*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="CryptoIntegrityInfo"
            c:type="BDCryptoIntegrityInfo"
            glib:type-name="BDCryptoIntegrityInfo"
            glib:get-type="bd_crypto_integrity_info_get_type"
            c:symbol-prefix="crypto_integrity_info">
      <source-position filename="lib/plugin_apis/crypto.h" line="364"/>
      <field name="algorithm" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="368">integrity algorithm</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="key_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="369">integrity key size in bytes</doc>
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="sector_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="370">sector size in bytes</doc>
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="tag_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="371">tag size per-sector in bytes</doc>
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="interleave_sectors" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="372">number of interleave sectors</doc>
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="journal_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="373">size of journal in bytes</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="journal_crypt" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="374">journal encryption algorithm</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="journal_integrity" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="375">journal integrity algorithm</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <method name="copy"
              c:identifier="bd_crypto_integrity_info_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="386">Creates a new copy of @info.</doc>
        <source-position filename="lib/plugin_apis/crypto.h" line="392"/>
        <return-value transfer-ownership="full">
          <type name="CryptoIntegrityInfo" c:type="BDCryptoIntegrityInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="388">%BDCryptoIntegrityInfo to copy</doc>
            <type name="CryptoIntegrityInfo" c:type="BDCryptoIntegrityInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_crypto_integrity_info_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="377">Frees @info.</doc>
        <source-position filename="lib/plugin_apis/crypto.h" line="383"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="379">%BDCryptoIntegrityInfo to free</doc>
            <type name="CryptoIntegrityInfo" c:type="BDCryptoIntegrityInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <bitfield name="CryptoIntegrityOpenFlags"
              c:type="BDCryptoIntegrityOpenFlags">
      <source-position filename="lib/plugin_apis/crypto.h" line="244"/>
      <member name="no_journal"
              value="1"
              c:identifier="BD_CRYPTO_INTEGRITY_OPEN_NO_JOURNAL">
      </member>
      <member name="recovery"
              value="2"
              c:identifier="BD_CRYPTO_INTEGRITY_OPEN_RECOVERY">
      </member>
      <member name="no_journal_bitmap"
              value="4"
              c:identifier="BD_CRYPTO_INTEGRITY_OPEN_NO_JOURNAL_BITMAP">
      </member>
      <member name="recalculate"
              value="8"
              c:identifier="BD_CRYPTO_INTEGRITY_OPEN_RECALCULATE">
      </member>
      <member name="recalculate_reset"
              value="16"
              c:identifier="BD_CRYPTO_INTEGRITY_OPEN_RECALCULATE_RESET">
      </member>
      <member name="allow_discards"
              value="32"
              c:identifier="BD_CRYPTO_INTEGRITY_OPEN_ALLOW_DISCARDS">
      </member>
    </bitfield>
    <record name="CryptoKeyslotContext"
            c:type="BDCryptoKeyslotContext"
            glib:type-name="BDCryptoKeyslotContext"
            glib:get-type="bd_crypto_keyslot_context_get_type"
            c:symbol-prefix="crypto_keyslot_context">
      <source-position filename="lib/plugin_apis/crypto.h" line="517"/>
      <field name="type" writable="1">
        <type name="CryptoKeyslotContextType"
              c:type="BDCryptoKeyslotContextType"/>
      </field>
      <union name="u" c:type="u">
        <source-position filename="lib/plugin_apis/crypto.h" line="516"/>
        <record name="passphrase" c:type="passphrase">
          <source-position filename="lib/plugin_apis/crypto.h" line="500"/>
          <field name="pass_data" writable="1">
            <type name="guint8" c:type="guint8*"/>
          </field>
          <field name="data_len" writable="1">
            <type name="gsize" c:type="gsize"/>
          </field>
        </record>
        <record name="keyfile" c:type="keyfile">
          <source-position filename="lib/plugin_apis/crypto.h" line="506"/>
          <field name="keyfile" writable="1">
            <type name="utf8" c:type="gchar*"/>
          </field>
          <field name="keyfile_offset" writable="1">
            <type name="guint64" c:type="guint64"/>
          </field>
          <field name="key_size" writable="1">
            <type name="gsize" c:type="gsize"/>
          </field>
        </record>
        <record name="keyring" c:type="keyring">
          <source-position filename="lib/plugin_apis/crypto.h" line="510"/>
          <field name="key_desc" writable="1">
            <type name="utf8" c:type="gchar*"/>
          </field>
        </record>
        <record name="volume_key" c:type="volume_key">
          <source-position filename="lib/plugin_apis/crypto.h" line="515"/>
          <field name="volume_key" writable="1">
            <type name="guint8" c:type="guint8*"/>
          </field>
          <field name="volume_key_size" writable="1">
            <type name="gsize" c:type="gsize"/>
          </field>
        </record>
      </union>
      <constructor name="new_keyfile"
                   c:identifier="bd_crypto_keyslot_context_new_keyfile"
                   throws="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="557">Returns (transfer full): new %BDCryptoKeyslotContext initialized by key file or
                         %NULL in case of error

Tech category: always available</doc>
        <source-position filename="lib/plugin_apis/crypto.h" line="569"/>
        <return-value transfer-ownership="full">
          <type name="CryptoKeyslotContext" c:type="BDCryptoKeyslotContext*"/>
        </return-value>
        <parameters>
          <parameter name="keyfile" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="559">a key file for the new context</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="keyfile_offset" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="560">number of bytes to read from @keyfile or 0 for unlimited</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
          <parameter name="key_size" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="561">number of bytes to skip at start of @keyfile</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_keyring"
                   c:identifier="bd_crypto_keyslot_context_new_keyring"
                   throws="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="572">Returns (transfer full): new %BDCryptoKeyslotContext initialized by @key_desc or
                         %NULL in case of error

Note: Keyslot passphrase must be stored in 'user' key type and the key has to be reachable
      by process context on behalf of which this function is called.

Tech category: always available</doc>
        <source-position filename="lib/plugin_apis/crypto.h" line="585"/>
        <return-value transfer-ownership="full">
          <type name="CryptoKeyslotContext" c:type="BDCryptoKeyslotContext*"/>
        </return-value>
        <parameters>
          <parameter name="key_desc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="574">kernel keyring key description</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_passphrase"
                   c:identifier="bd_crypto_keyslot_context_new_passphrase"
                   throws="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="543">Returns (transfer full): new %BDCryptoKeyslotContext initialized by passphrase or
                         %NULL in case of error

Tech category: always available</doc>
        <source-position filename="lib/plugin_apis/crypto.h" line="554"/>
        <return-value transfer-ownership="full">
          <type name="CryptoKeyslotContext" c:type="BDCryptoKeyslotContext*"/>
        </return-value>
        <parameters>
          <parameter name="pass_data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="545">a passphrase for the new context (may contain arbitrary binary data)</doc>
            <array length="1" zero-terminated="0" c:type="const guint8*">
              <type name="guint8" c:type="guint8"/>
            </array>
          </parameter>
          <parameter name="data_len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="546">length of the @pass_data buffer</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_volume_key"
                   c:identifier="bd_crypto_keyslot_context_new_volume_key"
                   throws="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="588">Returns (transfer full): new %BDCryptoKeyslotContext initialized by volume key or
                         %NULL in case of error

Tech category: always available</doc>
        <source-position filename="lib/plugin_apis/crypto.h" line="599"/>
        <return-value transfer-ownership="full">
          <type name="CryptoKeyslotContext" c:type="BDCryptoKeyslotContext*"/>
        </return-value>
        <parameters>
          <parameter name="volume_key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="590">a volume key for the new context (may contain arbitrary binary data)</doc>
            <array length="1" zero-terminated="0" c:type="const guint8*">
              <type name="guint8" c:type="guint8"/>
            </array>
          </parameter>
          <parameter name="volume_key_size" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="591">length of the @volume_key_size buffer</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="copy"
              c:identifier="bd_crypto_keyslot_context_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="533">Creates a new copy of @context.</doc>
        <source-position filename="lib/plugin_apis/crypto.h" line="539"/>
        <return-value transfer-ownership="full">
          <type name="CryptoKeyslotContext" c:type="BDCryptoKeyslotContext*"/>
        </return-value>
        <parameters>
          <instance-parameter name="context"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="535">%BDCryptoKeyslotContext to copy</doc>
            <type name="CryptoKeyslotContext"
                  c:type="BDCryptoKeyslotContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_crypto_keyslot_context_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="524">Frees @context.</doc>
        <source-position filename="lib/plugin_apis/crypto.h" line="530"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="context"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="526">%BDCryptoKeyslotContext to free</doc>
            <type name="CryptoKeyslotContext"
                  c:type="BDCryptoKeyslotContext*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="CryptoKeyslotContextType"
                 c:type="BDCryptoKeyslotContextType">
      <source-position filename="lib/plugin_apis/crypto.h" line="491"/>
      <member name="none"
              value="0"
              c:identifier="BD_CRYPTO_KEYSLOT_CONTEXT_TYPE_NONE">
      </member>
      <member name="passphrase"
              value="1"
              c:identifier="BD_CRYPTO_KEYSLOT_CONTEXT_TYPE_PASSPHRASE">
      </member>
      <member name="keyfile"
              value="2"
              c:identifier="BD_CRYPTO_KEYSLOT_CONTEXT_TYPE_KEYFILE">
      </member>
      <member name="keyring"
              value="3"
              c:identifier="BD_CRYPTO_KEYSLOT_CONTEXT_TYPE_KEYRING">
      </member>
      <member name="volume_key"
              value="4"
              c:identifier="BD_CRYPTO_KEYSLOT_CONTEXT_TYPE_VOLUME_KEY">
      </member>
    </enumeration>
    <record name="CryptoLUKSExtra"
            c:type="BDCryptoLUKSExtra"
            glib:type-name="BDCryptoLUKSExtra"
            glib:get-type="bd_crypto_luks_extra_get_type"
            c:symbol-prefix="crypto_luks_extra">
      <source-position filename="lib/plugin_apis/crypto.h" line="128"/>
      <field name="data_alignment" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="132">data alignment in sectors, 0 for default/auto detection</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="data_device" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="133">detached encrypted data device or NULL</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="integrity" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="134">integrity algorithm (e.g. "hmac-sha256") or NULL for no integrity support
            Note: this field is valid only for LUKS 2</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="sector_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="136">encryption sector size, 0 for default (512)
              Note: this field is valid only for LUKS 2</doc>
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="label" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="138">LUKS header label or NULL
        Note: this field is valid only for LUKS 2</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="subsystem" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="140">LUKS header subsystem or NULL
            Note: this field is valid only for LUKS 2</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="pbkdf" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="142">key derivation function specification or NULL for default
        Note: this field is valid only for LUKS 2</doc>
        <type name="CryptoLUKSPBKDF" c:type="BDCryptoLUKSPBKDF*"/>
      </field>
      <constructor name="new" c:identifier="bd_crypto_luks_extra_new">
        <source-position filename="lib/plugin_apis/crypto.h" line="175"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="173">a new LUKS extra argument</doc>
          <type name="CryptoLUKSExtra" c:type="BDCryptoLUKSExtra*"/>
        </return-value>
        <parameters>
          <parameter name="data_alignment" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="165">data alignment in sectors, 0 for default/auto detection</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
          <parameter name="data_device"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="166">detached encrypted data device or NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="integrity"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="167">integrity algorithm (e.g. "hmac-sha256") or NULL for no integrity support</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="sector_size" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="168">encryption sector size, 0 for default (512)</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="label"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="169">LUKS header label or NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="subsystem"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="170">LUKS header subsystem or NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="pbkdf"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="171">key derivation function specification or NULL for default</doc>
            <type name="CryptoLUKSPBKDF" c:type="BDCryptoLUKSPBKDF*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="copy"
              c:identifier="bd_crypto_luks_extra_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="145">Creates a new copy of @extra.</doc>
        <source-position filename="lib/plugin_apis/crypto.h" line="151"/>
        <return-value transfer-ownership="full">
          <type name="CryptoLUKSExtra" c:type="BDCryptoLUKSExtra*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extra"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="147">%BDCryptoLUKSExtra to copy</doc>
            <type name="CryptoLUKSExtra" c:type="BDCryptoLUKSExtra*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_crypto_luks_extra_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="154">Frees @extra.</doc>
        <source-position filename="lib/plugin_apis/crypto.h" line="160"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extra"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="156">%BDCryptoLUKSExtra to free</doc>
            <type name="CryptoLUKSExtra" c:type="BDCryptoLUKSExtra*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="CryptoLUKSHWEncryptionType"
                 c:type="BDCryptoLUKSHWEncryptionType">
      <source-position filename="lib/plugin_apis/crypto.h" line="255"/>
      <member name="unknown"
              value="0"
              c:identifier="BD_CRYPTO_LUKS_HW_ENCRYPTION_UNKNOWN">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="272">used for unknown/unsupported hardware encryption or when
                                       error was detected when getting the information</doc>
      </member>
      <member name="sw_only"
              value="1"
              c:identifier="BD_CRYPTO_LUKS_HW_ENCRYPTION_SW_ONLY">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="274">hardware encryption is not configured on this device</doc>
      </member>
      <member name="opal_hw_only"
              value="2"
              c:identifier="BD_CRYPTO_LUKS_HW_ENCRYPTION_OPAL_HW_ONLY">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="275">only OPAL hardware encryption is configured on this device</doc>
      </member>
      <member name="opal_hw_and_sw"
              value="3"
              c:identifier="BD_CRYPTO_LUKS_HW_ENCRYPTION_OPAL_HW_AND_SW">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="276">both OPAL hardware encryption and software encryption
                                              (using LUKS/dm-crypt) is configured on this device</doc>
      </member>
    </enumeration>
    <record name="CryptoLUKSInfo"
            c:type="BDCryptoLUKSInfo"
            glib:type-name="BDCryptoLUKSInfo"
            glib:get-type="bd_crypto_luks_info_get_type"
            c:symbol-prefix="crypto_luks_info">
      <source-position filename="lib/plugin_apis/crypto.h" line="268"/>
      <field name="version" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="281">LUKS version</doc>
        <type name="CryptoLUKSVersion" c:type="BDCryptoLUKSVersion"/>
      </field>
      <field name="cipher" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="282">used cipher (e.g. "aes")</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="mode" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="283">used cipher mode (e.g. "xts-plain")</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="uuid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="284">UUID of the LUKS device</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="backing_device" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="285">name of the underlying block device</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="sector_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="286">size (in bytes) of encryption sector
              Note: sector size is valid only for LUKS 2</doc>
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="metadata_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="288">LUKS metadata size</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="label" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="289">label of the LUKS device (valid only for LUKS 2)</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="subsystem" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="290">subsystem of the LUKS device (valid only for LUKS 2)</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="hw_encryption" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="291">hardware encryption type</doc>
        <type name="CryptoLUKSHWEncryptionType"
              c:type="BDCryptoLUKSHWEncryptionType"/>
      </field>
      <method name="copy"
              c:identifier="bd_crypto_luks_info_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="302">Creates a new copy of @info.</doc>
        <source-position filename="lib/plugin_apis/crypto.h" line="308"/>
        <return-value transfer-ownership="full">
          <type name="CryptoLUKSInfo" c:type="BDCryptoLUKSInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="304">%BDCryptoLUKSInfo to copy</doc>
            <type name="CryptoLUKSInfo" c:type="BDCryptoLUKSInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_crypto_luks_info_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="293">Frees @info.</doc>
        <source-position filename="lib/plugin_apis/crypto.h" line="299"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="295">%BDCryptoLUKSInfo to free</doc>
            <type name="CryptoLUKSInfo" c:type="BDCryptoLUKSInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="CryptoLUKSPBKDF"
            c:type="BDCryptoLUKSPBKDF"
            glib:type-name="BDCryptoLUKSPBKDF"
            glib:get-type="bd_crypto_luks_pbkdf_get_type"
            c:symbol-prefix="crypto_luks_pbkdf">
      <source-position filename="lib/plugin_apis/crypto.h" line="72"/>
      <field name="type" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="76">PBKDF algorithm</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="hash" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="77">hash for LUKS header or NULL</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="max_memory_kb" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="78">requested memory cost (in KiB) or 0 for default (benchmark)</doc>
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="iterations" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="79">requested iterations or 0 for default (benchmark)</doc>
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="time_ms" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="80">requested time cost or 0 for default (benchmark)</doc>
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="parallel_threads" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="81">requested parallel cost (threads) or 0 for default (benchmark)</doc>
        <type name="guint32" c:type="guint32"/>
      </field>
      <constructor name="new" c:identifier="bd_crypto_luks_pbkdf_new">
        <source-position filename="lib/plugin_apis/crypto.h" line="112"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="110">a new pbkdf argument</doc>
          <type name="CryptoLUKSPBKDF" c:type="BDCryptoLUKSPBKDF*"/>
        </return-value>
        <parameters>
          <parameter name="type"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="103">PBKDF algorithm</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="hash"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="104">hash for LUKS header or NULL for default</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="max_memory_kb" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="105">requested memory cost (in KiB) or 0 for default (benchmark)</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="iterations" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="106">requested iterations or 0 for default (benchmark)</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="time_ms" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="107">requested time cost or 0 for default (benchmark)</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="parallel_threads" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="108">requested parallel cost (threads) or 0 for default (benchmark)</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="copy"
              c:identifier="bd_crypto_luks_pbkdf_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="83">Creates a new copy of @pbkdf.</doc>
        <source-position filename="lib/plugin_apis/crypto.h" line="89"/>
        <return-value transfer-ownership="full">
          <type name="CryptoLUKSPBKDF" c:type="BDCryptoLUKSPBKDF*"/>
        </return-value>
        <parameters>
          <instance-parameter name="pbkdf"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="85">%BDCryptoLUKSPBKDF to copy</doc>
            <type name="CryptoLUKSPBKDF" c:type="BDCryptoLUKSPBKDF*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_crypto_luks_pbkdf_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="92">Frees @pbkdf.</doc>
        <source-position filename="lib/plugin_apis/crypto.h" line="98"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="pbkdf"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="94">%BDCryptoLUKSPBKDF to free</doc>
            <type name="CryptoLUKSPBKDF" c:type="BDCryptoLUKSPBKDF*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="CryptoLUKSTokenInfo"
            c:type="BDCryptoLUKSTokenInfo"
            glib:type-name="BDCryptoLUKSTokenInfo"
            glib:get-type="bd_crypto_luks_token_info_get_type"
            c:symbol-prefix="crypto_luks_token_info">
      <source-position filename="lib/plugin_apis/crypto.h" line="404"/>
      <field name="id" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="408">ID of the token</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="type" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="409">type of the token</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="keyslot" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="410">keyslot this token is assigned to or -1 for inactive/unassigned tokens</doc>
        <type name="gint" c:type="gint"/>
      </field>
      <method name="copy"
              c:identifier="bd_crypto_luks_token_info_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="421">Creates a new copy of @info.</doc>
        <source-position filename="lib/plugin_apis/crypto.h" line="427"/>
        <return-value transfer-ownership="full">
          <type name="CryptoLUKSTokenInfo" c:type="BDCryptoLUKSTokenInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="423">%BDCryptoLUKSTokenInfo to copy</doc>
            <type name="CryptoLUKSTokenInfo" c:type="BDCryptoLUKSTokenInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_crypto_luks_token_info_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="412">Frees @info.</doc>
        <source-position filename="lib/plugin_apis/crypto.h" line="418"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/crypto.h"
                 line="414">%BDCryptoLUKSTokenInfo to free</doc>
            <type name="CryptoLUKSTokenInfo" c:type="BDCryptoLUKSTokenInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="CryptoLUKSVersion" c:type="BDCryptoLUKSVersion">
      <source-position filename="lib/plugin_apis/crypto.h" line="59"/>
      <member name="luks1"
              value="0"
              c:identifier="BD_CRYPTO_LUKS_VERSION_LUKS1">
      </member>
      <member name="luks2"
              value="1"
              c:identifier="BD_CRYPTO_LUKS_VERSION_LUKS2">
      </member>
    </enumeration>
    <enumeration name="CryptoTech" c:type="BDCryptoTech">
      <source-position filename="lib/plugin_apis/crypto.h" line="42"/>
      <member name="luks" value="0" c:identifier="BD_CRYPTO_TECH_LUKS">
      </member>
      <member name="truecrypt"
              value="1"
              c:identifier="BD_CRYPTO_TECH_TRUECRYPT">
      </member>
      <member name="escrow" value="2" c:identifier="BD_CRYPTO_TECH_ESCROW">
      </member>
      <member name="integrity"
              value="3"
              c:identifier="BD_CRYPTO_TECH_INTEGRITY">
      </member>
      <member name="bitlk" value="4" c:identifier="BD_CRYPTO_TECH_BITLK">
      </member>
      <member name="keyring" value="5" c:identifier="BD_CRYPTO_TECH_KEYRING">
      </member>
      <member name="fvault2" value="6" c:identifier="BD_CRYPTO_TECH_FVAULT2">
      </member>
      <member name="sed_opal" value="7" c:identifier="BD_CRYPTO_TECH_SED_OPAL">
      </member>
    </enumeration>
    <bitfield name="CryptoTechMode" c:type="BDCryptoTechMode">
      <source-position filename="lib/plugin_apis/crypto.h" line="54"/>
      <member name="create"
              value="1"
              c:identifier="BD_CRYPTO_TECH_MODE_CREATE">
      </member>
      <member name="open_close"
              value="2"
              c:identifier="BD_CRYPTO_TECH_MODE_OPEN_CLOSE">
      </member>
      <member name="query" value="4" c:identifier="BD_CRYPTO_TECH_MODE_QUERY">
      </member>
      <member name="add_key"
              value="8"
              c:identifier="BD_CRYPTO_TECH_MODE_ADD_KEY">
      </member>
      <member name="remove_key"
              value="16"
              c:identifier="BD_CRYPTO_TECH_MODE_REMOVE_KEY">
      </member>
      <member name="resize"
              value="32"
              c:identifier="BD_CRYPTO_TECH_MODE_RESIZE">
      </member>
      <member name="suspend_resume"
              value="64"
              c:identifier="BD_CRYPTO_TECH_MODE_SUSPEND_RESUME">
      </member>
      <member name="backup_restore"
              value="128"
              c:identifier="BD_CRYPTO_TECH_MODE_BACKUP_RESTORE">
      </member>
      <member name="modify"
              value="256"
              c:identifier="BD_CRYPTO_TECH_MODE_MODIFY">
      </member>
    </bitfield>
    <enumeration name="DMError"
                 c:type="BDDMError"
                 glib:error-domain="g-bd-dm-error-quark">
      <source-position filename="lib/plugin_apis/dm.h" line="20"/>
      <member name="tech_unavail"
              value="0"
              c:identifier="BD_DM_ERROR_TECH_UNAVAIL">
      </member>
      <member name="sys" value="1" c:identifier="BD_DM_ERROR_SYS">
      </member>
      <member name="not_root" value="2" c:identifier="BD_DM_ERROR_NOT_ROOT">
      </member>
      <member name="task" value="3" c:identifier="BD_DM_ERROR_TASK">
      </member>
      <member name="raid_fail" value="4" c:identifier="BD_DM_ERROR_RAID_FAIL">
      </member>
      <member name="raid_no_devs"
              value="5"
              c:identifier="BD_DM_ERROR_RAID_NO_DEVS">
      </member>
      <member name="raid_no_exist"
              value="6"
              c:identifier="BD_DM_ERROR_RAID_NO_EXIST">
      </member>
    </enumeration>
    <enumeration name="DMTech" c:type="BDDMTech">
      <source-position filename="lib/plugin_apis/dm.h" line="24"/>
      <member name="dm_tech_map" value="0" c:identifier="BD_DM_TECH_MAP">
      </member>
    </enumeration>
    <bitfield name="DMTechMode" c:type="BDDMTechMode">
      <source-position filename="lib/plugin_apis/dm.h" line="30"/>
      <member name="create_activate"
              value="1"
              c:identifier="BD_DM_TECH_MODE_CREATE_ACTIVATE">
      </member>
      <member name="remove_deactivate"
              value="2"
              c:identifier="BD_DM_TECH_MODE_REMOVE_DEACTIVATE">
      </member>
      <member name="query" value="4" c:identifier="BD_DM_TECH_MODE_QUERY">
      </member>
    </bitfield>
    <record name="ExtraArg"
            c:type="BDExtraArg"
            glib:type-name="BDExtraArg"
            glib:get-type="bd_extra_arg_get_type"
            c:symbol-prefix="extra_arg">
      <doc xml:space="preserve"
           filename="utils/extra_arg.h"
           line="10">See bd_extra_arg_new() for an example on how to construct the extra args.</doc>
      <source-position filename="utils/extra_arg.h" line="21"/>
      <field name="opt" writable="1">
        <doc xml:space="preserve"
             filename="utils/extra_arg.h"
             line="12">extra option (command line option for most functions that allow extra options
      to be passed, e.g. "-L" to call `mkfs.xfs -L`)</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="val" writable="1">
        <doc xml:space="preserve"
             filename="utils/extra_arg.h"
             line="14">value for @opt, can be an empty string or %NULL for options without parameter</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <constructor name="new" c:identifier="bd_extra_arg_new">
        <doc xml:space="preserve"
             filename="utils/extra_arg.c"
             line="66">Example of calling bd_fs_xfs_mkfs() with an extra argument.
This will result in calling `mkfs.xfs` with `-L label`.

|[&lt;!-- language="C" --&gt;
BDExtraArg label_arg = {"-L", "label"};
const BDExtraArg *extra_args[2] = {&amp;label_arg, NULL};

ret = bd_fs_xfs_mkfs ("/dev/sda", extra_args, error);

]|</doc>
        <source-position filename="utils/extra_arg.h" line="26"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="utils/extra_arg.c"
               line="82">a new extra argument</doc>
          <type name="ExtraArg" c:type="BDExtraArg*"/>
        </return-value>
        <parameters>
          <parameter name="opt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="utils/extra_arg.c"
                 line="68">extra option</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="val" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="utils/extra_arg.c"
                 line="69">value for the extra option @opt</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="copy" c:identifier="bd_extra_arg_copy">
        <doc xml:space="preserve"
             filename="utils/extra_arg.c"
             line="6">Creates a new copy of @arg.</doc>
        <source-position filename="utils/extra_arg.h" line="23"/>
        <return-value transfer-ownership="full">
          <type name="ExtraArg" c:type="BDExtraArg*"/>
        </return-value>
        <parameters>
          <instance-parameter name="arg"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="utils/extra_arg.c"
                 line="8">%BDExtraArg to copy</doc>
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="bd_extra_arg_free">
        <doc xml:space="preserve"
             filename="utils/extra_arg.c"
             line="23">Frees @arg.</doc>
        <source-position filename="utils/extra_arg.h" line="24"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="arg"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="utils/extra_arg.c"
                 line="25">%BDExtraArg to free</doc>
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </instance-parameter>
        </parameters>
      </method>
      <function name="list_free" c:identifier="bd_extra_arg_list_free">
        <doc xml:space="preserve"
             filename="utils/extra_arg.c"
             line="38">Frees @args and all its elements.</doc>
        <source-position filename="utils/extra_arg.h" line="25"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="args"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="utils/extra_arg.c"
                 line="40">A list of %BDExtraArg to free</doc>
            <array c:type="BDExtraArg**">
              <type name="ExtraArg" c:type="BDExtraArg*"/>
            </array>
          </parameter>
        </parameters>
      </function>
    </record>
    <record name="FSBtrfsInfo"
            c:type="BDFSBtrfsInfo"
            glib:type-name="BDFSBtrfsInfo"
            glib:get-type="bd_fs_btrfs_info_get_type"
            c:symbol-prefix="fs_btrfs_info">
      <source-position filename="lib/plugin_apis/fs.h" line="429"/>
      <field name="label" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="433">label of the filesystem</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="uuid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="434">uuid of the filesystem</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="435">size of the filesystem in bytes</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="free_space" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="436">free space on the filesystem in bytes</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <method name="copy"
              c:identifier="bd_fs_btrfs_info_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="438">Creates a new copy of @data.</doc>
        <source-position filename="lib/plugin_apis/fs.h" line="444"/>
        <return-value transfer-ownership="full">
          <type name="FSBtrfsInfo" c:type="BDFSBtrfsInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/fs.h"
                 line="440">%BDFSBtrfsInfo to copy</doc>
            <type name="FSBtrfsInfo" c:type="BDFSBtrfsInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_fs_btrfs_info_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="447">Frees @data.</doc>
        <source-position filename="lib/plugin_apis/fs.h" line="453"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/fs.h"
                 line="449">%BDFSBtrfsInfo to free</doc>
            <type name="FSBtrfsInfo" c:type="BDFSBtrfsInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <bitfield name="FSConfigureFlags" c:type="BDFSConfigureFlags">
      <source-position filename="lib/plugin_apis/fs.h" line="2454"/>
      <member name="label" value="2" c:identifier="BD_FS_SUPPORT_SET_LABEL">
      </member>
      <member name="uuid" value="4" c:identifier="BD_FS_SUPPORT_SET_UUID">
      </member>
    </bitfield>
    <enumeration name="FSError"
                 c:type="BDFSError"
                 glib:error-domain="g-bd-fs-error-quark">
      <source-position filename="lib/plugin_apis/fs.h" line="27"/>
      <member name="tech_unavail"
              value="0"
              c:identifier="BD_FS_ERROR_TECH_UNAVAIL">
      </member>
      <member name="inval" value="1" c:identifier="BD_FS_ERROR_INVAL">
      </member>
      <member name="parse" value="2" c:identifier="BD_FS_ERROR_PARSE">
      </member>
      <member name="fail" value="3" c:identifier="BD_FS_ERROR_FAIL">
      </member>
      <member name="nofs" value="4" c:identifier="BD_FS_ERROR_NOFS">
      </member>
      <member name="pipe" value="5" c:identifier="BD_FS_ERROR_PIPE">
      </member>
      <member name="unmount_fail"
              value="6"
              c:identifier="BD_FS_ERROR_UNMOUNT_FAIL">
      </member>
      <member name="not_supported"
              value="7"
              c:identifier="BD_FS_ERROR_NOT_SUPPORTED">
      </member>
      <member name="not_mounted"
              value="8"
              c:identifier="BD_FS_ERROR_NOT_MOUNTED">
      </member>
      <member name="auth" value="9" c:identifier="BD_FS_ERROR_AUTH">
      </member>
      <member name="label_invalid"
              value="10"
              c:identifier="BD_FS_ERROR_LABEL_INVALID">
      </member>
      <member name="uuid_invalid"
              value="11"
              c:identifier="BD_FS_ERROR_UUID_INVALID">
      </member>
      <member name="unknown_fs"
              value="12"
              c:identifier="BD_FS_ERROR_UNKNOWN_FS">
      </member>
    </enumeration>
    <record name="FSExfatInfo"
            c:type="BDFSExfatInfo"
            glib:type-name="BDFSExfatInfo"
            glib:get-type="bd_fs_exfat_info_get_type"
            c:symbol-prefix="fs_exfat_info">
      <source-position filename="lib/plugin_apis/fs.h" line="395"/>
      <field name="label" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="399">label of the filesystem</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="uuid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="400">uuid of the filesystem</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="sector_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="401">sector size used by the filesystem</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="sector_count" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="402">number of sectors in the filesystem</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="cluster_count" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="403">number of clusters in the filesystem</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <method name="copy"
              c:identifier="bd_fs_exfat_info_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="414">Creates a new copy of @data.</doc>
        <source-position filename="lib/plugin_apis/fs.h" line="420"/>
        <return-value transfer-ownership="full">
          <type name="FSExfatInfo" c:type="BDFSExfatInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/fs.h"
                 line="416">%BDFSExfatInfo to copy</doc>
            <type name="FSExfatInfo" c:type="BDFSExfatInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_fs_exfat_info_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="405">Frees @data.</doc>
        <source-position filename="lib/plugin_apis/fs.h" line="411"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/fs.h"
                 line="407">%BDFSExfatInfo to free</doc>
            <type name="FSExfatInfo" c:type="BDFSExfatInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="FSExt2Info"
            c:type="BDFSExt2Info"
            glib:type-name="BDFSExt2Info"
            glib:get-type="bd_fs_ext2_info_get_type"
            c:symbol-prefix="fs_ext2_info">
      <source-position filename="lib/plugin_apis/fs.h" line="95"/>
      <field name="label" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="99">label of the filesystem</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="uuid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="100">uuid of the filesystem</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="state" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="101">state of the filesystem (e.g. "clean")</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="block_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="102">block size used by the filesystem</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="block_count" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="103">number of blocks in the filesystem</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="free_blocks" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="104">number of free blocks in the filesystem</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <method name="copy"
              c:identifier="bd_fs_ext2_info_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="106">Creates a new copy of @data.</doc>
        <source-position filename="lib/plugin_apis/fs.h" line="112"/>
        <return-value transfer-ownership="full">
          <type name="FSExt2Info" c:type="BDFSExt2Info*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/fs.h"
                 line="108">%BDFSExt2Info to copy</doc>
            <type name="FSExt2Info" c:type="BDFSExt2Info*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="FSExt3Info"
            c:type="BDFSExt3Info"
            glib:type-name="BDFSExt3Info"
            glib:get-type="bd_fs_ext3_info_get_type"
            c:symbol-prefix="fs_ext3_info">
      <source-position filename="lib/plugin_apis/fs.h" line="94"/>
      <field name="label" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="99">label of the filesystem</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="uuid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="100">uuid of the filesystem</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="state" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="101">state of the filesystem (e.g. "clean")</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="block_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="102">block size used by the filesystem</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="block_count" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="103">number of blocks in the filesystem</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="free_blocks" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="104">number of free blocks in the filesystem</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <method name="copy"
              c:identifier="bd_fs_ext3_info_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="115">Creates a new copy of @data.</doc>
        <source-position filename="lib/plugin_apis/fs.h" line="121"/>
        <return-value transfer-ownership="full">
          <type name="FSExt3Info" c:type="BDFSExt3Info*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/fs.h"
                 line="117">%BDFSExt3Info to copy</doc>
            <type name="FSExt3Info" c:type="BDFSExt3Info*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_fs_ext3_info_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="133">Frees @data.</doc>
        <source-position filename="lib/plugin_apis/fs.h" line="139"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/fs.h"
                 line="135">%BDFSExt3Info to free</doc>
            <type name="FSExt3Info" c:type="BDFSExt3Info*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="FSExt4Info"
            c:type="BDFSExt4Info"
            glib:type-name="BDFSExt4Info"
            glib:get-type="bd_fs_ext4_info_get_type"
            c:symbol-prefix="fs_ext4_info">
      <source-position filename="lib/plugin_apis/fs.h" line="93"/>
      <field name="label" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="99">label of the filesystem</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="uuid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="100">uuid of the filesystem</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="state" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="101">state of the filesystem (e.g. "clean")</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="block_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="102">block size used by the filesystem</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="block_count" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="103">number of blocks in the filesystem</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="free_blocks" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="104">number of free blocks in the filesystem</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <method name="copy"
              c:identifier="bd_fs_ext4_info_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="124">Creates a new copy of @data.</doc>
        <source-position filename="lib/plugin_apis/fs.h" line="130"/>
        <return-value transfer-ownership="full">
          <type name="FSExt4Info" c:type="BDFSExt4Info*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/fs.h"
                 line="126">%BDFSExt4Info to copy</doc>
            <type name="FSExt4Info" c:type="BDFSExt4Info*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_fs_ext4_info_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="142">Frees @data.</doc>
        <source-position filename="lib/plugin_apis/fs.h" line="148"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/fs.h"
                 line="144">%BDFSExt4Info to free</doc>
            <type name="FSExt4Info" c:type="BDFSExt4Info*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="FSExtInfo" c:type="BDFSExtInfo">
      <source-position filename="lib/plugin_apis/fs.h" line="91"/>
      <field name="label" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="99">label of the filesystem</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="uuid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="100">uuid of the filesystem</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="state" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="101">state of the filesystem (e.g. "clean")</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="block_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="102">block size used by the filesystem</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="block_count" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="103">number of blocks in the filesystem</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="free_blocks" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="104">number of free blocks in the filesystem</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
    </record>
    <bitfield name="FSF2FSFeature" c:type="BDFSF2FSFeature">
      <source-position filename="lib/plugin_apis/fs.h" line="317"/>
      <member name="encrypt"
              value="1"
              c:identifier="BD_FS_F2FS_FEATURE_ENCRYPT">
      </member>
      <member name="blkzoned"
              value="2"
              c:identifier="BD_FS_F2FS_FEATURE_BLKZONED">
      </member>
      <member name="atomic_write"
              value="4"
              c:identifier="BD_FS_F2FS_FEATURE_ATOMIC_WRITE">
      </member>
      <member name="extra_attr"
              value="8"
              c:identifier="BD_FS_F2FS_FEATURE_EXTRA_ATTR">
      </member>
      <member name="prjquota"
              value="16"
              c:identifier="BD_FS_F2FS_FEATURE_PRJQUOTA">
      </member>
      <member name="inode_chksum"
              value="32"
              c:identifier="BD_FS_F2FS_FEATURE_INODE_CHKSUM">
      </member>
      <member name="flexible_inline_xattr"
              value="64"
              c:identifier="BD_FS_F2FS_FEATURE_FLEXIBLE_INLINE_XATTR">
      </member>
      <member name="quota_ino"
              value="128"
              c:identifier="BD_FS_F2FS_FEATURE_QUOTA_INO">
      </member>
      <member name="inode_crtime"
              value="256"
              c:identifier="BD_FS_F2FS_FEATURE_INODE_CRTIME">
      </member>
      <member name="lost_found"
              value="512"
              c:identifier="BD_FS_F2FS_FEATURE_LOST_FOUND">
      </member>
      <member name="verity"
              value="1024"
              c:identifier="BD_FS_F2FS_FEATURE_VERITY">
      </member>
      <member name="sb_chksum"
              value="2048"
              c:identifier="BD_FS_F2FS_FEATURE_SB_CHKSUM">
      </member>
    </bitfield>
    <record name="FSF2FSInfo"
            c:type="BDFSF2FSInfo"
            glib:type-name="BDFSF2FSInfo"
            glib:get-type="bd_fs_f2fs_info_get_type"
            c:symbol-prefix="fs_f2fs_info">
      <source-position filename="lib/plugin_apis/fs.h" line="275"/>
      <field name="label" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="279">label of the filesystem</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="uuid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="280">uuid of the filesystem</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="sector_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="281">sector size used by the filesystem</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="sector_count" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="282">number of sectors in the filesystem</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="features" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="283">features enabled for this filesystem, see #BDFSF2FSFeature</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <method name="copy"
              c:identifier="bd_fs_f2fs_info_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="285">Creates a new copy of @data.</doc>
        <source-position filename="lib/plugin_apis/fs.h" line="291"/>
        <return-value transfer-ownership="full">
          <type name="FSF2FSInfo" c:type="BDFSF2FSInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/fs.h"
                 line="287">%BDFSF2FSInfo to copy</doc>
            <type name="FSF2FSInfo" c:type="BDFSF2FSInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_fs_f2fs_info_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="294">Frees @data.</doc>
        <source-position filename="lib/plugin_apis/fs.h" line="300"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/fs.h"
                 line="296">%BDFSF2FSInfo to free</doc>
            <type name="FSF2FSInfo" c:type="BDFSF2FSInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <bitfield name="FSFeatureFlags" c:type="BDFSFeatureFlags">
      <source-position filename="lib/plugin_apis/fs.h" line="2464"/>
      <member name="owners" value="2" c:identifier="BD_FS_FEATURE_OWNERS">
      </member>
      <member name="partition_table"
              value="4"
              c:identifier="BD_FS_FEATURE_PARTITION_TABLE">
      </member>
    </bitfield>
    <record name="FSFeatures"
            c:type="BDFSFeatures"
            glib:type-name="BDFSFeatures"
            glib:get-type="bd_fs_features_get_type"
            c:symbol-prefix="fs_features">
      <source-position filename="lib/plugin_apis/fs.h" line="2476"/>
      <field name="resize" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2480">supported resizes modes</doc>
        <type name="FSResizeFlags" c:type="BDFSResizeFlags"/>
      </field>
      <field name="mkfs" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2481">supported options for mkfs</doc>
        <type name="FSMkfsOptionsFlags" c:type="BDFSMkfsOptionsFlags"/>
      </field>
      <field name="fsck" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2482">support for fsck operations (check and repair)</doc>
        <type name="FSFsckFlags" c:type="BDFSFsckFlags"/>
      </field>
      <field name="configure" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2483">support for changing properties of an existing filesystem</doc>
        <type name="FSConfigureFlags" c:type="BDFSConfigureFlags"/>
      </field>
      <field name="features" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2484">other supported features</doc>
        <type name="FSFeatureFlags" c:type="BDFSFeatureFlags"/>
      </field>
      <field name="partition_id" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2485">partition ID used for this filesystem on MSDOS partitions</doc>
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="partition_type" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2486">partition type/GUID used for this filesystem GPT partitions</doc>
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="min_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2487">minimum size when creating this filesystem</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="max_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2488">maximum size when creating this filesystem</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <method name="copy"
              c:identifier="bd_fs_features_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2490">Creates a new copy of @data.</doc>
        <source-position filename="lib/plugin_apis/fs.h" line="2496"/>
        <return-value transfer-ownership="full">
          <type name="FSFeatures" c:type="BDFSFeatures*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/fs.h"
                 line="2492">%BDFSFeatures to copy</doc>
            <type name="FSFeatures" c:type="BDFSFeatures*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_fs_features_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2499">Frees @data.</doc>
        <source-position filename="lib/plugin_apis/fs.h" line="2505"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/fs.h"
                 line="2501">%BDFSFeatures to free</doc>
            <type name="FSFeatures" c:type="BDFSFeatures*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <bitfield name="FSFsckFlags" c:type="BDFSFsckFlags">
      <source-position filename="lib/plugin_apis/fs.h" line="2459"/>
      <member name="check" value="2" c:identifier="BD_FS_FSCK_CHECK">
      </member>
      <member name="repair" value="4" c:identifier="BD_FS_FSCK_REPAIR">
      </member>
    </bitfield>
    <record name="FSMkfsOptions"
            c:type="BDFSMkfsOptions"
            glib:type-name="BDFSMkfsOptions"
            glib:get-type="bd_fs_mkfs_options_get_type"
            c:symbol-prefix="fs_mkfs_options">
      <source-position filename="lib/plugin_apis/fs.h" line="37"/>
      <field name="label" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="41">label of the filesystem</doc>
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="uuid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="42">uuid of the filesystem</doc>
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="dry_run" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="43">whether to run mkfs in dry run mode (no changes written to the device)</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="no_discard" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="44">whether to avoid discarding blocks at mkfs time</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="force" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="45">whether to run mkfs with the `--force` (or similar) option, the behaviour of this
        option depends on the filesystem, but in general it allows overwriting other
        preexisting formats detected on the device</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="no_pt" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="48">whether to disable (protective) partition table creation during mkfs</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="reserve" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="49">reserve for future expansion</doc>
        <array zero-terminated="0" fixed-size="32">
          <type name="guint8" c:type="guint8"/>
        </array>
      </field>
      <method name="copy"
              c:identifier="bd_fs_mkfs_options_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="51">Creates a new copy of @data.</doc>
        <source-position filename="lib/plugin_apis/fs.h" line="57"/>
        <return-value transfer-ownership="full">
          <type name="FSMkfsOptions" c:type="BDFSMkfsOptions*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/fs.h"
                 line="53">%BDFSMkfsOptions to copy</doc>
            <type name="FSMkfsOptions" c:type="BDFSMkfsOptions*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_fs_mkfs_options_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="60">Frees @data.</doc>
        <source-position filename="lib/plugin_apis/fs.h" line="66"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/fs.h"
                 line="62">%BDFSMkfsOptions to free</doc>
            <type name="FSMkfsOptions" c:type="BDFSMkfsOptions*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <bitfield name="FSMkfsOptionsFlags" c:type="BDFSMkfsOptionsFlags">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/fs.h"
           line="911">Flags indicating mkfs options are available for given filesystem type.</doc>
      <source-position filename="lib/plugin_apis/fs.h" line="909"/>
      <member name="label" value="1" c:identifier="BD_FS_MKFS_LABEL">
      </member>
      <member name="uuid" value="2" c:identifier="BD_FS_MKFS_UUID">
      </member>
      <member name="dry_run" value="4" c:identifier="BD_FS_MKFS_DRY_RUN">
      </member>
      <member name="nodiscard" value="8" c:identifier="BD_FS_MKFS_NODISCARD">
      </member>
      <member name="force" value="16" c:identifier="BD_FS_MKFS_FORCE">
      </member>
      <member name="nopt" value="32" c:identifier="BD_FS_MKFS_NOPT">
      </member>
    </bitfield>
    <record name="FSNILFS2Info"
            c:type="BDFSNILFS2Info"
            glib:type-name="BDFSNILFS2Info"
            glib:get-type="bd_fs_nilfs2_info_get_type"
            c:symbol-prefix="fs_nilfs2_info">
      <source-position filename="lib/plugin_apis/fs.h" line="356"/>
      <field name="label" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="360">label of the filesystem</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="uuid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="361">uuid of the filesystem</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="363">size of the filesystem</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="block_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="362">block size used by the filesystem</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="free_blocks" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="364">number of free blocks in the filesystem</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <method name="copy"
              c:identifier="bd_fs_nilfs2_info_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="366">Creates a new copy of @data.</doc>
        <source-position filename="lib/plugin_apis/fs.h" line="372"/>
        <return-value transfer-ownership="full">
          <type name="FSNILFS2Info" c:type="BDFSNILFS2Info*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/fs.h"
                 line="368">%BDFSNILFS2Info to copy</doc>
            <type name="FSNILFS2Info" c:type="BDFSNILFS2Info*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_fs_nilfs2_info_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="375">Frees @data.</doc>
        <source-position filename="lib/plugin_apis/fs.h" line="381"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/fs.h"
                 line="377">%BDFSNILFS2Info to free</doc>
            <type name="FSNILFS2Info" c:type="BDFSNILFS2Info*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="FSNtfsInfo"
            c:type="BDFSNtfsInfo"
            glib:type-name="BDFSNtfsInfo"
            glib:get-type="bd_fs_ntfs_info_get_type"
            c:symbol-prefix="fs_ntfs_info">
      <source-position filename="lib/plugin_apis/fs.h" line="235"/>
      <field name="label" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="239">label of the filesystem</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="uuid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="240">uuid of the filesystem</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="241">size of the filesystem in bytes</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="free_space" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="242">number of free space in the filesystem in bytes</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <method name="copy"
              c:identifier="bd_fs_ntfs_info_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="244">Creates a new copy of @data.</doc>
        <source-position filename="lib/plugin_apis/fs.h" line="250"/>
        <return-value transfer-ownership="full">
          <type name="FSNtfsInfo" c:type="BDFSNtfsInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/fs.h"
                 line="246">%BDFSNtfsInfo to copy</doc>
            <type name="FSNtfsInfo" c:type="BDFSNtfsInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_fs_ntfs_info_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="253">Frees @data.</doc>
        <source-position filename="lib/plugin_apis/fs.h" line="259"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/fs.h"
                 line="255">%BDFSNtfsInfo to free</doc>
            <type name="FSNtfsInfo" c:type="BDFSNtfsInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <bitfield name="FSResizeFlags" c:type="BDFSResizeFlags">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/fs.h"
           line="940">Flags indicating whether a filesystem resize action supports growing and/or
shrinking if mounted or unmounted.</doc>
      <source-position filename="lib/plugin_apis/fs.h" line="938"/>
      <member name="offline_shrink"
              value="2"
              c:identifier="BD_FS_OFFLINE_SHRINK">
      </member>
      <member name="offline_grow" value="4" c:identifier="BD_FS_OFFLINE_GROW">
      </member>
      <member name="online_shrink"
              value="8"
              c:identifier="BD_FS_ONLINE_SHRINK">
      </member>
      <member name="online_grow" value="16" c:identifier="BD_FS_ONLINE_GROW">
      </member>
    </bitfield>
    <enumeration name="FSTech" c:type="BDFSTech">
      <source-position filename="lib/plugin_apis/fs.h" line="333"/>
      <member name="generic" value="0" c:identifier="BD_FS_TECH_GENERIC">
      </member>
      <member name="mount" value="1" c:identifier="BD_FS_TECH_MOUNT">
      </member>
      <member name="ext2" value="2" c:identifier="BD_FS_TECH_EXT2">
      </member>
      <member name="ext3" value="3" c:identifier="BD_FS_TECH_EXT3">
      </member>
      <member name="ext4" value="4" c:identifier="BD_FS_TECH_EXT4">
      </member>
      <member name="xfs" value="5" c:identifier="BD_FS_TECH_XFS">
      </member>
      <member name="vfat" value="6" c:identifier="BD_FS_TECH_VFAT">
      </member>
      <member name="ntfs" value="7" c:identifier="BD_FS_TECH_NTFS">
      </member>
      <member name="f2fs" value="8" c:identifier="BD_FS_TECH_F2FS">
      </member>
      <member name="nilfs2" value="9" c:identifier="BD_FS_TECH_NILFS2">
      </member>
      <member name="exfat" value="10" c:identifier="BD_FS_TECH_EXFAT">
      </member>
      <member name="btrfs" value="11" c:identifier="BD_FS_TECH_BTRFS">
      </member>
      <member name="udf" value="12" c:identifier="BD_FS_TECH_UDF">
      </member>
    </enumeration>
    <bitfield name="FSTechMode" c:type="BDFSTechMode">
      <source-position filename="lib/plugin_apis/fs.h" line="344"/>
      <member name="mkfs" value="1" c:identifier="BD_FS_TECH_MODE_MKFS">
      </member>
      <member name="wipe" value="2" c:identifier="BD_FS_TECH_MODE_WIPE">
      </member>
      <member name="check" value="4" c:identifier="BD_FS_TECH_MODE_CHECK">
      </member>
      <member name="repair" value="8" c:identifier="BD_FS_TECH_MODE_REPAIR">
      </member>
      <member name="set_label"
              value="16"
              c:identifier="BD_FS_TECH_MODE_SET_LABEL">
      </member>
      <member name="query" value="32" c:identifier="BD_FS_TECH_MODE_QUERY">
      </member>
      <member name="resize" value="64" c:identifier="BD_FS_TECH_MODE_RESIZE">
      </member>
      <member name="set_uuid"
              value="128"
              c:identifier="BD_FS_TECH_MODE_SET_UUID">
      </member>
    </bitfield>
    <record name="FSUdfInfo"
            c:type="BDFSUdfInfo"
            glib:type-name="BDFSUdfInfo"
            glib:get-type="bd_fs_udf_info_get_type"
            c:symbol-prefix="fs_udf_info">
      <source-position filename="lib/plugin_apis/fs.h" line="468"/>
      <field name="label" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="472">label of the filesystem</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="uuid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="473">uuid of the filesystem</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="revision" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="474">UDF revision</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="lvid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="475">Logical Volume Identifier (most UDF implementations use this identifier as a disk label)</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="vid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="476">Volume Identifier</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="block_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="477">block size used by the filesystem</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="block_count" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="478">number of blocks in the filesystem</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="free_blocks" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="479">number of free blocks in the filesystem</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <method name="copy"
              c:identifier="bd_fs_udf_info_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="490">Creates a new copy of @data.</doc>
        <source-position filename="lib/plugin_apis/fs.h" line="496"/>
        <return-value transfer-ownership="full">
          <type name="FSUdfInfo" c:type="BDFSUdfInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/fs.h"
                 line="492">%BDFSUdfInfo to copy</doc>
            <type name="FSUdfInfo" c:type="BDFSUdfInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_fs_udf_info_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="481">Frees @data.</doc>
        <source-position filename="lib/plugin_apis/fs.h" line="487"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/fs.h"
                 line="483">%BDFSUdfInfo to free</doc>
            <type name="FSUdfInfo" c:type="BDFSUdfInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="FSVfatInfo"
            c:type="BDFSVfatInfo"
            glib:type-name="BDFSVfatInfo"
            glib:get-type="bd_fs_vfat_info_get_type"
            c:symbol-prefix="fs_vfat_info">
      <source-position filename="lib/plugin_apis/fs.h" line="201"/>
      <field name="label" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="205">label of the filesystem</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="uuid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="206">uuid of the filesystem</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="cluster_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="207">cluster size used by the filesystem</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="cluster_count" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="208">number of clusters in the filesystem</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="free_cluster_count" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="209">number of free clusters in the filesystem</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <method name="copy"
              c:identifier="bd_fs_vfat_info_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="211">Creates a new copy of @data.</doc>
        <source-position filename="lib/plugin_apis/fs.h" line="217"/>
        <return-value transfer-ownership="full">
          <type name="FSVfatInfo" c:type="BDFSVfatInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/fs.h"
                 line="213">%BDFSVfatInfo to copy</doc>
            <type name="FSVfatInfo" c:type="BDFSVfatInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_fs_vfat_info_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="220">Frees @data.</doc>
        <source-position filename="lib/plugin_apis/fs.h" line="226"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/fs.h"
                 line="222">%BDFSVfatInfo to free</doc>
            <type name="FSVfatInfo" c:type="BDFSVfatInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="FSXfsInfo"
            c:type="BDFSXfsInfo"
            glib:type-name="BDFSXfsInfo"
            glib:get-type="bd_fs_xfs_info_get_type"
            c:symbol-prefix="fs_xfs_info">
      <source-position filename="lib/plugin_apis/fs.h" line="163"/>
      <field name="label" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="167">label of the filesystem</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="uuid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="168">uuid of the filesystem</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="block_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="169">block size used by the filesystem</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="block_count" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="170">number of blocks in the filesystem</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <method name="copy"
              c:identifier="bd_fs_xfs_info_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="172">Creates a new copy of @data.</doc>
        <source-position filename="lib/plugin_apis/fs.h" line="178"/>
        <return-value transfer-ownership="full">
          <type name="FSXfsInfo" c:type="BDFSXfsInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/fs.h"
                 line="174">%BDFSXfsInfo to copy</doc>
            <type name="FSXfsInfo" c:type="BDFSXfsInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_fs_xfs_info_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="181">Frees @data.</doc>
        <source-position filename="lib/plugin_apis/fs.h" line="187"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/fs.h"
                 line="183">%BDFSXfsInfo to free</doc>
            <type name="FSXfsInfo" c:type="BDFSXfsInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="InitError"
                 c:type="BDInitError"
                 glib:error-domain="g-bd-init-error-quark">
      <source-position filename="lib/blockdev.h" line="18"/>
      <member name="failed" value="0" c:identifier="BD_INIT_ERROR_FAILED">
      </member>
      <member name="plugins_failed"
              value="1"
              c:identifier="BD_INIT_ERROR_PLUGINS_FAILED">
      </member>
      <member name="not_implemented"
              value="2"
              c:identifier="BD_INIT_ERROR_NOT_IMPLEMENTED">
      </member>
    </enumeration>
    <enumeration name="LVMCacheMode" c:type="BDLVMCacheMode">
      <source-position filename="lib/plugin_apis/lvm.h" line="45"/>
      <member name="unknown"
              value="0"
              c:identifier="BD_LVM_CACHE_MODE_UNKNOWN">
      </member>
      <member name="writethrough"
              value="1"
              c:identifier="BD_LVM_CACHE_MODE_WRITETHROUGH">
      </member>
      <member name="writeback"
              value="2"
              c:identifier="BD_LVM_CACHE_MODE_WRITEBACK">
      </member>
    </enumeration>
    <bitfield name="LVMCachePoolFlags" c:type="BDLVMCachePoolFlags">
      <source-position filename="lib/plugin_apis/lvm.h" line="39"/>
      <member name="striped"
              value="1"
              c:identifier="BD_LVM_CACHE_POOL_STRIPED">
      </member>
      <member name="raid1" value="2" c:identifier="BD_LVM_CACHE_POOL_RAID1">
      </member>
      <member name="raid5" value="4" c:identifier="BD_LVM_CACHE_POOL_RAID5">
      </member>
      <member name="raid6" value="8" c:identifier="BD_LVM_CACHE_POOL_RAID6">
      </member>
      <member name="raid10" value="16" c:identifier="BD_LVM_CACHE_POOL_RAID10">
      </member>
      <member name="meta_striped"
              value="1024"
              c:identifier="BD_LVM_CACHE_POOL_META_STRIPED">
      </member>
      <member name="meta_raid1"
              value="2048"
              c:identifier="BD_LVM_CACHE_POOL_META_RAID1">
      </member>
      <member name="meta_raid5"
              value="4096"
              c:identifier="BD_LVM_CACHE_POOL_META_RAID5">
      </member>
      <member name="meta_raid6"
              value="8192"
              c:identifier="BD_LVM_CACHE_POOL_META_RAID6">
      </member>
      <member name="meta_raid10"
              value="16384"
              c:identifier="BD_LVM_CACHE_POOL_META_RAID10">
      </member>
    </bitfield>
    <record name="LVMCacheStats"
            c:type="BDLVMCacheStats"
            glib:type-name="BDLVMCacheStats"
            glib:get-type="bd_lvm_cache_stats_get_type"
            c:symbol-prefix="lvm_cache_stats">
      <source-position filename="lib/plugin_apis/lvm.h" line="452"/>
      <field name="block_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="456">block size used by the cache</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="cache_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="457">size of the cache</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="cache_used" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="458">size of the used space in the cache</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="md_block_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="459">block size used for cache metadata</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="md_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="460">size of the metadata space of the cache</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="md_used" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="461">size of the used metadata space in the cache</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="read_hits" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="462">number of read hits</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="read_misses" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="463">number of read misses</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="write_hits" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="464">number of write hits</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="write_misses" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="465">number of write misses</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="mode" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="466">mode the cache is operating in</doc>
        <type name="LVMCacheMode" c:type="BDLVMCacheMode"/>
      </field>
      <method name="copy"
              c:identifier="bd_lvm_cache_stats_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="468">Creates a new copy of @data.</doc>
        <source-position filename="lib/plugin_apis/lvm.h" line="474"/>
        <return-value transfer-ownership="full">
          <type name="LVMCacheStats" c:type="BDLVMCacheStats*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/lvm.h"
                 line="470">%BDLVMCacheStats to copy</doc>
            <type name="LVMCacheStats" c:type="BDLVMCacheStats*"/>
          </instance-parameter>
        </parameters>
      </method>
      <function name="free"
                c:identifier="bd_lvm_cache_stats_free"
                introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="477">Frees @data.</doc>
        <source-position filename="lib/plugin_apis/lvm.h" line="483"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/lvm.h"
                 line="479">%BDLVMCacheStats to free</doc>
            <type name="LVMLVdata" c:type="BDLVMLVdata*"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <enumeration name="LVMError"
                 c:type="BDLVMError"
                 glib:error-domain="g-bd-lvm-error-quark">
      <source-position filename="lib/plugin_apis/lvm.h" line="25"/>
      <member name="tech_unavail"
              value="0"
              c:identifier="BD_LVM_ERROR_TECH_UNAVAIL">
      </member>
      <member name="fail" value="1" c:identifier="BD_LVM_ERROR_FAIL">
      </member>
      <member name="parse" value="2" c:identifier="BD_LVM_ERROR_PARSE">
      </member>
      <member name="noexist" value="3" c:identifier="BD_LVM_ERROR_NOEXIST">
      </member>
      <member name="dm_error" value="4" c:identifier="BD_LVM_ERROR_DM_ERROR">
      </member>
      <member name="not_root" value="5" c:identifier="BD_LVM_ERROR_NOT_ROOT">
      </member>
      <member name="cache_inval"
              value="6"
              c:identifier="BD_LVM_ERROR_CACHE_INVAL">
      </member>
      <member name="cache_nocache"
              value="7"
              c:identifier="BD_LVM_ERROR_CACHE_NOCACHE">
      </member>
      <member name="not_supported"
              value="8"
              c:identifier="BD_LVM_ERROR_NOT_SUPPORTED">
      </member>
      <member name="vdo_policy_inval"
              value="9"
              c:identifier="BD_LVM_ERROR_VDO_POLICY_INVAL">
      </member>
      <member name="devices_disabled"
              value="10"
              c:identifier="BD_LVM_ERROR_DEVICES_DISABLED">
      </member>
    </enumeration>
    <record name="LVMLVdata"
            c:type="BDLVMLVdata"
            glib:type-name="BDLVMLVdata"
            glib:get-type="bd_lvm_lvdata_get_type"
            c:symbol-prefix="lvm_lvdata">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/lvm.h"
           line="275">The @segs, @data_lvs, and @metadata_lvs fields are only filled by a
call to bd_lvm_lvinfo_tree or bd_lvm_lvs_tree.  They are all NULL
normally.  If they are filled, they follow these rules:

A LV is either stored directly on physical volumes, or is made up
of sub-LVs.  If it is stored on PVs, the @segs list is non-empty
and the @data_lvs and @metadata_lvs fields are both NULL.  If it is
made up of sub-LVs, then @segs is NULL, @data_lvs is non-empty and
@metadata_lvs might or might not be empty but is non-NULL.  The
sub-LVs contained in @data_lv and @metadata_lv are always included
in @data_lvs and @metadata_lvs, respectively.

For a partial LV, the @segs list might not be complete; i.e., the
sum of the sizes of the listed segments might not be equal to the
size reported for the LV itself.

Also, the order of entries in @segs must be assumed to be random;
it does not correspond to the order of segments in the logical
volume itself.</doc>
      <source-position filename="lib/plugin_apis/lvm.h" line="273"/>
      <field name="lv_name" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="277">name of the LV</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="vg_name" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="278">name of the VG the LV belongs to</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="uuid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="279">UUID of the LV</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="280">size of the LV</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="attr" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="281">attributes of the LV</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="segtype" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="282">segment type of the LV</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="origin" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="283">origin of the LV (for snapshots, etc.)</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="pool_lv" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="284">pool LV of the LV (for thin and cached LVs)</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="data_lv" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="285">data LV of the LV (for thin and cache pools)</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="metadata_lv" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="286">metadata LV of the LV (for thin and cache pools)</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="roles" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="287">comma separated list of this LV's roles</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="move_pv" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="288">source physical volume of a temporary logical volume created with the pvmove command</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="data_percent" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="289">available data space in a thin pool</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="metadata_percent" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="290">available metadata space in a thin pool</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="copy_percent" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="291">synchronization percentage of a mirrored logical volume</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="lv_tags" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="292">list of LVM tags for this LV</doc>
        <array c:type="gchar**">
          <type name="utf8" c:type="gchar*"/>
        </array>
      </field>
      <field name="data_lvs" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="293">list of data sub-LVs this LV (for raids, etc).</doc>
        <array c:type="gchar**">
          <type name="utf8" c:type="gchar*"/>
        </array>
      </field>
      <field name="metadata_lvs" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="294">list of metadata sub-LVS for this LV (for raids, etc).</doc>
        <array c:type="gchar**">
          <type name="utf8" c:type="gchar*"/>
        </array>
      </field>
      <field name="segs" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="295">The segments of this LV.</doc>
        <array c:type="BDLVMSEGdata**">
          <type name="LVMSEGdata" c:type="BDLVMSEGdata*"/>
        </array>
      </field>
      <method name="copy" c:identifier="bd_lvm_lvdata_copy" introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="317">Creates a new copy of @data.</doc>
        <source-position filename="lib/plugin_apis/lvm.h" line="323"/>
        <return-value transfer-ownership="full">
          <type name="LVMLVdata" c:type="BDLVMLVdata*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/lvm.h"
                 line="319">%BDLVMLVdata to copy</doc>
            <type name="LVMLVdata" c:type="BDLVMLVdata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="bd_lvm_lvdata_free" introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="326">Frees @data.</doc>
        <source-position filename="lib/plugin_apis/lvm.h" line="332"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/lvm.h"
                 line="328">%BDLVMLVdata to free</doc>
            <type name="LVMLVdata" c:type="BDLVMLVdata*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="LVMPVdata"
            c:type="BDLVMPVdata"
            glib:type-name="BDLVMPVdata"
            glib:get-type="bd_lvm_pvdata_get_type"
            c:symbol-prefix="lvm_pvdata">
      <source-position filename="lib/plugin_apis/lvm.h" line="98"/>
      <field name="pv_name" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="102">name of the PV</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="pv_uuid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="103">UUID of the PV</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="pv_free" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="104">size of the free space in the PV</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="pv_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="105">size of the PV</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="pe_start" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="106">start of the physical extents area (i.e. offset of the first PE)</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="vg_name" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="107">name of the VG the PV belongs to</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="vg_uuid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="108">UUID of the VG the PV belongs to</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="vg_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="109">size of the VG the PV belongs to</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="vg_free" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="110">size of the free space in the PV's VG</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="vg_extent_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="111">extent size used by the PV's VG</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="vg_extent_count" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="112">number of extents in the PV's VG</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="vg_free_count" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="113">number of free extents in the PV's VG</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="vg_pv_count" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="114">number of PVs that belong to this PV's VG</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="pv_tags" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="115">list of LVM tags for this PV</doc>
        <array c:type="gchar**">
          <type name="utf8" c:type="gchar*"/>
        </array>
      </field>
      <field name="missing" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="116">whether this PV is missing from the system or not</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <method name="copy" c:identifier="bd_lvm_pvdata_copy" introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="118">Creates a new copy of @data.</doc>
        <source-position filename="lib/plugin_apis/lvm.h" line="124"/>
        <return-value transfer-ownership="full">
          <type name="LVMPVdata" c:type="BDLVMPVdata*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/lvm.h"
                 line="120">%BDLVMPVdata to copy</doc>
            <type name="LVMPVdata" c:type="BDLVMPVdata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="bd_lvm_pvdata_free" introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="127">Frees @data.</doc>
        <source-position filename="lib/plugin_apis/lvm.h" line="133"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/lvm.h"
                 line="129">%BDLVMPVdata to free</doc>
            <type name="LVMPVdata" c:type="BDLVMPVdata*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="LVMSEGdata"
            c:type="BDLVMSEGdata"
            glib:type-name="BDLVMSEGdata"
            glib:get-type="bd_lvm_segdata_get_type"
            c:symbol-prefix="lvm_segdata">
      <source-position filename="lib/plugin_apis/lvm.h" line="194"/>
      <field name="size_pe" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="198">Size of this segment in extents</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="pv_start_pe" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="199">Where it starts in the physical volume in extents</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="pvdev" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="200">Device name of the physical volume or NULL</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <method name="copy"
              c:identifier="bd_lvm_segdata_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="202">Creates a new copy of @data.</doc>
        <source-position filename="lib/plugin_apis/lvm.h" line="208"/>
        <return-value transfer-ownership="full">
          <type name="LVMSEGdata" c:type="BDLVMSEGdata*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/lvm.h"
                 line="204">%BDLVMSEGdata to copy</doc>
            <type name="LVMSEGdata" c:type="BDLVMSEGdata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_lvm_segdata_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="211">Frees @data.</doc>
        <source-position filename="lib/plugin_apis/lvm.h" line="217"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/lvm.h"
                 line="213">%BDLVMSEGdata to free</doc>
            <type name="LVMSEGdata" c:type="BDLVMSEGdata*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="LVMTech" c:type="BDLVMTech">
      <source-position filename="lib/plugin_apis/lvm.h" line="501"/>
      <member name="basic" value="0" c:identifier="BD_LVM_TECH_BASIC">
      </member>
      <member name="basic_snap"
              value="1"
              c:identifier="BD_LVM_TECH_BASIC_SNAP">
      </member>
      <member name="thin" value="2" c:identifier="BD_LVM_TECH_THIN">
      </member>
      <member name="cache" value="3" c:identifier="BD_LVM_TECH_CACHE">
      </member>
      <member name="calcs" value="4" c:identifier="BD_LVM_TECH_CALCS">
      </member>
      <member name="thin_calcs"
              value="5"
              c:identifier="BD_LVM_TECH_THIN_CALCS">
      </member>
      <member name="cache_calcs"
              value="6"
              c:identifier="BD_LVM_TECH_CACHE_CALCS">
      </member>
      <member name="glob_conf" value="7" c:identifier="BD_LVM_TECH_GLOB_CONF">
      </member>
      <member name="vdo" value="8" c:identifier="BD_LVM_TECH_VDO">
      </member>
      <member name="writecache"
              value="9"
              c:identifier="BD_LVM_TECH_WRITECACHE">
      </member>
      <member name="devices" value="10" c:identifier="BD_LVM_TECH_DEVICES">
      </member>
      <member name="shared" value="11" c:identifier="BD_LVM_TECH_SHARED">
      </member>
      <member name="config" value="12" c:identifier="BD_LVM_TECH_CONFIG">
      </member>
    </enumeration>
    <bitfield name="LVMTechMode" c:type="BDLVMTechMode">
      <source-position filename="lib/plugin_apis/lvm.h" line="508"/>
      <member name="create" value="1" c:identifier="BD_LVM_TECH_MODE_CREATE">
      </member>
      <member name="remove" value="4" c:identifier="BD_LVM_TECH_MODE_REMOVE">
      </member>
      <member name="modify" value="8" c:identifier="BD_LVM_TECH_MODE_MODIFY">
      </member>
      <member name="query" value="16" c:identifier="BD_LVM_TECH_MODE_QUERY">
      </member>
    </bitfield>
    <enumeration name="LVMVDOCompressionState"
                 c:type="BDLVMVDOCompressionState">
      <source-position filename="lib/plugin_apis/lvm.h" line="58"/>
      <member name="unknown"
              value="0"
              c:identifier="BD_LVM_VDO_COMPRESSION_UNKNOWN">
      </member>
      <member name="online"
              value="1"
              c:identifier="BD_LVM_VDO_COMPRESSION_ONLINE">
      </member>
      <member name="offline"
              value="2"
              c:identifier="BD_LVM_VDO_COMPRESSION_OFFLINE">
      </member>
    </enumeration>
    <enumeration name="LVMVDOIndexState" c:type="BDLVMVDOIndexState">
      <source-position filename="lib/plugin_apis/lvm.h" line="68"/>
      <member name="unknown" value="0" c:identifier="BD_LVM_VDO_INDEX_UNKNOWN">
      </member>
      <member name="error" value="1" c:identifier="BD_LVM_VDO_INDEX_ERROR">
      </member>
      <member name="closed" value="2" c:identifier="BD_LVM_VDO_INDEX_CLOSED">
      </member>
      <member name="opening" value="3" c:identifier="BD_LVM_VDO_INDEX_OPENING">
      </member>
      <member name="closing" value="4" c:identifier="BD_LVM_VDO_INDEX_CLOSING">
      </member>
      <member name="offline" value="5" c:identifier="BD_LVM_VDO_INDEX_OFFLINE">
      </member>
      <member name="online" value="6" c:identifier="BD_LVM_VDO_INDEX_ONLINE">
      </member>
    </enumeration>
    <enumeration name="LVMVDOOperatingMode" c:type="BDLVMVDOOperatingMode">
      <source-position filename="lib/plugin_apis/lvm.h" line="52"/>
      <member name="unknown" value="0" c:identifier="BD_LVM_VDO_MODE_UNKNOWN">
      </member>
      <member name="recovering"
              value="1"
              c:identifier="BD_LVM_VDO_MODE_RECOVERING">
      </member>
      <member name="read_only"
              value="2"
              c:identifier="BD_LVM_VDO_MODE_READ_ONLY">
      </member>
      <member name="normal" value="3" c:identifier="BD_LVM_VDO_MODE_NORMAL">
      </member>
    </enumeration>
    <record name="LVMVDOPooldata"
            c:type="BDLVMVDOPooldata"
            glib:type-name="BDLVMVDOPooldata"
            glib:get-type="bd_lvm_vdopooldata_get_type"
            c:symbol-prefix="lvm_vdopooldata">
      <source-position filename="lib/plugin_apis/lvm.h" line="351"/>
      <field name="operating_mode" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="355">operating mode of the VDO pool (e.g. %BD_LVM_VDO_MODE_NORMAL)</doc>
        <type name="LVMVDOOperatingMode" c:type="BDLVMVDOOperatingMode"/>
      </field>
      <field name="compression_state" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="356">state of the compression</doc>
        <type name="LVMVDOCompressionState" c:type="BDLVMVDOCompressionState"/>
      </field>
      <field name="index_state" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="357">state of the VDO index</doc>
        <type name="LVMVDOIndexState" c:type="BDLVMVDOIndexState"/>
      </field>
      <field name="write_policy" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="358">write policy of the VDO LV</doc>
        <type name="LVMVDOWritePolicy" c:type="BDLVMVDOWritePolicy"/>
      </field>
      <field name="used_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="359">currently used space</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="saving_percent" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="360">percentage of physical blocks saved</doc>
        <type name="gint32" c:type="gint32"/>
      </field>
      <field name="index_memory_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="361">index memory size of the VDO volume</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="deduplication" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="362">whether deduplication is enabled</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="compression" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="363">whether compression is enabled</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <method name="copy"
              c:identifier="bd_lvm_vdopooldata_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="365">Creates a new copy of @data.</doc>
        <source-position filename="lib/plugin_apis/lvm.h" line="371"/>
        <return-value transfer-ownership="full">
          <type name="LVMVDOPooldata" c:type="BDLVMVDOPooldata*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/lvm.h"
                 line="367">%BDLVMVDOPooldata to copy</doc>
            <type name="LVMVDOPooldata" c:type="BDLVMVDOPooldata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_lvm_vdopooldata_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="374">Frees @data.</doc>
        <source-position filename="lib/plugin_apis/lvm.h" line="380"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/lvm.h"
                 line="376">%BDLVMVDOPooldata to free</doc>
            <type name="LVMVDOPooldata" c:type="BDLVMVDOPooldata*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="LVMVDOStats"
            c:type="BDLVMVDOStats"
            glib:type-name="BDLVMVDOStats"
            glib:get-type="bd_lvm_vdo_stats_get_type"
            c:symbol-prefix="lvm_vdo_stats">
      <source-position filename="lib/plugin_apis/lvm.h" line="398"/>
      <field name="block_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="402">The block size of a VDO volume, in bytes.</doc>
        <type name="gint64" c:type="gint64"/>
      </field>
      <field name="logical_block_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="403">The logical block size, in bytes.</doc>
        <type name="gint64" c:type="gint64"/>
      </field>
      <field name="physical_blocks" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="404">The total number of physical blocks allocated for a VDO volume.</doc>
        <type name="gint64" c:type="gint64"/>
      </field>
      <field name="data_blocks_used" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="405">The number of physical blocks currently in use by a VDO volume
                   to store data.</doc>
        <type name="gint64" c:type="gint64"/>
      </field>
      <field name="overhead_blocks_used" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="407">The number of physical blocks currently in use by a VDO volume
                       to store VDO metadata.</doc>
        <type name="gint64" c:type="gint64"/>
      </field>
      <field name="logical_blocks_used" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="409">The number of logical blocks currently mapped.</doc>
        <type name="gint64" c:type="gint64"/>
      </field>
      <field name="used_percent" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="410">The percentage of physical blocks used on a VDO volume
               (= used blocks / allocated blocks * 100).</doc>
        <type name="gint64" c:type="gint64"/>
      </field>
      <field name="saving_percent" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="412">The percentage of physical blocks saved on a VDO volume
                 (= [logical blocks used - physical blocks used] / logical blocks used).</doc>
        <type name="gint64" c:type="gint64"/>
      </field>
      <field name="write_amplification_ratio" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="414">The average number of block writes to the underlying storage
                            per block written to the VDO device.</doc>
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <method name="copy"
              c:identifier="bd_lvm_vdo_stats_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="417">Creates a new copy of @stats.</doc>
        <source-position filename="lib/plugin_apis/lvm.h" line="423"/>
        <return-value transfer-ownership="full">
          <type name="LVMVDOStats" c:type="BDLVMVDOStats*"/>
        </return-value>
        <parameters>
          <instance-parameter name="stats"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/lvm.h"
                 line="419">%BDLVMVDOStats to copy</doc>
            <type name="LVMVDOStats" c:type="BDLVMVDOStats*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_lvm_vdo_stats_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="426">Frees @stats.</doc>
        <source-position filename="lib/plugin_apis/lvm.h" line="432"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="stats"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/lvm.h"
                 line="428">%BDLVMVDOStats to free</doc>
            <type name="LVMVDOStats" c:type="BDLVMVDOStats*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="LVMVDOWritePolicy" c:type="BDLVMVDOWritePolicy">
      <source-position filename="lib/plugin_apis/lvm.h" line="75"/>
      <member name="unknown"
              value="0"
              c:identifier="BD_LVM_VDO_WRITE_POLICY_UNKNOWN">
      </member>
      <member name="auto"
              value="1"
              c:identifier="BD_LVM_VDO_WRITE_POLICY_AUTO">
      </member>
      <member name="sync"
              value="2"
              c:identifier="BD_LVM_VDO_WRITE_POLICY_SYNC">
      </member>
      <member name="async"
              value="3"
              c:identifier="BD_LVM_VDO_WRITE_POLICY_ASYNC">
      </member>
    </enumeration>
    <record name="LVMVGdata"
            c:type="BDLVMVGdata"
            glib:type-name="BDLVMVGdata"
            glib:get-type="bd_lvm_vgdata_get_type"
            c:symbol-prefix="lvm_vgdata">
      <source-position filename="lib/plugin_apis/lvm.h" line="152"/>
      <field name="name" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="156">name of the VG</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="uuid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="157">UUID of the VG</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="158">size of the VG</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="free" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="159">size of the free space in the VG</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="extent_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="160">extent size used by the VG</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="extent_count" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="161">number of extents in the VG</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="free_count" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="162">number of free extents in the VG</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="pv_count" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="163">number of PVs that belong to the VG</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="exported" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="164">whether the VG is exported or not</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="vg_tags" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="165">list of LVM tags for this VG</doc>
        <array c:type="gchar**">
          <type name="utf8" c:type="gchar*"/>
        </array>
      </field>
      <method name="copy" c:identifier="bd_lvm_vgdata_copy" introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="167">Creates a new copy of @data.</doc>
        <source-position filename="lib/plugin_apis/lvm.h" line="173"/>
        <return-value transfer-ownership="full">
          <type name="LVMVGdata" c:type="BDLVMVGdata*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/lvm.h"
                 line="169">%BDLVMVGdata to copy</doc>
            <type name="LVMVGdata" c:type="BDLVMVGdata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="bd_lvm_vgdata_free" introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="176">Frees @data.</doc>
        <source-position filename="lib/plugin_apis/lvm.h" line="182"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/lvm.h"
                 line="178">%BDLVMVGdata to free</doc>
            <type name="LVMVGdata" c:type="BDLVMVGdata*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="LoopError"
                 c:type="BDLoopError"
                 glib:error-domain="g-bd-loop-error-quark">
      <source-position filename="lib/plugin_apis/loop.h" line="16"/>
      <member name="tech_unavail"
              value="0"
              c:identifier="BD_LOOP_ERROR_TECH_UNAVAIL">
      </member>
      <member name="fail" value="1" c:identifier="BD_LOOP_ERROR_FAIL">
      </member>
      <member name="device" value="2" c:identifier="BD_LOOP_ERROR_DEVICE">
      </member>
    </enumeration>
    <record name="LoopInfo"
            c:type="BDLoopInfo"
            glib:type-name="BDLoopInfo"
            glib:get-type="bd_loop_info_get_type"
            c:symbol-prefix="loop_info">
      <source-position filename="lib/plugin_apis/loop.h" line="52"/>
      <field name="backing_file" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/loop.h"
             line="56">backing file for the give loop device;</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="offset" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/loop.h"
             line="57">offset of the start of the device (in @backing_file);</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="autoclear" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/loop.h"
             line="58">whether the autoclear flag is set or not;</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="direct_io" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/loop.h"
             line="59">whether direct IO is enabled or not;</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="part_scan" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/loop.h"
             line="60">whether the partition scan is enforced or not;</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="read_only" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/loop.h"
             line="61">whether the device is read-only or not;</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <method name="copy" c:identifier="bd_loop_info_copy" introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/loop.h"
             line="72">Creates a new copy of @info.</doc>
        <source-position filename="lib/plugin_apis/loop.h" line="78"/>
        <return-value transfer-ownership="full">
          <type name="LoopInfo" c:type="BDLoopInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/loop.h"
                 line="74">%BDLoopInfo to copy</doc>
            <type name="LoopInfo" c:type="BDLoopInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="bd_loop_info_free" introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/loop.h"
             line="63">Frees @info.</doc>
        <source-position filename="lib/plugin_apis/loop.h" line="69"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/loop.h"
                 line="65">%BDLoopInfo to free</doc>
            <type name="LoopInfo" c:type="BDLoopInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="LoopTech" c:type="BDLoopTech">
      <source-position filename="lib/plugin_apis/loop.h" line="20"/>
      <member name="loop_tech_loop" value="0" c:identifier="BD_LOOP_TECH_LOOP">
      </member>
    </enumeration>
    <bitfield name="LoopTechMode" c:type="BDLoopTechMode">
      <source-position filename="lib/plugin_apis/loop.h" line="27"/>
      <member name="create" value="1" c:identifier="BD_LOOP_TECH_MODE_CREATE">
      </member>
      <member name="destroy"
              value="2"
              c:identifier="BD_LOOP_TECH_MODE_DESTROY">
      </member>
      <member name="modify" value="4" c:identifier="BD_LOOP_TECH_MODE_MODIFY">
      </member>
      <member name="query" value="8" c:identifier="BD_LOOP_TECH_MODE_QUERY">
      </member>
    </bitfield>
    <record name="MDDetailData"
            c:type="BDMDDetailData"
            glib:type-name="BDMDDetailData"
            glib:get-type="bd_md_detail_data_get_type"
            c:symbol-prefix="md_detail_data">
      <source-position filename="lib/plugin_apis/mdraid.h" line="98"/>
      <field name="device" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="102">path of the device</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="metadata" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="103">version of the metadata used by the device</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="creation_time" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="104">creation time</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="level" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="105">level of the MD RAID</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="name" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="106">name of the MD device</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="array_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="107">size of the MD array</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="use_dev_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="108">size of the used space</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="raid_devices" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="109">number of devices in the MD array</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="total_devices" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="110">total number of devices in the MD array</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="active_devices" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="111">number of active devices in the MD array</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="working_devices" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="112">number of working devices in the MD array</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="failed_devices" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="113">number of failed devices in the MD array</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="spare_devices" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="114">number of spare devices in the MD array</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="clean" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="115">whether the MD array is clean or not</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="uuid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="116">uuid of the MD array</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="container" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="117">path of the MD container this device belongs to</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <method name="copy"
              c:identifier="bd_md_detail_data_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="119">Creates a new copy of @data.</doc>
        <source-position filename="lib/plugin_apis/mdraid.h" line="125"/>
        <return-value transfer-ownership="full">
          <type name="MDDetailData" c:type="BDMDDetailData*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/mdraid.h"
                 line="121">%BDMDDetailData to copy</doc>
            <type name="MDDetailData" c:type="BDMDDetailData*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_md_detail_data_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="128">Frees @data.</doc>
        <source-position filename="lib/plugin_apis/mdraid.h" line="134"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/mdraid.h"
                 line="130">%BDMDDetailData to free</doc>
            <type name="MDDetailData" c:type="BDMDDetailData*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="MDError"
                 c:type="BDMDError"
                 glib:error-domain="g-bd-md-error-quark">
      <source-position filename="lib/plugin_apis/mdraid.h" line="24"/>
      <member name="tech_unavail"
              value="0"
              c:identifier="BD_MD_ERROR_TECH_UNAVAIL">
      </member>
      <member name="fail" value="1" c:identifier="BD_MD_ERROR_FAIL">
      </member>
      <member name="parse" value="2" c:identifier="BD_MD_ERROR_PARSE">
      </member>
      <member name="bad_format"
              value="3"
              c:identifier="BD_MD_ERROR_BAD_FORMAT">
      </member>
      <member name="no_match" value="4" c:identifier="BD_MD_ERROR_NO_MATCH">
      </member>
      <member name="inval" value="5" c:identifier="BD_MD_ERROR_INVAL">
      </member>
    </enumeration>
    <record name="MDExamineData"
            c:type="BDMDExamineData"
            glib:type-name="BDMDExamineData"
            glib:get-type="bd_md_examine_data_get_type"
            c:symbol-prefix="md_examine_data">
      <source-position filename="lib/plugin_apis/mdraid.h" line="42"/>
      <field name="device" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="46">path of the MD device</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="level" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="47">RAID level of the device</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="num_devices" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="48">number of devices used by the MD device</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="name" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="49">name of the MD device</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="50">size of the MD device</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="uuid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="51">array UUID</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="update_time" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="52">update time of the MD device</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="dev_uuid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="53">UUID of the member device</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="events" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="54">number of events on the MD device</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="metadata" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="55">version of the metadata used by the MD device</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="chunk_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="56">chunk size used by the MD device</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <method name="copy"
              c:identifier="bd_md_examine_data_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="58">Creates a new copy of @data.</doc>
        <source-position filename="lib/plugin_apis/mdraid.h" line="64"/>
        <return-value transfer-ownership="full">
          <type name="MDExamineData" c:type="BDMDExamineData*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/mdraid.h"
                 line="60">%BDMDExamineData to copy</doc>
            <type name="MDExamineData" c:type="BDMDExamineData*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_md_examine_data_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="67">Frees @data.</doc>
        <source-position filename="lib/plugin_apis/mdraid.h" line="73"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/mdraid.h"
                 line="69">%BDMDExamineData to free</doc>
            <type name="MDExamineData" c:type="BDMDExamineData*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="MDTech" c:type="BDMDTech">
      <source-position filename="lib/plugin_apis/mdraid.h" line="140"/>
      <member name="md_tech_mdraid" value="0" c:identifier="BD_MD_TECH_MDRAID">
      </member>
    </enumeration>
    <bitfield name="MDTechMode" c:type="BDMDTechMode">
      <source-position filename="lib/plugin_apis/mdraid.h" line="147"/>
      <member name="create" value="1" c:identifier="BD_MD_TECH_MODE_CREATE">
      </member>
      <member name="delete" value="2" c:identifier="BD_MD_TECH_MODE_DELETE">
      </member>
      <member name="modify" value="4" c:identifier="BD_MD_TECH_MODE_MODIFY">
      </member>
      <member name="query" value="8" c:identifier="BD_MD_TECH_MODE_QUERY">
      </member>
    </bitfield>
    <constant name="MD_CHUNK_SIZE" value="524288" c:type="BD_MD_CHUNK_SIZE">
      <source-position filename="lib/plugin_apis/mdraid.h" line="11"/>
      <type name="guint64" c:type="guint64"/>
    </constant>
    <constant name="MD_SUPERBLOCK_SIZE"
              value="2097152"
              c:type="BD_MD_SUPERBLOCK_SIZE">
      <source-position filename="lib/plugin_apis/mdraid.h" line="10"/>
      <type name="guint64" c:type="guint64"/>
    </constant>
    <enumeration name="MpathError"
                 c:type="BDMpathError"
                 glib:error-domain="g-bd-mpath-error-quark">
      <source-position filename="lib/plugin_apis/mpath.h" line="18"/>
      <member name="tech_unavail"
              value="0"
              c:identifier="BD_MPATH_ERROR_TECH_UNAVAIL">
      </member>
      <member name="inval" value="1" c:identifier="BD_MPATH_ERROR_INVAL">
      </member>
      <member name="flush" value="2" c:identifier="BD_MPATH_ERROR_FLUSH">
      </member>
      <member name="not_root" value="3" c:identifier="BD_MPATH_ERROR_NOT_ROOT">
      </member>
      <member name="dm_error" value="4" c:identifier="BD_MPATH_ERROR_DM_ERROR">
      </member>
    </enumeration>
    <enumeration name="MpathTech" c:type="BDMpathTech">
      <source-position filename="lib/plugin_apis/mpath.h" line="23"/>
      <member name="base" value="0" c:identifier="BD_MPATH_TECH_BASE">
      </member>
      <member name="friendly_names"
              value="1"
              c:identifier="BD_MPATH_TECH_FRIENDLY_NAMES">
      </member>
    </enumeration>
    <bitfield name="MpathTechMode" c:type="BDMpathTechMode">
      <source-position filename="lib/plugin_apis/mpath.h" line="28"/>
      <member name="query" value="1" c:identifier="BD_MPATH_TECH_MODE_QUERY">
      </member>
      <member name="modify" value="2" c:identifier="BD_MPATH_TECH_MODE_MODIFY">
      </member>
    </bitfield>
    <enumeration name="NVDIMMError"
                 c:type="BDNVDIMMError"
                 glib:error-domain="g-bd-nvdimm-error-quark">
      <source-position filename="lib/plugin_apis/nvdimm.h" line="19"/>
      <member name="tech_unavail"
              value="0"
              c:identifier="BD_NVDIMM_ERROR_TECH_UNAVAIL">
      </member>
      <member name="namespace_fail"
              value="1"
              c:identifier="BD_NVDIMM_ERROR_NAMESPACE_FAIL">
      </member>
      <member name="namespace_parse"
              value="2"
              c:identifier="BD_NVDIMM_ERROR_NAMESPACE_PARSE">
      </member>
      <member name="namespace_noexist"
              value="3"
              c:identifier="BD_NVDIMM_ERROR_NAMESPACE_NOEXIST">
      </member>
      <member name="namespace_mode_inval"
              value="4"
              c:identifier="BD_NVDIMM_ERROR_NAMESPACE_MODE_INVAL">
      </member>
    </enumeration>
    <record name="NVDIMMNamespaceInfo"
            c:type="BDNVDIMMNamespaceInfo"
            glib:type-name="BDNVDIMMNamespaceInfo"
            glib:get-type="bd_nvdimm_namespace_info_get_type"
            c:symbol-prefix="nvdimm_namespace_info">
      <source-position filename="lib/plugin_apis/nvdimm.h" line="43"/>
      <field name="dev" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvdimm.h"
             line="47">namespace device name ("namespaceX.Y")</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="mode" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvdimm.h"
             line="48">mode of the namespace (BDNVDIMMNamespaceMode)</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvdimm.h"
             line="49">size of the namespace</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="uuid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvdimm.h"
             line="50">UUID of the namespace</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="sector_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvdimm.h"
             line="51">sector size of the namespace (0 for non-sector namespaces)</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="blockdev" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvdimm.h"
             line="52">name of the block device for the namespace</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="enabled" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvdimm.h"
             line="53">whether the namespace is enabled or not</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <method name="copy"
              c:identifier="bd_nvdimm_namespace_info_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvdimm.h"
             line="64">Creates a new copy of @info.</doc>
        <source-position filename="lib/plugin_apis/nvdimm.h" line="70"/>
        <return-value transfer-ownership="full">
          <type name="NVDIMMNamespaceInfo" c:type="BDNVDIMMNamespaceInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/nvdimm.h"
                 line="66">%BDNVDIMMNamespaceInfo to copy</doc>
            <type name="NVDIMMNamespaceInfo" c:type="BDNVDIMMNamespaceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_nvdimm_namespace_info_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvdimm.h"
             line="55">Frees @info.</doc>
        <source-position filename="lib/plugin_apis/nvdimm.h" line="61"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/nvdimm.h"
                 line="57">%BDNVDIMMNamespaceInfo to free</doc>
            <type name="NVDIMMNamespaceInfo" c:type="BDNVDIMMNamespaceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="NVDIMMNamespaceMode" c:type="BDNVDIMMNamespaceMode">
      <source-position filename="lib/plugin_apis/nvdimm.h" line="29"/>
      <member name="raw" value="0" c:identifier="BD_NVDIMM_NAMESPACE_MODE_RAW">
      </member>
      <member name="sector"
              value="1"
              c:identifier="BD_NVDIMM_NAMESPACE_MODE_SECTOR">
      </member>
      <member name="memory"
              value="2"
              c:identifier="BD_NVDIMM_NAMESPACE_MODE_MEMORY">
      </member>
      <member name="dax" value="3" c:identifier="BD_NVDIMM_NAMESPACE_MODE_DAX">
      </member>
      <member name="fsdax"
              value="4"
              c:identifier="BD_NVDIMM_NAMESPACE_MODE_FSDAX">
      </member>
      <member name="devdax"
              value="5"
              c:identifier="BD_NVDIMM_NAMESPACE_MODE_DEVDAX">
      </member>
      <member name="unknown"
              value="6"
              c:identifier="BD_NVDIMM_NAMESPACE_MODE_UNKNOWN">
      </member>
    </enumeration>
    <enumeration name="NVDIMMTech" c:type="BDNVDIMMTech">
      <source-position filename="lib/plugin_apis/nvdimm.h" line="76"/>
      <member name="nvdimm_tech_namespace"
              value="0"
              c:identifier="BD_NVDIMM_TECH_NAMESPACE">
      </member>
    </enumeration>
    <bitfield name="NVDIMMTechMode" c:type="BDNVDIMMTechMode">
      <source-position filename="lib/plugin_apis/nvdimm.h" line="84"/>
      <member name="create"
              value="1"
              c:identifier="BD_NVDIMM_TECH_MODE_CREATE">
      </member>
      <member name="remove"
              value="2"
              c:identifier="BD_NVDIMM_TECH_MODE_REMOVE">
      </member>
      <member name="activate_deactivate"
              value="4"
              c:identifier="BD_NVDIMM_TECH_MODE_ACTIVATE_DEACTIVATE">
      </member>
      <member name="query" value="8" c:identifier="BD_NVDIMM_TECH_MODE_QUERY">
      </member>
      <member name="reconfigure"
              value="16"
              c:identifier="BD_NVDIMM_TECH_MODE_RECONFIGURE">
      </member>
    </bitfield>
    <bitfield name="NVMEControllerFeature" c:type="BDNVMEControllerFeature">
      <source-position filename="lib/plugin_apis/nvme.h" line="78"/>
      <member name="multiport"
              value="1"
              c:identifier="BD_NVME_CTRL_FEAT_MULTIPORT">
      </member>
      <member name="multictrl"
              value="2"
              c:identifier="BD_NVME_CTRL_FEAT_MULTICTRL">
      </member>
      <member name="sriov" value="4" c:identifier="BD_NVME_CTRL_FEAT_SRIOV">
      </member>
      <member name="ana_reporting"
              value="8"
              c:identifier="BD_NVME_CTRL_FEAT_ANA_REPORTING">
      </member>
      <member name="format" value="16" c:identifier="BD_NVME_CTRL_FEAT_FORMAT">
      </member>
      <member name="format_all_ns"
              value="32"
              c:identifier="BD_NVME_CTRL_FEAT_FORMAT_ALL_NS">
      </member>
      <member name="ns_mgmt"
              value="64"
              c:identifier="BD_NVME_CTRL_FEAT_NS_MGMT">
      </member>
      <member name="selftest"
              value="128"
              c:identifier="BD_NVME_CTRL_FEAT_SELFTEST">
      </member>
      <member name="selftest_single"
              value="256"
              c:identifier="BD_NVME_CTRL_FEAT_SELFTEST_SINGLE">
      </member>
      <member name="sanitize_crypto"
              value="512"
              c:identifier="BD_NVME_CTRL_FEAT_SANITIZE_CRYPTO">
      </member>
      <member name="sanitize_block"
              value="1024"
              c:identifier="BD_NVME_CTRL_FEAT_SANITIZE_BLOCK">
      </member>
      <member name="sanitize_overwrite"
              value="2048"
              c:identifier="BD_NVME_CTRL_FEAT_SANITIZE_OVERWRITE">
      </member>
      <member name="secure_erase_all_ns"
              value="4096"
              c:identifier="BD_NVME_CTRL_FEAT_SECURE_ERASE_ALL_NS">
      </member>
      <member name="secure_erase_crypto"
              value="8192"
              c:identifier="BD_NVME_CTRL_FEAT_SECURE_ERASE_CRYPTO">
      </member>
      <member name="storage_device"
              value="16384"
              c:identifier="BD_NVME_CTRL_FEAT_STORAGE_DEVICE">
      </member>
      <member name="enclosure"
              value="32768"
              c:identifier="BD_NVME_CTRL_FEAT_ENCLOSURE">
      </member>
      <member name="mgmt_pcie"
              value="65536"
              c:identifier="BD_NVME_CTRL_FEAT_MGMT_PCIE">
      </member>
      <member name="mgmt_smbus"
              value="131072"
              c:identifier="BD_NVME_CTRL_FEAT_MGMT_SMBUS">
      </member>
    </bitfield>
    <record name="NVMEControllerInfo"
            c:type="BDNVMEControllerInfo"
            glib:type-name="BDNVMEControllerInfo"
            glib:get-type="bd_nvme_controller_info_get_type"
            c:symbol-prefix="nvme_controller_info">
      <source-position filename="lib/plugin_apis/nvme.h" line="109"/>
      <field name="pci_vendor_id" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="113">The PCI Vendor ID.</doc>
        <type name="guint16" c:type="guint16"/>
      </field>
      <field name="pci_subsys_vendor_id" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="114">The PCI Subsystem Vendor ID.</doc>
        <type name="guint16" c:type="guint16"/>
      </field>
      <field name="ctrl_id" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="115">Controller ID, the NVM subsystem unique controller identifier associated with the controller.</doc>
        <type name="guint16" c:type="guint16"/>
      </field>
      <field name="fguid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="116">FRU GUID, a 128-bit value that is globally unique for a given Field Replaceable Unit.</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="model_number" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="117">The model number.</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="serial_number" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="118">The serial number.</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="firmware_ver" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="119">The currently active firmware revision.</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="nvme_ver" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="120">The NVM Express base specification that the controller implementation supports or %NULL when not reported by the device.</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="features" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="121">features and capabilities present for this controller, see #BDNVMEControllerFeature.</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="controller_type" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="122">The controller type.</doc>
        <type name="NVMEControllerType" c:type="BDNVMEControllerType"/>
      </field>
      <field name="selftest_ext_time" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="123">Extended Device Self-test Time, if #BD_NVME_CTRL_FEAT_SELFTEST is supported then this field
                    indicates the nominal amount of time in one minute units that the controller takes
                    to complete an extended device self-test operation when in power state 0.</doc>
        <type name="gint" c:type="gint"/>
      </field>
      <field name="hmb_pref_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="126">Host Memory Buffer Preferred Size indicates the preferred size that the host
                is requested to allocate for the Host Memory Buffer feature in bytes.</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="hmb_min_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="128">Host Memory Buffer Minimum Size indicates the minimum size that the host
               is requested to allocate for the Host Memory Buffer feature in bytes.</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="size_total" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="130">Total NVM Capacity in the NVM subsystem in bytes.</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="size_unalloc" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="131">Unallocated NVM Capacity in the NVM subsystem in bytes.</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="num_namespaces" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="132">Maximum Number of Allowed Namespaces supported by the NVM subsystem.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="subsysnqn" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="133">NVM Subsystem NVMe Qualified Name, UTF-8 null terminated string.</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <method name="copy"
              c:identifier="bd_nvme_controller_info_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="144">Creates a new copy of @info.</doc>
        <source-position filename="lib/plugin_apis/nvme.h" line="150"/>
        <return-value transfer-ownership="full">
          <type name="NVMEControllerInfo" c:type="BDNVMEControllerInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/nvme.h"
                 line="146">%BDNVMEControllerInfo to copy</doc>
            <type name="NVMEControllerInfo" c:type="BDNVMEControllerInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_nvme_controller_info_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="135">Frees @info.</doc>
        <source-position filename="lib/plugin_apis/nvme.h" line="141"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/nvme.h"
                 line="137">%BDNVMEControllerInfo to free</doc>
            <type name="NVMEControllerInfo" c:type="BDNVMEControllerInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="NVMEControllerType" c:type="BDNVMEControllerType">
      <source-position filename="lib/plugin_apis/nvme.h" line="85"/>
      <member name="unknown"
              value="0"
              c:identifier="BD_NVME_CTRL_TYPE_UNKNOWN">
      </member>
      <member name="io" value="1" c:identifier="BD_NVME_CTRL_TYPE_IO">
      </member>
      <member name="discovery"
              value="2"
              c:identifier="BD_NVME_CTRL_TYPE_DISCOVERY">
      </member>
      <member name="admin" value="3" c:identifier="BD_NVME_CTRL_TYPE_ADMIN">
      </member>
    </enumeration>
    <enumeration name="NVMEError"
                 c:type="BDNVMEError"
                 glib:error-domain="g-bd-nvme-error-quark">
      <source-position filename="lib/plugin_apis/nvme.h" line="33"/>
      <member name="tech_unavail"
              value="0"
              c:identifier="BD_NVME_ERROR_TECH_UNAVAIL">
      </member>
      <member name="failed" value="1" c:identifier="BD_NVME_ERROR_FAILED">
      </member>
      <member name="busy" value="2" c:identifier="BD_NVME_ERROR_BUSY">
      </member>
      <member name="invalid_argument"
              value="3"
              c:identifier="BD_NVME_ERROR_INVALID_ARGUMENT">
      </member>
      <member name="would_format_all_ns"
              value="4"
              c:identifier="BD_NVME_ERROR_WOULD_FORMAT_ALL_NS">
      </member>
      <member name="sc_generic"
              value="5"
              c:identifier="BD_NVME_ERROR_SC_GENERIC">
      </member>
      <member name="sc_cmd_specific"
              value="6"
              c:identifier="BD_NVME_ERROR_SC_CMD_SPECIFIC">
      </member>
      <member name="sc_media" value="7" c:identifier="BD_NVME_ERROR_SC_MEDIA">
      </member>
      <member name="sc_path" value="8" c:identifier="BD_NVME_ERROR_SC_PATH">
      </member>
      <member name="sc_vendor_specific"
              value="9"
              c:identifier="BD_NVME_ERROR_SC_VENDOR_SPECIFIC">
      </member>
      <member name="no_match" value="10" c:identifier="BD_NVME_ERROR_NO_MATCH">
      </member>
      <member name="connect" value="11" c:identifier="BD_NVME_ERROR_CONNECT">
      </member>
      <member name="connect_already"
              value="12"
              c:identifier="BD_NVME_ERROR_CONNECT_ALREADY">
      </member>
      <member name="connect_invalid"
              value="13"
              c:identifier="BD_NVME_ERROR_CONNECT_INVALID">
      </member>
      <member name="connect_addrinuse"
              value="14"
              c:identifier="BD_NVME_ERROR_CONNECT_ADDRINUSE">
      </member>
      <member name="connect_nodev"
              value="15"
              c:identifier="BD_NVME_ERROR_CONNECT_NODEV">
      </member>
      <member name="connect_opnotsupp"
              value="16"
              c:identifier="BD_NVME_ERROR_CONNECT_OPNOTSUPP">
      </member>
      <member name="connect_refused"
              value="17"
              c:identifier="BD_NVME_ERROR_CONNECT_REFUSED">
      </member>
    </enumeration>
    <record name="NVMEErrorLogEntry"
            c:type="BDNVMEErrorLogEntry"
            glib:type-name="BDNVMEErrorLogEntry"
            glib:get-type="bd_nvme_error_log_entry_get_type"
            c:symbol-prefix="nvme_error_log_entry">
      <source-position filename="lib/plugin_apis/nvme.h" line="385"/>
      <field name="error_count" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="389">internal error counter, a unique identifier for the error.</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="command_id" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="390">the Command Identifier of the command that the error is associated with or `0xffff` if the error is not specific to a particular command.</doc>
        <type name="guint16" c:type="guint16"/>
      </field>
      <field name="command_specific" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="391">Command Specific Information specific to @command_id.</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="command_status" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="392">the Status code for the command that completed.</doc>
        <type name="guint16" c:type="guint16"/>
      </field>
      <field name="command_error" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="393">translated command error in the BD_NVME_ERROR domain or %NULL in case @command_status indicates success.</doc>
        <type name="GLib.Error" c:type="GError*"/>
      </field>
      <field name="lba" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="394">the first LBA that experienced the error condition.</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="nsid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="395">the NSID of the namespace that the error is associated with.</doc>
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="transport_type" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="396">type of the transport associated with the error.</doc>
        <type name="NVMETransportType" c:type="BDNVMETransportType"/>
      </field>
      <method name="copy"
              c:identifier="bd_nvme_error_log_entry_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="407">Creates a new copy of @entry.</doc>
        <source-position filename="lib/plugin_apis/nvme.h" line="413"/>
        <return-value transfer-ownership="full">
          <type name="NVMEErrorLogEntry" c:type="BDNVMEErrorLogEntry*"/>
        </return-value>
        <parameters>
          <instance-parameter name="entry"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/nvme.h"
                 line="409">%BDNVMEErrorLogEntry to copy</doc>
            <type name="NVMEErrorLogEntry" c:type="BDNVMEErrorLogEntry*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_nvme_error_log_entry_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="398">Frees @entry.</doc>
        <source-position filename="lib/plugin_apis/nvme.h" line="404"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="entry"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/nvme.h"
                 line="400">%BDNVMEErrorLogEntry to free</doc>
            <type name="NVMEErrorLogEntry" c:type="BDNVMEErrorLogEntry*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="NVMEFormatSecureErase" c:type="BDNVMEFormatSecureErase">
      <source-position filename="lib/plugin_apis/nvme.h" line="534"/>
      <member name="none"
              value="0"
              c:identifier="BD_NVME_FORMAT_SECURE_ERASE_NONE">
      </member>
      <member name="user_data"
              value="1"
              c:identifier="BD_NVME_FORMAT_SECURE_ERASE_USER_DATA">
      </member>
      <member name="crypto"
              value="2"
              c:identifier="BD_NVME_FORMAT_SECURE_ERASE_CRYPTO">
      </member>
    </enumeration>
    <record name="NVMELBAFormat"
            c:type="BDNVMELBAFormat"
            glib:type-name="BDNVMELBAFormat"
            glib:get-type="bd_nvme_lba_format_get_type"
            c:symbol-prefix="nvme_lba_format">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/nvme.h"
           line="173">Namespace LBA Format Data Structure.</doc>
      <source-position filename="lib/plugin_apis/nvme.h" line="171"/>
      <field name="data_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="176">LBA data size (i.e. a sector size) in bytes.</doc>
        <type name="guint16" c:type="guint16"/>
      </field>
      <field name="metadata_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="177">metadata size in bytes or `0` in case of no metadata support.</doc>
        <type name="guint16" c:type="guint16"/>
      </field>
      <field name="relative_performance" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="178">Relative Performance index, see #BDNVMELBAFormatRelativePerformance.</doc>
        <type name="NVMELBAFormatRelativePerformance"
              c:type="BDNVMELBAFormatRelativePerformance"/>
      </field>
      <method name="copy"
              c:identifier="bd_nvme_lba_format_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="189">Creates a new copy of @fmt.</doc>
        <source-position filename="lib/plugin_apis/nvme.h" line="195"/>
        <return-value transfer-ownership="full">
          <type name="NVMELBAFormat" c:type="BDNVMELBAFormat*"/>
        </return-value>
        <parameters>
          <instance-parameter name="fmt"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/nvme.h"
                 line="191">%BDNVMELBAFormat to copy</doc>
            <type name="NVMELBAFormat" c:type="BDNVMELBAFormat*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_nvme_lba_format_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="180">Frees @fmt.</doc>
        <source-position filename="lib/plugin_apis/nvme.h" line="186"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="fmt"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/nvme.h"
                 line="182">%BDNVMELBAFormat to free</doc>
            <type name="NVMELBAFormat" c:type="BDNVMELBAFormat*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="NVMELBAFormatRelativePerformance"
                 c:type="BDNVMELBAFormatRelativePerformance">
      <source-position filename="lib/plugin_apis/nvme.h" line="161"/>
      <member name="unknown"
              value="0"
              c:identifier="BD_NVME_LBA_FORMAT_RELATIVE_PERFORMANCE_UNKNOWN">
      </member>
      <member name="best"
              value="1"
              c:identifier="BD_NVME_LBA_FORMAT_RELATIVE_PERFORMANCE_BEST">
      </member>
      <member name="better"
              value="2"
              c:identifier="BD_NVME_LBA_FORMAT_RELATIVE_PERFORMANCE_BETTER">
      </member>
      <member name="good"
              value="3"
              c:identifier="BD_NVME_LBA_FORMAT_RELATIVE_PERFORMANCE_GOOD">
      </member>
      <member name="degraded"
              value="4"
              c:identifier="BD_NVME_LBA_FORMAT_RELATIVE_PERFORMANCE_DEGRADED">
      </member>
    </enumeration>
    <bitfield name="NVMENamespaceFeature" c:type="BDNVMENamespaceFeature">
      <source-position filename="lib/plugin_apis/nvme.h" line="204"/>
      <member name="thin" value="1" c:identifier="BD_NVME_NS_FEAT_THIN">
      </member>
      <member name="multipath_shared"
              value="2"
              c:identifier="BD_NVME_NS_FEAT_MULTIPATH_SHARED">
      </member>
      <member name="format_progress"
              value="4"
              c:identifier="BD_NVME_NS_FEAT_FORMAT_PROGRESS">
      </member>
      <member name="rotational"
              value="8"
              c:identifier="BD_NVME_NS_FEAT_ROTATIONAL">
      </member>
    </bitfield>
    <record name="NVMENamespaceInfo"
            c:type="BDNVMENamespaceInfo"
            glib:type-name="BDNVMENamespaceInfo"
            glib:get-type="bd_nvme_namespace_info_get_type"
            c:symbol-prefix="nvme_namespace_info">
      <source-position filename="lib/plugin_apis/nvme.h" line="223"/>
      <field name="nsid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="227">The Namespace Identifier (NSID).</doc>
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="eui64" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="228">IEEE Extended Unique Identifier: a 64-bit IEEE Extended Unique Identifier (EUI-64)
        that is globally unique and assigned to the namespace when the namespace is created.
        Remains fixed throughout the life of the namespace and is preserved across namespace
        and controller operations.</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="uuid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="235">Namespace 128-bit Universally Unique Identifier (UUID) as specified in RFC 4122.</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="nguid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="232">Namespace Globally Unique Identifier: a 128-bit value that is globally unique and
        assigned to the namespace when the namespace is created. Remains fixed throughout
        the life of the namespace and is preserved across namespace and controller operations.</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="nsize" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="236">Namespace Size: total size of the namespace in logical blocks. The number of logical blocks
        is based on the formatted LBA size (see @current_lba_format).</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="ncap" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="238">Namespace Capacity: maximum number of logical blocks that may be allocated in the namespace
       at any point in time. The number of logical blocks is based on the formatted LBA size (see @current_lba_format).</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="nuse" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="240">Namespace Utilization: current number of logical blocks allocated in the namespace.
       This field is smaller than or equal to the Namespace Capacity. The number of logical
       blocks is based on the formatted LBA size (see @current_lba_format).</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="features" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="243">features and capabilities present for this namespace, see #BDNVMENamespaceFeature.</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="format_progress_remaining" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="244">The percentage value remaining of a format operation in progress.</doc>
        <type name="guint8" c:type="guint8"/>
      </field>
      <field name="write_protected" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="245">%TRUE if the namespace is currently write protected and all write access to the namespace shall fail.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="lba_formats" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="246">A list of supported LBA Formats.</doc>
        <array c:type="BDNVMELBAFormat**">
          <type name="NVMELBAFormat" c:type="BDNVMELBAFormat*"/>
        </array>
      </field>
      <field name="current_lba_format" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="247">A LBA Format currently used for the namespace. Contains zeroes in case of
                     an invalid or no supported LBA Format reported.</doc>
        <type name="NVMELBAFormat" c:type="BDNVMELBAFormat"/>
      </field>
      <method name="copy"
              c:identifier="bd_nvme_namespace_info_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="259">Creates a new copy of @info.</doc>
        <source-position filename="lib/plugin_apis/nvme.h" line="265"/>
        <return-value transfer-ownership="full">
          <type name="NVMENamespaceInfo" c:type="BDNVMENamespaceInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/nvme.h"
                 line="261">%BDNVMENamespaceInfo to copy</doc>
            <type name="NVMENamespaceInfo" c:type="BDNVMENamespaceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_nvme_namespace_info_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="250">Frees @info.</doc>
        <source-position filename="lib/plugin_apis/nvme.h" line="256"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/nvme.h"
                 line="252">%BDNVMENamespaceInfo to free</doc>
            <type name="NVMENamespaceInfo" c:type="BDNVMENamespaceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="NVMESanitizeAction" c:type="BDNVMESanitizeAction">
      <source-position filename="lib/plugin_apis/nvme.h" line="614"/>
      <member name="exit_failure"
              value="0"
              c:identifier="BD_NVME_SANITIZE_ACTION_EXIT_FAILURE">
      </member>
      <member name="block_erase"
              value="1"
              c:identifier="BD_NVME_SANITIZE_ACTION_BLOCK_ERASE">
      </member>
      <member name="overwrite"
              value="2"
              c:identifier="BD_NVME_SANITIZE_ACTION_OVERWRITE">
      </member>
      <member name="crypto_erase"
              value="3"
              c:identifier="BD_NVME_SANITIZE_ACTION_CRYPTO_ERASE">
      </member>
    </enumeration>
    <record name="NVMESanitizeLog"
            c:type="BDNVMESanitizeLog"
            glib:type-name="BDNVMESanitizeLog"
            glib:get-type="bd_nvme_sanitize_log_get_type"
            c:symbol-prefix="nvme_sanitize_log">
      <source-position filename="lib/plugin_apis/nvme.h" line="561"/>
      <field name="sanitize_progress" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="565">The percentage complete of the sanitize operation.</doc>
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="sanitize_status" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="566">The status of the most recent sanitize operation.</doc>
        <type name="NVMESanitizeStatus" c:type="BDNVMESanitizeStatus"/>
      </field>
      <field name="global_data_erased" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="567">Indicates that no user data has been written either since the drive was manufactured and
                     has never been sanitized or since the most recent successful sanitize operation.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="overwrite_passes" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="569">Number of completed passes if the most recent sanitize operation was an Overwrite.</doc>
        <type name="guint8" c:type="guint8"/>
      </field>
      <field name="time_for_overwrite" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="570">Estimated time in seconds needed to complete an Overwrite sanitize operation with 16 passes in the background.
                     A value of -1 means that no time estimate is reported. A value of 0 means that the operation is expected
                     to be completed in the background when the Sanitize command is completed.</doc>
        <type name="gint64" c:type="gint64"/>
      </field>
      <field name="time_for_block_erase" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="573">Estimated time in seconds needed to complete a Block Erase sanitize operation in the background.
                       A value of -1 means that no time estimate is reported. A value of 0 means that the operation is expected
                       to be completed in the background when the Sanitize command is completed.</doc>
        <type name="gint64" c:type="gint64"/>
      </field>
      <field name="time_for_crypto_erase" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="576">Estimated time in seconds needed to complete a Crypto Erase sanitize operation in the background.
                        A value of -1 means that no time estimate is reported. A value of 0 means that the operation is expected
                        to be completed in the background when the Sanitize command is completed.</doc>
        <type name="gint64" c:type="gint64"/>
      </field>
      <field name="time_for_overwrite_nd" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="579">Estimated time in seconds needed to complete an Overwrite sanitize operation and the associated
                        additional media modification in the background when the No-Deallocate After Sanitize or
                        the No-Deallocate Modifies Media After Sanitize features have been requested.</doc>
        <type name="gint64" c:type="gint64"/>
      </field>
      <field name="time_for_block_erase_nd" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="582">Estimated time in seconds needed to complete a Block Erase sanitize operation and the associated
                          additional media modification in the background when the No-Deallocate After Sanitize or
                          the No-Deallocate Modifies Media After Sanitize features have been requested.</doc>
        <type name="gint64" c:type="gint64"/>
      </field>
      <field name="time_for_crypto_erase_nd" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="585">Estimated time in seconds needed to complete a Crypto Erase sanitize operation and the associated
                           additional media modification in the background when the No-Deallocate After Sanitize or
                           the No-Deallocate Modifies Media After Sanitize features have been requested.</doc>
        <type name="gint64" c:type="gint64"/>
      </field>
      <method name="copy"
              c:identifier="bd_nvme_sanitize_log_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="598">Creates a new copy of @log.</doc>
        <source-position filename="lib/plugin_apis/nvme.h" line="604"/>
        <return-value transfer-ownership="full">
          <type name="NVMESanitizeLog" c:type="BDNVMESanitizeLog*"/>
        </return-value>
        <parameters>
          <instance-parameter name="log"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/nvme.h"
                 line="600">%BDNVMESanitizeLog to copy</doc>
            <type name="NVMESanitizeLog" c:type="BDNVMESanitizeLog*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_nvme_sanitize_log_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="589">Frees @log.</doc>
        <source-position filename="lib/plugin_apis/nvme.h" line="595"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="log"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/nvme.h"
                 line="591">%BDNVMESanitizeLog to free</doc>
            <type name="NVMESanitizeLog" c:type="BDNVMESanitizeLog*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="NVMESanitizeStatus" c:type="BDNVMESanitizeStatus">
      <source-position filename="lib/plugin_apis/nvme.h" line="543"/>
      <member name="never_sanitized"
              value="0"
              c:identifier="BD_NVME_SANITIZE_STATUS_NEVER_SANITIZED">
      </member>
      <member name="in_progess"
              value="1"
              c:identifier="BD_NVME_SANITIZE_STATUS_IN_PROGESS">
      </member>
      <member name="success"
              value="2"
              c:identifier="BD_NVME_SANITIZE_STATUS_SUCCESS">
      </member>
      <member name="success_no_dealloc"
              value="3"
              c:identifier="BD_NVME_SANITIZE_STATUS_SUCCESS_NO_DEALLOC">
      </member>
      <member name="failed"
              value="4"
              c:identifier="BD_NVME_SANITIZE_STATUS_FAILED">
      </member>
    </enumeration>
    <enumeration name="NVMESelfTestAction" c:type="BDNVMESelfTestAction">
      <source-position filename="lib/plugin_apis/nvme.h" line="424"/>
      <member name="not_running"
              value="0"
              c:identifier="BD_NVME_SELF_TEST_ACTION_NOT_RUNNING">
      </member>
      <member name="short"
              value="1"
              c:identifier="BD_NVME_SELF_TEST_ACTION_SHORT">
      </member>
      <member name="extended"
              value="2"
              c:identifier="BD_NVME_SELF_TEST_ACTION_EXTENDED">
      </member>
      <member name="vendor_specific"
              value="3"
              c:identifier="BD_NVME_SELF_TEST_ACTION_VENDOR_SPECIFIC">
      </member>
      <member name="abort"
              value="4"
              c:identifier="BD_NVME_SELF_TEST_ACTION_ABORT">
      </member>
    </enumeration>
    <record name="NVMESelfTestLog"
            c:type="BDNVMESelfTestLog"
            glib:type-name="BDNVMESelfTestLog"
            glib:get-type="bd_nvme_self_test_log_get_type"
            c:symbol-prefix="nvme_self_test_log">
      <source-position filename="lib/plugin_apis/nvme.h" line="502"/>
      <field name="current_operation" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="506">Current running device self-test operation. There's no corresponding record in @entries for a device self-test operation that is in progress.</doc>
        <type name="NVMESelfTestAction" c:type="BDNVMESelfTestAction"/>
      </field>
      <field name="current_operation_completion" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="507">Percentage of the currently running device self-test operation. Only valid when @current_operation is other than #BD_NVME_SELF_TEST_ACTION_NOT_RUNNING.</doc>
        <type name="guint8" c:type="guint8"/>
      </field>
      <field name="entries" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="508">Self-test log entries for the last 20 operations, sorted from newest (first element) to oldest.</doc>
        <array c:type="BDNVMESelfTestLogEntry**">
          <type name="NVMESelfTestLogEntry" c:type="BDNVMESelfTestLogEntry*"/>
        </array>
      </field>
      <method name="copy"
              c:identifier="bd_nvme_self_test_log_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="519">Creates a new copy of @log.</doc>
        <source-position filename="lib/plugin_apis/nvme.h" line="525"/>
        <return-value transfer-ownership="full">
          <type name="NVMESelfTestLog" c:type="BDNVMESelfTestLog*"/>
        </return-value>
        <parameters>
          <instance-parameter name="log"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/nvme.h"
                 line="521">%BDNVMESelfTestLog to copy</doc>
            <type name="NVMESelfTestLog" c:type="BDNVMESelfTestLog*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_nvme_self_test_log_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="510">Frees @log.</doc>
        <source-position filename="lib/plugin_apis/nvme.h" line="516"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="log"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/nvme.h"
                 line="512">%BDNVMESelfTestLog to free</doc>
            <type name="NVMESelfTestLog" c:type="BDNVMESelfTestLog*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="NVMESelfTestLogEntry"
            c:type="BDNVMESelfTestLogEntry"
            glib:type-name="BDNVMESelfTestLogEntry"
            glib:get-type="bd_nvme_self_test_log_entry_get_type"
            c:symbol-prefix="nvme_self_test_log_entry">
      <source-position filename="lib/plugin_apis/nvme.h" line="462"/>
      <field name="result" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="466">Result of the device self-test operation.</doc>
        <type name="NVMESelfTestResult" c:type="BDNVMESelfTestResult"/>
      </field>
      <field name="action" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="467">The Self-test Code value (action) that was specified in the Device Self-test command that started this device self-test operation.</doc>
        <type name="NVMESelfTestAction" c:type="BDNVMESelfTestAction"/>
      </field>
      <field name="segment" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="468">Segment number where the first self-test failure occurred. Valid only when @result is set to #BD_NVME_SELF_TEST_RESULT_KNOWN_SEG_FAIL.</doc>
        <type name="guint8" c:type="guint8"/>
      </field>
      <field name="power_on_hours" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="469">Number of power-on hours at the time the device self-test operation was completed or aborted. Does not include time that the controller was powered and in a low power state condition.</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="nsid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="470">Namespace ID that the Failing LBA occurred on.</doc>
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="failing_lba" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="471">LBA of the logical block that caused the test to fail. If the device encountered more than one failed logical block during the test, then this field only indicates one of those failed logical blocks.</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="status_code_error" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="472">Translated NVMe Command Status Code representing additional information related to errors or conditions.</doc>
        <type name="GLib.Error" c:type="GError*"/>
      </field>
      <method name="copy"
              c:identifier="bd_nvme_self_test_log_entry_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="483">Creates a new copy of @entry.</doc>
        <source-position filename="lib/plugin_apis/nvme.h" line="489"/>
        <return-value transfer-ownership="full">
          <type name="NVMESelfTestLogEntry" c:type="BDNVMESelfTestLogEntry*"/>
        </return-value>
        <parameters>
          <instance-parameter name="entry"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/nvme.h"
                 line="485">%BDNVMESelfTestLogEntry to copy</doc>
            <type name="NVMESelfTestLogEntry"
                  c:type="BDNVMESelfTestLogEntry*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_nvme_self_test_log_entry_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="474">Frees @entry.</doc>
        <source-position filename="lib/plugin_apis/nvme.h" line="480"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="entry"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/nvme.h"
                 line="476">%BDNVMESelfTestLogEntry to free</doc>
            <type name="NVMESelfTestLogEntry"
                  c:type="BDNVMESelfTestLogEntry*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="NVMESelfTestResult" c:type="BDNVMESelfTestResult">
      <source-position filename="lib/plugin_apis/nvme.h" line="437"/>
      <member name="no_error"
              value="0"
              c:identifier="BD_NVME_SELF_TEST_RESULT_NO_ERROR">
      </member>
      <member name="aborted"
              value="1"
              c:identifier="BD_NVME_SELF_TEST_RESULT_ABORTED">
      </member>
      <member name="ctrl_reset"
              value="2"
              c:identifier="BD_NVME_SELF_TEST_RESULT_CTRL_RESET">
      </member>
      <member name="ns_removed"
              value="3"
              c:identifier="BD_NVME_SELF_TEST_RESULT_NS_REMOVED">
      </member>
      <member name="aborted_format"
              value="4"
              c:identifier="BD_NVME_SELF_TEST_RESULT_ABORTED_FORMAT">
      </member>
      <member name="fatal_error"
              value="5"
              c:identifier="BD_NVME_SELF_TEST_RESULT_FATAL_ERROR">
      </member>
      <member name="unknown_seg_fail"
              value="6"
              c:identifier="BD_NVME_SELF_TEST_RESULT_UNKNOWN_SEG_FAIL">
      </member>
      <member name="known_seg_fail"
              value="7"
              c:identifier="BD_NVME_SELF_TEST_RESULT_KNOWN_SEG_FAIL">
      </member>
      <member name="aborted_unknown"
              value="8"
              c:identifier="BD_NVME_SELF_TEST_RESULT_ABORTED_UNKNOWN">
      </member>
      <member name="aborted_sanitize"
              value="9"
              c:identifier="BD_NVME_SELF_TEST_RESULT_ABORTED_SANITIZE">
      </member>
    </enumeration>
    <bitfield name="NVMESmartCriticalWarning"
              c:type="BDNVMESmartCriticalWarning">
      <source-position filename="lib/plugin_apis/nvme.h" line="277"/>
      <member name="spare"
              value="1"
              c:identifier="BD_NVME_SMART_CRITICAL_WARNING_SPARE">
      </member>
      <member name="temperature"
              value="2"
              c:identifier="BD_NVME_SMART_CRITICAL_WARNING_TEMPERATURE">
      </member>
      <member name="degraded"
              value="4"
              c:identifier="BD_NVME_SMART_CRITICAL_WARNING_DEGRADED">
      </member>
      <member name="readonly"
              value="8"
              c:identifier="BD_NVME_SMART_CRITICAL_WARNING_READONLY">
      </member>
      <member name="volatile_mem"
              value="16"
              c:identifier="BD_NVME_SMART_CRITICAL_WARNING_VOLATILE_MEM">
      </member>
      <member name="pmr_readonly"
              value="32"
              c:identifier="BD_NVME_SMART_CRITICAL_WARNING_PMR_READONLY">
      </member>
    </bitfield>
    <record name="NVMESmartLog"
            c:type="BDNVMESmartLog"
            glib:type-name="BDNVMESmartLog"
            glib:get-type="bd_nvme_smart_log_get_type"
            c:symbol-prefix="nvme_smart_log">
      <source-position filename="lib/plugin_apis/nvme.h" line="302"/>
      <field name="critical_warning" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="306">critical warnings for the state of the controller, see #BDNVMESmartCriticalWarning.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="avail_spare" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="307">Available Spare: a normalized percentage (0% to 100%) of the remaining spare capacity available.</doc>
        <type name="guint8" c:type="guint8"/>
      </field>
      <field name="spare_thresh" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="308">Available Spare Threshold: a normalized percentage (0% to 100%) of the available spare threshold.</doc>
        <type name="guint8" c:type="guint8"/>
      </field>
      <field name="percent_used" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="309">Percentage Used: a vendor specific estimate of the percentage drive life used based on the
               actual usage and the manufacturer's prediction. A value of 100 indicates that the estimated
               endurance has been consumed, but may not indicate an NVM subsystem failure.
               The value is allowed to exceed 100.</doc>
        <type name="guint8" c:type="guint8"/>
      </field>
      <field name="total_data_read" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="313">An estimated calculation of total data read in bytes based on calculation of data
                  units read from the host. A value of 0 indicates that the number of Data Units Read
                  is not reported.</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="total_data_written" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="316">An estimated calculation of total data written in bytes based on calculation
                     of data units written by the host. A value of 0 indicates that the number
                     of Data Units Written is not reported.</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="ctrl_busy_time" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="319">Amount of time the controller is busy with I/O commands, reported in minutes.</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="power_cycles" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="320">The number of power cycles.</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="power_on_hours" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="321">The number of power-on hours, excluding a non-operational power state.</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="unsafe_shutdowns" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="322">The number of unsafe shutdowns as a result of a Shutdown Notification not received prior to loss of power.</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="media_errors" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="323">Media and Data Integrity Errors: the number of occurrences where the controller detected
               an unrecovered data integrity error (e.g. uncorrectable ECC, CRC checksum failure, or LBA tag mismatch).</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="num_err_log_entries" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="325">Number of Error Information Log Entries: the number of Error Information log
                      entries over the life of the controller.</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="temperature" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="327">Composite Temperature: temperature in Kelvins that represents the current composite
              temperature of the controller and associated namespaces or 0 when not applicable.</doc>
        <type name="guint16" c:type="guint16"/>
      </field>
      <field name="temp_sensors" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="329">Temperature Sensor 1-8: array of the current temperature reported by temperature sensors
               1-8 in Kelvins or 0 when the particular sensor is not available.</doc>
        <array zero-terminated="0" fixed-size="8">
          <type name="guint16" c:type="guint16"/>
        </array>
      </field>
      <field name="wctemp" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="331">Warning Composite Temperature Threshold (WCTEMP): indicates the minimum Composite Temperature (@temperature)
         value that indicates an overheating condition during which controller operation continues.
         A value of 0 indicates that no warning temperature threshold value is reported by the controller.</doc>
        <type name="guint16" c:type="guint16"/>
      </field>
      <field name="cctemp" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="334">Critical Composite Temperature Threshold (CCTEMP): indicates the minimum Composite Temperature (@temperature)
         value that indicates a critical overheating condition (e.g., may prevent continued normal operation,
         possibility of data loss, automatic device shutdown, extreme performance throttling, or permanent damage).
         A value of 0 indicates that no critical temperature threshold value is reported by the controller.</doc>
        <type name="guint16" c:type="guint16"/>
      </field>
      <field name="warning_temp_time" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="338">Warning Composite Temperature Time: the amount of time in minutes that the Composite Temperature (@temperature)
                    is greater than or equal to the Warning Composite Temperature Threshold (@wctemp) and less than the
                    Critical Composite Temperature Threshold (@cctemp).</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="critical_temp_time" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="341">Critical Composite Temperature Time: the amount of time in minutes that the Composite Temperature (@temperature)
                     is greater than or equal to the Critical Composite Temperature Threshold (@cctemp).</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <method name="copy"
              c:identifier="bd_nvme_smart_log_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="353">Creates a new copy of @log.</doc>
        <source-position filename="lib/plugin_apis/nvme.h" line="359"/>
        <return-value transfer-ownership="full">
          <type name="NVMESmartLog" c:type="BDNVMESmartLog*"/>
        </return-value>
        <parameters>
          <instance-parameter name="log"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/nvme.h"
                 line="355">%BDNVMESmartLog to copy</doc>
            <type name="NVMESmartLog" c:type="BDNVMESmartLog*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_nvme_smart_log_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="344">Frees @log.</doc>
        <source-position filename="lib/plugin_apis/nvme.h" line="350"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="log"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/nvme.h"
                 line="346">%BDNVMESmartLog to free</doc>
            <type name="NVMESmartLog" c:type="BDNVMESmartLog*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="NVMETech" c:type="BDNVMETech">
      <source-position filename="lib/plugin_apis/nvme.h" line="38"/>
      <member name="nvme" value="0" c:identifier="BD_NVME_TECH_NVME">
      </member>
      <member name="fabrics" value="1" c:identifier="BD_NVME_TECH_FABRICS">
      </member>
    </enumeration>
    <bitfield name="NVMETechMode" c:type="BDNVMETechMode">
      <source-position filename="lib/plugin_apis/nvme.h" line="44"/>
      <member name="info" value="1" c:identifier="BD_NVME_TECH_MODE_INFO">
      </member>
      <member name="manage" value="2" c:identifier="BD_NVME_TECH_MODE_MANAGE">
      </member>
      <member name="initiator"
              value="4"
              c:identifier="BD_NVME_TECH_MODE_INITIATOR">
      </member>
    </bitfield>
    <enumeration name="NVMETransportType" c:type="BDNVMETransportType">
      <source-position filename="lib/plugin_apis/nvme.h" line="370"/>
      <member name="unspecified"
              value="0"
              c:identifier="BD_NVME_TRANSPORT_TYPE_UNSPECIFIED">
      </member>
      <member name="rdma" value="1" c:identifier="BD_NVME_TRANSPORT_TYPE_RDMA">
      </member>
      <member name="fc" value="2" c:identifier="BD_NVME_TRANSPORT_TYPE_FC">
      </member>
      <member name="tcp" value="3" c:identifier="BD_NVME_TRANSPORT_TYPE_TCP">
      </member>
      <member name="loop"
              value="254"
              c:identifier="BD_NVME_TRANSPORT_TYPE_LOOP">
      </member>
    </enumeration>
    <enumeration name="PartAlign" c:type="BDPartAlign">
      <source-position filename="lib/plugin_apis/part.h" line="46"/>
      <member name="none" value="0" c:identifier="BD_PART_ALIGN_NONE">
      </member>
      <member name="minimal" value="1" c:identifier="BD_PART_ALIGN_MINIMAL">
      </member>
      <member name="optimal" value="2" c:identifier="BD_PART_ALIGN_OPTIMAL">
      </member>
    </enumeration>
    <record name="PartDiskSpec"
            c:type="BDPartDiskSpec"
            glib:type-name="BDPartDiskSpec"
            glib:get-type="bd_part_disk_spec_get_type"
            c:symbol-prefix="part_disk_spec">
      <source-position filename="lib/plugin_apis/part.h" line="96"/>
      <field name="path" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="100">path of the disk (block device)</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="table_type" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="101">type of the disk's partition table</doc>
        <type name="PartTableType" c:type="BDPartTableType"/>
      </field>
      <field name="size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="102">size of the disk</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="sector_size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="103">disk's sector size</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <method name="copy" c:identifier="bd_part_disk_spec_copy">
        <source-position filename="lib/plugin_apis/part.h" line="105"/>
        <return-value transfer-ownership="full">
          <type name="PartDiskSpec" c:type="BDPartDiskSpec*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data" transfer-ownership="none">
            <type name="PartDiskSpec" c:type="BDPartDiskSpec*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="bd_part_disk_spec_free">
        <source-position filename="lib/plugin_apis/part.h" line="108"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="data" transfer-ownership="none">
            <type name="PartDiskSpec" c:type="BDPartDiskSpec*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="PartError"
                 c:type="BDPartError"
                 glib:error-domain="g-bd-part-error-quark">
      <source-position filename="lib/plugin_apis/part.h" line="18"/>
      <member name="tech_unavail"
              value="0"
              c:identifier="BD_PART_ERROR_TECH_UNAVAIL">
      </member>
      <member name="fail" value="1" c:identifier="BD_PART_ERROR_FAIL">
      </member>
      <member name="inval" value="2" c:identifier="BD_PART_ERROR_INVAL">
      </member>
      <member name="exists" value="3" c:identifier="BD_PART_ERROR_EXISTS">
      </member>
    </enumeration>
    <record name="PartSpec"
            c:type="BDPartSpec"
            glib:type-name="BDPartSpec"
            glib:get-type="bd_part_spec_get_type"
            c:symbol-prefix="part_spec">
      <source-position filename="lib/plugin_apis/part.h" line="64"/>
      <field name="path" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="68">path of the partition (block device)</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="name" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="69">name of the partition (for GPT partitions)</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="uuid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="70">UUID of the partition (for GPT partitions)</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="id" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="71">id of the partition (for MSDOS partitions)</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="type_guid" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="72">GUID of the partition's type (GPT)</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="type" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="73">bit combination of partition's types (#BDPartType)</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="start" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="74">start of the partition</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="size" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="75">size of the partition</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="bootable" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="76">whether the bootable flag is set or not (for MSDOS partitions)</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="attrs" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="77">partition GPT attributes</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="type_name" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="78">human readable representation of @type_guid</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <method name="copy" c:identifier="bd_part_spec_copy">
        <source-position filename="lib/plugin_apis/part.h" line="80"/>
        <return-value transfer-ownership="full">
          <type name="PartSpec" c:type="BDPartSpec*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data" transfer-ownership="none">
            <type name="PartSpec" c:type="BDPartSpec*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="bd_part_spec_free">
        <source-position filename="lib/plugin_apis/part.h" line="83"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="data" transfer-ownership="none">
            <type name="PartSpec" c:type="BDPartSpec*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="PartTableType" c:type="BDPartTableType">
      <source-position filename="lib/plugin_apis/part.h" line="24"/>
      <member name="msdos" value="0" c:identifier="BD_PART_TABLE_MSDOS">
      </member>
      <member name="gpt" value="1" c:identifier="BD_PART_TABLE_GPT">
      </member>
      <member name="undef" value="2" c:identifier="BD_PART_TABLE_UNDEF">
      </member>
    </enumeration>
    <enumeration name="PartTech" c:type="BDPartTech">
      <source-position filename="lib/plugin_apis/part.h" line="115"/>
      <member name="mbr" value="0" c:identifier="BD_PART_TECH_MBR">
      </member>
      <member name="gpt" value="1" c:identifier="BD_PART_TECH_GPT">
      </member>
    </enumeration>
    <bitfield name="PartTechMode" c:type="BDPartTechMode">
      <source-position filename="lib/plugin_apis/part.h" line="123"/>
      <member name="create_table"
              value="1"
              c:identifier="BD_PART_TECH_MODE_CREATE_TABLE">
      </member>
      <member name="modify_table"
              value="2"
              c:identifier="BD_PART_TECH_MODE_MODIFY_TABLE">
      </member>
      <member name="query_table"
              value="4"
              c:identifier="BD_PART_TECH_MODE_QUERY_TABLE">
      </member>
      <member name="modify_part"
              value="8"
              c:identifier="BD_PART_TECH_MODE_MODIFY_PART">
      </member>
      <member name="query_part"
              value="16"
              c:identifier="BD_PART_TECH_MODE_QUERY_PART">
      </member>
    </bitfield>
    <enumeration name="PartType" c:type="BDPartType">
      <source-position filename="lib/plugin_apis/part.h" line="33"/>
      <member name="normal" value="0" c:identifier="BD_PART_TYPE_NORMAL">
      </member>
      <member name="logical" value="1" c:identifier="BD_PART_TYPE_LOGICAL">
      </member>
      <member name="extended" value="2" c:identifier="BD_PART_TYPE_EXTENDED">
      </member>
      <member name="freespace" value="4" c:identifier="BD_PART_TYPE_FREESPACE">
      </member>
      <member name="metadata" value="8" c:identifier="BD_PART_TYPE_METADATA">
      </member>
      <member name="protected"
              value="16"
              c:identifier="BD_PART_TYPE_PROTECTED">
      </member>
    </enumeration>
    <enumeration name="PartTypeReq" c:type="BDPartTypeReq">
      <source-position filename="lib/plugin_apis/part.h" line="40"/>
      <member name="normal" value="0" c:identifier="BD_PART_TYPE_REQ_NORMAL">
      </member>
      <member name="logical" value="1" c:identifier="BD_PART_TYPE_REQ_LOGICAL">
      </member>
      <member name="extended"
              value="2"
              c:identifier="BD_PART_TYPE_REQ_EXTENDED">
      </member>
      <member name="next" value="4" c:identifier="BD_PART_TYPE_REQ_NEXT">
      </member>
    </enumeration>
    <enumeration name="Plugin" c:type="BDPlugin">
      <source-position filename="lib/plugins.h" line="23"/>
      <member name="lvm" value="0" c:identifier="BD_PLUGIN_LVM">
      </member>
      <member name="btrfs" value="1" c:identifier="BD_PLUGIN_BTRFS">
      </member>
      <member name="swap" value="2" c:identifier="BD_PLUGIN_SWAP">
      </member>
      <member name="loop" value="3" c:identifier="BD_PLUGIN_LOOP">
      </member>
      <member name="crypto" value="4" c:identifier="BD_PLUGIN_CRYPTO">
      </member>
      <member name="mpath" value="5" c:identifier="BD_PLUGIN_MPATH">
      </member>
      <member name="dm" value="6" c:identifier="BD_PLUGIN_DM">
      </member>
      <member name="mdraid" value="7" c:identifier="BD_PLUGIN_MDRAID">
      </member>
      <member name="s390" value="8" c:identifier="BD_PLUGIN_S390">
      </member>
      <member name="part" value="9" c:identifier="BD_PLUGIN_PART">
      </member>
      <member name="fs" value="10" c:identifier="BD_PLUGIN_FS">
      </member>
      <member name="nvdimm" value="11" c:identifier="BD_PLUGIN_NVDIMM">
      </member>
      <member name="nvme" value="12" c:identifier="BD_PLUGIN_NVME">
      </member>
      <member name="smart" value="13" c:identifier="BD_PLUGIN_SMART">
      </member>
      <member name="undef" value="14" c:identifier="BD_PLUGIN_UNDEF">
      </member>
    </enumeration>
    <record name="PluginSpec"
            c:type="BDPluginSpec"
            glib:type-name="BDPluginSpec"
            glib:get-type="bd_plugin_spec_get_type"
            c:symbol-prefix="plugin_spec">
      <source-position filename="lib/plugins.h" line="37"/>
      <field name="name" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugins.h"
             line="30">%BDPlugin name, e.g. %BD_PLUGIN_LVM</doc>
        <type name="Plugin" c:type="BDPlugin"/>
      </field>
      <field name="so_name" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugins.h"
             line="31">SO name of the plugin to load or %NULL for default</doc>
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <constructor name="new" c:identifier="bd_plugin_spec_new">
        <source-position filename="lib/plugins.h" line="41"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="lib/plugins.c"
               line="48">a new plugin spec</doc>
          <type name="PluginSpec" c:type="BDPluginSpec*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="lib/plugins.c"
                 line="45">%BDPlugin name, e.g. %BD_PLUGIN_LVM</doc>
            <type name="Plugin" c:type="BDPlugin"/>
          </parameter>
          <parameter name="so_name"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugins.c"
                 line="46">SO name of the plugin to load or %NULL for default</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="copy"
              c:identifier="bd_plugin_spec_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugins.c"
             line="12">Creates a new copy of @spec.</doc>
        <source-position filename="lib/plugins.h" line="39"/>
        <return-value transfer-ownership="full">
          <type name="PluginSpec" c:type="BDPluginSpec*"/>
        </return-value>
        <parameters>
          <instance-parameter name="spec"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugins.c"
                 line="14">%BDPluginSpec to copy</doc>
            <type name="PluginSpec" c:type="BDPluginSpec*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_plugin_spec_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugins.c"
             line="30">Frees @spec.</doc>
        <source-position filename="lib/plugins.h" line="40"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="spec"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugins.c"
                 line="32">%BDPluginSpec to free</doc>
            <type name="PluginSpec" c:type="BDPluginSpec*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="SmartATA"
            c:type="BDSmartATA"
            glib:type-name="BDSmartATA"
            glib:get-type="bd_smart_ata_get_type"
            c:symbol-prefix="smart_ata">
      <source-position filename="lib/plugin_apis/smart.h" line="181"/>
      <field name="smart_supported" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="185">Indicates that the device has SMART capability.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="smart_enabled" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="186">Indicates that the SMART support is enabled.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="overall_status_passed" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="187">%TRUE if the device SMART overall-health self-assessment test result has passed.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="offline_data_collection_status" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="188">The offline data collection status. See #BDSmartATAOfflineDataCollectionStatus.</doc>
        <type name="SmartATAOfflineDataCollectionStatus"
              c:type="BDSmartATAOfflineDataCollectionStatus"/>
      </field>
      <field name="auto_offline_data_collection_enabled" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="189">%TRUE if Automatic Offline Data Collection is enabled. Only supported with the smartmontools plugin.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="offline_data_collection_completion" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="190">Total time in seconds to complete Offline data collection.</doc>
        <type name="gint" c:type="gint"/>
      </field>
      <field name="offline_data_collection_capabilities" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="191">Bitmask of offline data collection capabilities, see #BDSmartATAOfflineDataCollectionCapabilities. Only supported with the smartmontools plugin.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="self_test_status" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="192">Self-test execution status. See #BDSmartATASelfTestStatus.</doc>
        <type name="SmartATASelfTestStatus" c:type="BDSmartATASelfTestStatus"/>
      </field>
      <field name="self_test_percent_remaining" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="193">The percentage remaining of a running self-test.</doc>
        <type name="gint" c:type="gint"/>
      </field>
      <field name="self_test_polling_short" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="194">Short self-test routine recommended polling time in minutes or 0 if not supported.</doc>
        <type name="gint" c:type="gint"/>
      </field>
      <field name="self_test_polling_extended" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="195">Extended self-test routine recommended polling time in minutes or 0 if not supported.</doc>
        <type name="gint" c:type="gint"/>
      </field>
      <field name="self_test_polling_conveyance" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="196">Conveyance self-test routine recommended polling time in minutes or 0 if not supported.</doc>
        <type name="gint" c:type="gint"/>
      </field>
      <field name="smart_capabilities" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="197">Bitmask of device misc. SMART capabilities. See #BDSmartATACapabilities. Only supported with the smartmontools plugin.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="attributes" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="198">A list of reported SMART attributes.</doc>
        <array c:type="BDSmartATAAttribute**">
          <type name="SmartATAAttribute" c:type="BDSmartATAAttribute*"/>
        </array>
      </field>
      <field name="power_on_time" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="199">The count of minutes in power-on state.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="power_cycle_count" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="200">The count of full hard disk power on/off cycles.</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="temperature" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="201">The current drive temperature in Kelvin or 0 when temperature is not reported.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <method name="copy" c:identifier="bd_smart_ata_copy" introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="212">Creates a new copy of @data.</doc>
        <source-position filename="lib/plugin_apis/smart.h" line="218"/>
        <return-value transfer-ownership="full">
          <type name="SmartATA" c:type="BDSmartATA*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/smart.h"
                 line="214">%BDSmartATA to copy</doc>
            <type name="SmartATA" c:type="BDSmartATA*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="bd_smart_ata_free" introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="203">Frees @data.</doc>
        <source-position filename="lib/plugin_apis/smart.h" line="209"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/smart.h"
                 line="205">%BDSmartATA to free</doc>
            <type name="SmartATA" c:type="BDSmartATA*"/>
          </instance-parameter>
        </parameters>
      </method>
      <function name="get_info"
                c:identifier="bd_smart_ata_get_info"
                throws="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="376">Retrieve SMART information from the drive.</doc>
        <source-position filename="lib/plugin_apis/smart.h" line="388"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/smart.h"
               line="384">ATA SMART log or %NULL in case of an error (with @error set).

Tech category: %BD_SMART_TECH_ATA-%BD_SMART_TECH_MODE_INFO</doc>
          <type name="SmartATA" c:type="BDSmartATA*"/>
        </return-value>
        <parameters>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/smart.h"
                 line="378">device to check.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="extra"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/smart.h"
                 line="379">extra options to pass through.</doc>
            <array c:type="const BDExtraArg**">
              <type name="ExtraArg" c:type="BDExtraArg*"/>
            </array>
          </parameter>
        </parameters>
      </function>
      <function name="get_info_from_data"
                c:identifier="bd_smart_ata_get_info_from_data"
                throws="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="391">Retrieve SMART information from the supplied data.</doc>
        <source-position filename="lib/plugin_apis/smart.h" line="403"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/smart.h"
               line="399">ATA SMART log or %NULL in case of an error (with @error set).

Tech category: %BD_SMART_TECH_ATA-%BD_SMART_TECH_MODE_INFO</doc>
          <type name="SmartATA" c:type="BDSmartATA*"/>
        </return-value>
        <parameters>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/smart.h"
                 line="393">binary data to parse.</doc>
            <array length="1" zero-terminated="0" c:type="const guint8*">
              <type name="guint8" c:type="guint8"/>
            </array>
          </parameter>
          <parameter name="data_len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/smart.h"
                 line="394">length of the data supplied.</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <record name="SmartATAAttribute"
            c:type="BDSmartATAAttribute"
            glib:type-name="BDSmartATAAttribute"
            glib:get-type="bd_smart_ata_attribute_get_type"
            c:symbol-prefix="smart_ata_attribute">
      <source-position filename="lib/plugin_apis/smart.h" line="121"/>
      <field name="id" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="125">Attribute Identifier.</doc>
        <type name="guint8" c:type="guint8"/>
      </field>
      <field name="name" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="126">A free-form representation of the attribute name, implementation-dependent (e.g. libatasmart internal strings or smartmontools' drivedb.h names).</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="well_known_name" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="127">Translated well-known attribute name (in libatasmart style, e.g. 'raw-read-error-rate') or %NULL in case of unknown, untrusted or vendor-specific value.</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="value" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="128">The normalized value or -1 if unknown.</doc>
        <type name="gint" c:type="gint"/>
      </field>
      <field name="worst" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="129">The worst normalized value of -1 if unknown.</doc>
        <type name="gint" c:type="gint"/>
      </field>
      <field name="threshold" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="130">The threshold of a normalized value or -1 if unknown.</doc>
        <type name="gint" c:type="gint"/>
      </field>
      <field name="failed_past" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="131">Indicates a failure that happened in the past (the normalized worst value is below the threshold).</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="failing_now" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="132">Indicates a failure that is happening now (the normalized value is below the threshold).</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="value_raw" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="133">The raw value of the attribute.</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="flags" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="134">Bitmask of attribute flags. See #BDSmartATAAttributeFlag.</doc>
        <type name="guint16" c:type="guint16"/>
      </field>
      <field name="pretty_value" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="135">Numerical representation of the parsed raw value, presented in @pretty_value_unit units.</doc>
        <type name="gint64" c:type="gint64"/>
      </field>
      <field name="pretty_value_unit" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="136">The unit of the parsed raw value.</doc>
        <type name="SmartATAAttributeUnit" c:type="BDSmartATAAttributeUnit"/>
      </field>
      <field name="pretty_value_string" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="137">A free-form string representation of the raw value intended for user presentation or %NULL.</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <method name="copy"
              c:identifier="bd_smart_ata_attribute_copy"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="148">Creates a new copy of @attr.</doc>
        <source-position filename="lib/plugin_apis/smart.h" line="154"/>
        <return-value transfer-ownership="full">
          <type name="SmartATAAttribute" c:type="BDSmartATAAttribute*"/>
        </return-value>
        <parameters>
          <instance-parameter name="attr"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/smart.h"
                 line="150">%BDSmartATAAttribute to copy</doc>
            <type name="SmartATAAttribute" c:type="BDSmartATAAttribute*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="bd_smart_ata_attribute_free"
              introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="139">Frees @attr.</doc>
        <source-position filename="lib/plugin_apis/smart.h" line="145"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="attr"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/smart.h"
                 line="141">%BDSmartATAAttribute to free</doc>
            <type name="SmartATAAttribute" c:type="BDSmartATAAttribute*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="SmartATAAttributeFlag" c:type="BDSmartATAAttributeFlag">
      <source-position filename="lib/plugin_apis/smart.h" line="100"/>
      <member name="prefailure"
              value="1"
              c:identifier="BD_SMART_ATA_ATTRIBUTE_FLAG_PREFAILURE">
      </member>
      <member name="online"
              value="2"
              c:identifier="BD_SMART_ATA_ATTRIBUTE_FLAG_ONLINE">
      </member>
      <member name="performance"
              value="4"
              c:identifier="BD_SMART_ATA_ATTRIBUTE_FLAG_PERFORMANCE">
      </member>
      <member name="error_rate"
              value="8"
              c:identifier="BD_SMART_ATA_ATTRIBUTE_FLAG_ERROR_RATE">
      </member>
      <member name="event_count"
              value="16"
              c:identifier="BD_SMART_ATA_ATTRIBUTE_FLAG_EVENT_COUNT">
      </member>
      <member name="self_preserving"
              value="32"
              c:identifier="BD_SMART_ATA_ATTRIBUTE_FLAG_SELF_PRESERVING">
      </member>
      <member name="other"
              value="65472"
              c:identifier="BD_SMART_ATA_ATTRIBUTE_FLAG_OTHER">
      </member>
    </enumeration>
    <enumeration name="SmartATAAttributeUnit" c:type="BDSmartATAAttributeUnit">
      <source-position filename="lib/plugin_apis/smart.h" line="90"/>
      <member name="unknown"
              value="0"
              c:identifier="BD_SMART_ATA_ATTRIBUTE_UNIT_UNKNOWN">
      </member>
      <member name="none"
              value="1"
              c:identifier="BD_SMART_ATA_ATTRIBUTE_UNIT_NONE">
      </member>
      <member name="mseconds"
              value="2"
              c:identifier="BD_SMART_ATA_ATTRIBUTE_UNIT_MSECONDS">
      </member>
      <member name="sectors"
              value="3"
              c:identifier="BD_SMART_ATA_ATTRIBUTE_UNIT_SECTORS">
      </member>
      <member name="mkelvin"
              value="4"
              c:identifier="BD_SMART_ATA_ATTRIBUTE_UNIT_MKELVIN">
      </member>
      <member name="small_percent"
              value="5"
              c:identifier="BD_SMART_ATA_ATTRIBUTE_UNIT_SMALL_PERCENT">
      </member>
      <member name="percent"
              value="6"
              c:identifier="BD_SMART_ATA_ATTRIBUTE_UNIT_PERCENT">
      </member>
      <member name="mb"
              value="7"
              c:identifier="BD_SMART_ATA_ATTRIBUTE_UNIT_MB">
      </member>
    </enumeration>
    <bitfield name="SmartATACapabilities" c:type="BDSmartATACapabilities">
      <source-position filename="lib/plugin_apis/smart.h" line="79"/>
      <member name="attribute_autosave"
              value="1"
              c:identifier="BD_SMART_ATA_CAP_ATTRIBUTE_AUTOSAVE">
      </member>
      <member name="autosave_timer"
              value="2"
              c:identifier="BD_SMART_ATA_CAP_AUTOSAVE_TIMER">
      </member>
      <member name="error_logging"
              value="4"
              c:identifier="BD_SMART_ATA_CAP_ERROR_LOGGING">
      </member>
      <member name="gp_logging"
              value="8"
              c:identifier="BD_SMART_ATA_CAP_GP_LOGGING">
      </member>
    </bitfield>
    <enumeration name="SmartATAOfflineDataCollectionCapabilities"
                 c:type="BDSmartATAOfflineDataCollectionCapabilities">
      <source-position filename="lib/plugin_apis/smart.h" line="59"/>
      <member name="not_supported"
              value="0"
              c:identifier="BD_SMART_ATA_OFFLINE_DATA_COLLECTION_CAP_NOT_SUPPORTED">
      </member>
      <member name="exec_offline_immediate"
              value="1"
              c:identifier="BD_SMART_ATA_OFFLINE_DATA_COLLECTION_CAP_EXEC_OFFLINE_IMMEDIATE">
      </member>
      <member name="offline_abort"
              value="4"
              c:identifier="BD_SMART_ATA_OFFLINE_DATA_COLLECTION_CAP_OFFLINE_ABORT">
      </member>
      <member name="offline_surface_scan"
              value="8"
              c:identifier="BD_SMART_ATA_OFFLINE_DATA_COLLECTION_CAP_OFFLINE_SURFACE_SCAN">
      </member>
      <member name="self_test"
              value="16"
              c:identifier="BD_SMART_ATA_OFFLINE_DATA_COLLECTION_CAP_SELF_TEST">
      </member>
      <member name="conveyance_self_test"
              value="32"
              c:identifier="BD_SMART_ATA_OFFLINE_DATA_COLLECTION_CAP_CONVEYANCE_SELF_TEST">
      </member>
      <member name="selective_self_test"
              value="64"
              c:identifier="BD_SMART_ATA_OFFLINE_DATA_COLLECTION_CAP_SELECTIVE_SELF_TEST">
      </member>
    </enumeration>
    <enumeration name="SmartATAOfflineDataCollectionStatus"
                 c:type="BDSmartATAOfflineDataCollectionStatus">
      <source-position filename="lib/plugin_apis/smart.h" line="49"/>
      <member name="never_started"
              value="0"
              c:identifier="BD_SMART_ATA_OFFLINE_DATA_COLLECTION_STATUS_NEVER_STARTED">
      </member>
      <member name="no_error"
              value="2"
              c:identifier="BD_SMART_ATA_OFFLINE_DATA_COLLECTION_STATUS_NO_ERROR">
      </member>
      <member name="in_progress"
              value="3"
              c:identifier="BD_SMART_ATA_OFFLINE_DATA_COLLECTION_STATUS_IN_PROGRESS">
      </member>
      <member name="suspended_intr"
              value="4"
              c:identifier="BD_SMART_ATA_OFFLINE_DATA_COLLECTION_STATUS_SUSPENDED_INTR">
      </member>
      <member name="aborted_intr"
              value="5"
              c:identifier="BD_SMART_ATA_OFFLINE_DATA_COLLECTION_STATUS_ABORTED_INTR">
      </member>
      <member name="aborted_error"
              value="6"
              c:identifier="BD_SMART_ATA_OFFLINE_DATA_COLLECTION_STATUS_ABORTED_ERROR">
      </member>
      <member name="vendor_specific"
              value="64"
              c:identifier="BD_SMART_ATA_OFFLINE_DATA_COLLECTION_STATUS_VENDOR_SPECIFIC">
      </member>
      <member name="reserved"
              value="63"
              c:identifier="BD_SMART_ATA_OFFLINE_DATA_COLLECTION_STATUS_RESERVED">
      </member>
    </enumeration>
    <enumeration name="SmartATASelfTestStatus"
                 c:type="BDSmartATASelfTestStatus">
      <source-position filename="lib/plugin_apis/smart.h" line="72"/>
      <member name="completed_no_error"
              value="0"
              c:identifier="BD_SMART_ATA_SELF_TEST_STATUS_COMPLETED_NO_ERROR">
      </member>
      <member name="aborted_host"
              value="1"
              c:identifier="BD_SMART_ATA_SELF_TEST_STATUS_ABORTED_HOST">
      </member>
      <member name="intr_host_reset"
              value="2"
              c:identifier="BD_SMART_ATA_SELF_TEST_STATUS_INTR_HOST_RESET">
      </member>
      <member name="error_fatal"
              value="3"
              c:identifier="BD_SMART_ATA_SELF_TEST_STATUS_ERROR_FATAL">
      </member>
      <member name="error_unknown"
              value="4"
              c:identifier="BD_SMART_ATA_SELF_TEST_STATUS_ERROR_UNKNOWN">
      </member>
      <member name="error_electrical"
              value="5"
              c:identifier="BD_SMART_ATA_SELF_TEST_STATUS_ERROR_ELECTRICAL">
      </member>
      <member name="error_servo"
              value="6"
              c:identifier="BD_SMART_ATA_SELF_TEST_STATUS_ERROR_SERVO">
      </member>
      <member name="error_read"
              value="7"
              c:identifier="BD_SMART_ATA_SELF_TEST_STATUS_ERROR_READ">
      </member>
      <member name="error_handling"
              value="8"
              c:identifier="BD_SMART_ATA_SELF_TEST_STATUS_ERROR_HANDLING">
      </member>
      <member name="in_progress"
              value="15"
              c:identifier="BD_SMART_ATA_SELF_TEST_STATUS_IN_PROGRESS">
      </member>
    </enumeration>
    <enumeration name="SmartError"
                 c:type="BDSmartError"
                 glib:error-domain="g-bd-smart-error-quark">
      <source-position filename="lib/plugin_apis/smart.h" line="16"/>
      <member name="tech_unavail"
              value="0"
              c:identifier="BD_SMART_ERROR_TECH_UNAVAIL">
      </member>
      <member name="failed" value="1" c:identifier="BD_SMART_ERROR_FAILED">
      </member>
      <member name="invalid_argument"
              value="2"
              c:identifier="BD_SMART_ERROR_INVALID_ARGUMENT">
      </member>
    </enumeration>
    <record name="SmartSCSI"
            c:type="BDSmartSCSI"
            glib:type-name="BDSmartSCSI"
            glib:get-type="bd_smart_scsi_get_type"
            c:symbol-prefix="smart_scsi">
      <source-position filename="lib/plugin_apis/smart.h" line="310"/>
      <field name="smart_supported" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="314">Indicates that the device has SMART capability.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="smart_enabled" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="315">Indicates that the SMART support is enabled.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="overall_status_passed" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="316">%TRUE if the device SMART overall-health self-assessment test result has passed, %FALSE otherwise with @scsi_ie fields set.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="scsi_ie" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="317">The reported SCSI Informational Exception in a simplified form. See #BDSmartSCSIInformationalException.</doc>
        <type name="SmartSCSIInformationalException"
              c:type="BDSmartSCSIInformationalException"/>
      </field>
      <field name="scsi_ie_asc" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="318">The reported SCSI Informational Exception ASC (Additional Sense Code) value (only values of 0xb - warnings and 0x5d - impending failures are taken in account).</doc>
        <type name="guint8" c:type="guint8"/>
      </field>
      <field name="scsi_ie_ascq" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="319">The reported SCSI Informational Exception ASCQ (Additional Sense Code Qualifier) value.</doc>
        <type name="guint8" c:type="guint8"/>
      </field>
      <field name="scsi_ie_string" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="320">String representation of the current SCSI Informational Exception.</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="background_scan_status" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="321">Background scan status, see #BDSmartSCSIBackgroundScanStatus.</doc>
        <type name="SmartSCSIBackgroundScanStatus"
              c:type="BDSmartSCSIBackgroundScanStatus"/>
      </field>
      <field name="background_scan_progress" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="322">Percent of a background scan progress.</doc>
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="background_scan_runs" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="323">Number of background scans performed.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="background_medium_scan_runs" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="324">Number of background medium scans performed.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="read_errors_corrected_eccfast" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="325">Error counter log - read errors corrected by ECC fast.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="read_errors_corrected_eccdelayed" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="326">Error counter log - read errors corrected by ECC delayed.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="read_errors_corrected_rereads" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="327">Error counter log - read errors corrected by rereads.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="read_errors_corrected_total" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="328">Error counter log - total read errors corrected.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="read_errors_uncorrected" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="329">Error counter log - total uncorrected read errors.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="read_processed_bytes" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="330">Error counter log - total bytes processed.</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="write_errors_corrected_eccfast" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="331">Error counter log - write errors corrected by ECC fast.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="write_errors_corrected_eccdelayed" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="332">Error counter log - write errors corrected by ECC delayed.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="write_errors_corrected_rewrites" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="333">Error counter log - write errors corrected by rewrites.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="write_errors_corrected_total" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="334">Error counter log - total write errors corrected.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="write_errors_uncorrected" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="335">Error counter log - total uncorrected write errors.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="write_processed_bytes" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="336">Error counter log - total bytes processed.</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="start_stop_cycle_count" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="337">Accumulated start-stop cycles.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="start_stop_cycle_lifetime" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="338">Specified cycle count over device lifetime.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="load_unload_cycle_count" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="339">Accumulated load-unload cycles.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="load_unload_cycle_lifetime" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="340">Specified load-unload count over device lifetime.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="scsi_grown_defect_list" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="341">Elements in grown defect list.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="power_on_time" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="342">Accumulated power on time in minutes.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="temperature_warning_enabled" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="343">Indicates that temperature warning is enabled.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="temperature" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="344">The current drive temperature in Kelvin or 0 when temperature is not reported.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="temperature_drive_trip" writable="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="345">The drive trip temperature in Kelvin or 0 when temperature is not reported.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <method name="copy" c:identifier="bd_smart_scsi_copy" introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="356">Creates a new copy of @data.</doc>
        <source-position filename="lib/plugin_apis/smart.h" line="362"/>
        <return-value transfer-ownership="full">
          <type name="SmartSCSI" c:type="BDSmartSCSI*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/smart.h"
                 line="358">%BDSmartSCSI to copy</doc>
            <type name="SmartSCSI" c:type="BDSmartSCSI*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="bd_smart_scsi_free" introspectable="0">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="347">Frees @data.</doc>
        <source-position filename="lib/plugin_apis/smart.h" line="353"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="data"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/smart.h"
                 line="349">%BDSmartSCSI to free</doc>
            <type name="SmartSCSI" c:type="BDSmartSCSI*"/>
          </instance-parameter>
        </parameters>
      </method>
      <function name="get_info"
                c:identifier="bd_smart_scsi_get_info"
                throws="1">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="406">Retrieve SMART information from SCSI or SAS-compliant drive.</doc>
        <source-position filename="lib/plugin_apis/smart.h" line="418"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/smart.h"
               line="414">SCSI SMART log or %NULL in case of an error (with @error set).

Tech category: %BD_SMART_TECH_SCSI-%BD_SMART_TECH_MODE_INFO</doc>
          <type name="SmartSCSI" c:type="BDSmartSCSI*"/>
        </return-value>
        <parameters>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/smart.h"
                 line="408">device to check.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="extra"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="lib/plugin_apis/smart.h"
                 line="409">extra options to pass through.</doc>
            <array c:type="const BDExtraArg**">
              <type name="ExtraArg" c:type="BDExtraArg*"/>
            </array>
          </parameter>
        </parameters>
      </function>
    </record>
    <enumeration name="SmartSCSIBackgroundScanStatus"
                 c:type="BDSmartSCSIBackgroundScanStatus">
      <source-position filename="lib/plugin_apis/smart.h" line="270"/>
      <member name="no_scans_active"
              value="0"
              c:identifier="BD_SMART_SCSI_BACKGROUND_SCAN_STATUS_NO_SCANS_ACTIVE">
      </member>
      <member name="scan_active"
              value="1"
              c:identifier="BD_SMART_SCSI_BACKGROUND_SCAN_STATUS_SCAN_ACTIVE">
      </member>
      <member name="prescan_active"
              value="2"
              c:identifier="BD_SMART_SCSI_BACKGROUND_SCAN_STATUS_PRESCAN_ACTIVE">
      </member>
      <member name="halted_error_fatal"
              value="3"
              c:identifier="BD_SMART_SCSI_BACKGROUND_SCAN_STATUS_HALTED_ERROR_FATAL">
      </member>
      <member name="halted_pattern_vendor_specific"
              value="4"
              c:identifier="BD_SMART_SCSI_BACKGROUND_SCAN_STATUS_HALTED_PATTERN_VENDOR_SPECIFIC">
      </member>
      <member name="halted_error_plist"
              value="5"
              c:identifier="BD_SMART_SCSI_BACKGROUND_SCAN_STATUS_HALTED_ERROR_PLIST">
      </member>
      <member name="halted_vendor_specific"
              value="6"
              c:identifier="BD_SMART_SCSI_BACKGROUND_SCAN_STATUS_HALTED_VENDOR_SPECIFIC">
      </member>
      <member name="halted_temperature"
              value="7"
              c:identifier="BD_SMART_SCSI_BACKGROUND_SCAN_STATUS_HALTED_TEMPERATURE">
      </member>
      <member name="bms_timer"
              value="8"
              c:identifier="BD_SMART_SCSI_BACKGROUND_SCAN_STATUS_BMS_TIMER">
      </member>
    </enumeration>
    <enumeration name="SmartSCSIInformationalException"
                 c:type="BDSmartSCSIInformationalException">
      <source-position filename="lib/plugin_apis/smart.h" line="258"/>
      <member name="none"
              value="0"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_NONE">
      </member>
      <member name="aborted_command"
              value="1"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_ABORTED_COMMAND">
      </member>
      <member name="temperature_exceeded"
              value="2"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_TEMPERATURE_EXCEEDED">
      </member>
      <member name="enclosure_degraded"
              value="3"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_ENCLOSURE_DEGRADED">
      </member>
      <member name="background_selftest_failed"
              value="4"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_BACKGROUND_SELFTEST_FAILED">
      </member>
      <member name="background_prescan_medium_error"
              value="5"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_BACKGROUND_PRESCAN_MEDIUM_ERROR">
      </member>
      <member name="background_scan_medium_error"
              value="6"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_BACKGROUND_SCAN_MEDIUM_ERROR">
      </member>
      <member name="nv_cache_volatile"
              value="7"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_NV_CACHE_VOLATILE">
      </member>
      <member name="nv_cache_degraded_power"
              value="8"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_NV_CACHE_DEGRADED_POWER">
      </member>
      <member name="power_loss_expected"
              value="9"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_POWER_LOSS_EXPECTED">
      </member>
      <member name="statistics_notification"
              value="10"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_STATISTICS_NOTIFICATION">
      </member>
      <member name="high_critical_temp"
              value="11"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_HIGH_CRITICAL_TEMP">
      </member>
      <member name="low_critical_temp"
              value="12"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_LOW_CRITICAL_TEMP">
      </member>
      <member name="high_operating_temp"
              value="13"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_HIGH_OPERATING_TEMP">
      </member>
      <member name="low_operating_temp"
              value="14"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_LOW_OPERATING_TEMP">
      </member>
      <member name="high_critical_humidity"
              value="15"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_HIGH_CRITICAL_HUMIDITY">
      </member>
      <member name="low_critical_humidity"
              value="16"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_LOW_CRITICAL_HUMIDITY">
      </member>
      <member name="high_operating_humidity"
              value="17"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_HIGH_OPERATING_HUMIDITY">
      </member>
      <member name="low_operating_humidity"
              value="18"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_LOW_OPERATING_HUMIDITY">
      </member>
      <member name="microcode_security_risk"
              value="19"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_MICROCODE_SECURITY_RISK">
      </member>
      <member name="microcode_signature_validation_failure"
              value="20"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_MICROCODE_SIGNATURE_VALIDATION_FAILURE">
      </member>
      <member name="physical_element_status_change"
              value="21"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_PHYSICAL_ELEMENT_STATUS_CHANGE">
      </member>
      <member name="failure_prediction_thresh"
              value="22"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_FAILURE_PREDICTION_THRESH">
      </member>
      <member name="media_failure_prediction_thresh"
              value="23"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_MEDIA_FAILURE_PREDICTION_THRESH">
      </member>
      <member name="logical_unit_failure_prediction_thresh"
              value="24"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_LOGICAL_UNIT_FAILURE_PREDICTION_THRESH">
      </member>
      <member name="spare_exhaustion_prediction_thresh"
              value="25"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_SPARE_EXHAUSTION_PREDICTION_THRESH">
      </member>
      <member name="hardware_impending_failure"
              value="26"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_HARDWARE_IMPENDING_FAILURE">
      </member>
      <member name="controller_impending_failure"
              value="27"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_CONTROLLER_IMPENDING_FAILURE">
      </member>
      <member name="data_channel_impending_failure"
              value="28"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_DATA_CHANNEL_IMPENDING_FAILURE">
      </member>
      <member name="servo_impending_failure"
              value="29"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_SERVO_IMPENDING_FAILURE">
      </member>
      <member name="spindle_impending_failure"
              value="30"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_SPINDLE_IMPENDING_FAILURE">
      </member>
      <member name="firmware_impending_failure"
              value="31"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_FIRMWARE_IMPENDING_FAILURE">
      </member>
      <member name="media_endurance_limit"
              value="32"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_MEDIA_ENDURANCE_LIMIT">
      </member>
      <member name="unspecified"
              value="33"
              c:identifier="BD_SMART_SCSI_INFORMATIONAL_EXCEPTION_UNSPECIFIED">
      </member>
    </enumeration>
    <enumeration name="SmartSelfTestOp" c:type="BDSmartSelfTestOp">
      <source-position filename="lib/plugin_apis/smart.h" line="373"/>
      <member name="abort"
              value="0"
              c:identifier="BD_SMART_SELF_TEST_OP_ABORT">
      </member>
      <member name="offline"
              value="1"
              c:identifier="BD_SMART_SELF_TEST_OP_OFFLINE">
      </member>
      <member name="short"
              value="2"
              c:identifier="BD_SMART_SELF_TEST_OP_SHORT">
      </member>
      <member name="long" value="3" c:identifier="BD_SMART_SELF_TEST_OP_LONG">
      </member>
      <member name="conveyance"
              value="4"
              c:identifier="BD_SMART_SELF_TEST_OP_CONVEYANCE">
      </member>
    </enumeration>
    <enumeration name="SmartTech" c:type="BDSmartTech">
      <source-position filename="lib/plugin_apis/smart.h" line="21"/>
      <member name="ata" value="0" c:identifier="BD_SMART_TECH_ATA">
      </member>
      <member name="scsi" value="1" c:identifier="BD_SMART_TECH_SCSI">
      </member>
    </enumeration>
    <bitfield name="SmartTechMode" c:type="BDSmartTechMode">
      <source-position filename="lib/plugin_apis/smart.h" line="26"/>
      <member name="info" value="1" c:identifier="BD_SMART_TECH_MODE_INFO">
      </member>
      <member name="selftest"
              value="2"
              c:identifier="BD_SMART_TECH_MODE_SELFTEST">
      </member>
    </bitfield>
    <enumeration name="SwapError"
                 c:type="BDSwapError"
                 glib:error-domain="g-bd-swap-error-quark">
      <source-position filename="lib/plugin_apis/swap.h" line="22"/>
      <member name="tech_unavail"
              value="0"
              c:identifier="BD_SWAP_ERROR_TECH_UNAVAIL">
      </member>
      <member name="unknown_state"
              value="1"
              c:identifier="BD_SWAP_ERROR_UNKNOWN_STATE">
      </member>
      <member name="activate" value="2" c:identifier="BD_SWAP_ERROR_ACTIVATE">
      </member>
      <member name="activate_old"
              value="3"
              c:identifier="BD_SWAP_ERROR_ACTIVATE_OLD">
      </member>
      <member name="activate_suspend"
              value="4"
              c:identifier="BD_SWAP_ERROR_ACTIVATE_SUSPEND">
      </member>
      <member name="activate_unknown"
              value="5"
              c:identifier="BD_SWAP_ERROR_ACTIVATE_UNKNOWN">
      </member>
      <member name="activate_pagesize"
              value="6"
              c:identifier="BD_SWAP_ERROR_ACTIVATE_PAGESIZE">
      </member>
      <member name="label_invalid"
              value="7"
              c:identifier="BD_SWAP_ERROR_LABEL_INVALID">
      </member>
      <member name="uuid_invalid"
              value="8"
              c:identifier="BD_SWAP_ERROR_UUID_INVALID">
      </member>
    </enumeration>
    <enumeration name="SwapTech" c:type="BDSwapTech">
      <source-position filename="lib/plugin_apis/swap.h" line="26"/>
      <member name="swap_tech_swap" value="0" c:identifier="BD_SWAP_TECH_SWAP">
      </member>
    </enumeration>
    <bitfield name="SwapTechMode" c:type="BDSwapTechMode">
      <source-position filename="lib/plugin_apis/swap.h" line="34"/>
      <member name="create" value="1" c:identifier="BD_SWAP_TECH_MODE_CREATE">
      </member>
      <member name="activate_deactivate"
              value="2"
              c:identifier="BD_SWAP_TECH_MODE_ACTIVATE_DEACTIVATE">
      </member>
      <member name="query" value="4" c:identifier="BD_SWAP_TECH_MODE_QUERY">
      </member>
      <member name="set_label"
              value="8"
              c:identifier="BD_SWAP_TECH_MODE_SET_LABEL">
      </member>
      <member name="set_uuid"
              value="8"
              c:identifier="BD_SWAP_TECH_MODE_SET_UUID">
      </member>
    </bitfield>
    <constant name="UTILS_LOG_ALERT" value="1" c:type="BD_UTILS_LOG_ALERT">
      <source-position filename="utils/logging.h" line="12"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="UTILS_LOG_CRIT" value="2" c:type="BD_UTILS_LOG_CRIT">
      <source-position filename="utils/logging.h" line="13"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="UTILS_LOG_DEBUG" value="7" c:type="BD_UTILS_LOG_DEBUG">
      <source-position filename="utils/logging.h" line="18"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="UTILS_LOG_EMERG" value="0" c:type="BD_UTILS_LOG_EMERG">
      <source-position filename="utils/logging.h" line="11"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="UTILS_LOG_ERR" value="3" c:type="BD_UTILS_LOG_ERR">
      <source-position filename="utils/logging.h" line="14"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="UTILS_LOG_INFO" value="6" c:type="BD_UTILS_LOG_INFO">
      <source-position filename="utils/logging.h" line="17"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="UTILS_LOG_NOTICE" value="5" c:type="BD_UTILS_LOG_NOTICE">
      <source-position filename="utils/logging.h" line="16"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="UTILS_LOG_WARNING" value="4" c:type="BD_UTILS_LOG_WARNING">
      <source-position filename="utils/logging.h" line="15"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <enumeration name="UtilsDBusError"
                 c:type="BDUtilsDBusError"
                 glib:error-domain="g-bd-utils-dbus-error-quark">
      <source-position filename="utils/dbus.h" line="12"/>
      <member name="fail" value="0" c:identifier="BD_UTILS_DBUS_ERROR_FAIL">
      </member>
      <member name="noexist"
              value="1"
              c:identifier="BD_UTILS_DBUS_ERROR_NOEXIST">
      </member>
    </enumeration>
    <enumeration name="UtilsDevUtilsError"
                 c:type="BDUtilsDevUtilsError"
                 glib:error-domain="g-bd-utils-dev_utils-error-quark">
      <source-position filename="utils/dev_utils.h" line="30"/>
      <member name="utils_dev_utils_error_failed"
              value="0"
              c:identifier="BD_UTILS_DEV_UTILS_ERROR_FAILED">
      </member>
    </enumeration>
    <enumeration name="UtilsExecError"
                 c:type="BDUtilsExecError"
                 glib:error-domain="g-bd-utils-exec-error-quark">
      <source-position filename="utils/exec.h" line="63"/>
      <member name="failed"
              value="0"
              c:identifier="BD_UTILS_EXEC_ERROR_FAILED">
      </member>
      <member name="noout" value="1" c:identifier="BD_UTILS_EXEC_ERROR_NOOUT">
      </member>
      <member name="inval_ver"
              value="2"
              c:identifier="BD_UTILS_EXEC_ERROR_INVAL_VER">
      </member>
      <member name="util_unavailable"
              value="3"
              c:identifier="BD_UTILS_EXEC_ERROR_UTIL_UNAVAILABLE">
      </member>
      <member name="util_unknown_ver"
              value="4"
              c:identifier="BD_UTILS_EXEC_ERROR_UTIL_UNKNOWN_VER">
      </member>
      <member name="util_low_ver"
              value="5"
              c:identifier="BD_UTILS_EXEC_ERROR_UTIL_LOW_VER">
      </member>
      <member name="util_check_error"
              value="6"
              c:identifier="BD_UTILS_EXEC_ERROR_UTIL_CHECK_ERROR">
      </member>
      <member name="util_feature_check_error"
              value="7"
              c:identifier="BD_UTILS_EXEC_ERROR_UTIL_FEATURE_CHECK_ERROR">
      </member>
      <member name="util_feature_unavailable"
              value="8"
              c:identifier="BD_UTILS_EXEC_ERROR_UTIL_FEATURE_UNAVAILABLE">
      </member>
    </enumeration>
    <record name="UtilsLinuxVersion" c:type="BDUtilsLinuxVersion">
      <source-position filename="utils/module.h" line="20"/>
      <field name="major" writable="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="minor" writable="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="micro" writable="1">
        <type name="guint" c:type="guint"/>
      </field>
    </record>
    <callback name="UtilsLogFunc" c:type="BDUtilsLogFunc">
      <doc xml:space="preserve"
           filename="utils/logging.h"
           line="20">Function type for logging function used by the libblockdev's exec utils to
log the information about program executing.</doc>
      <source-position filename="utils/logging.h" line="28"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="level" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/logging.h"
               line="22">log level (as understood by syslog(3))</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="msg" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/logging.h"
               line="23">log message</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </callback>
    <enumeration name="UtilsModuleError"
                 c:type="BDUtilsModuleError"
                 glib:error-domain="g-bd-utils-module-error-quark">
      <source-position filename="utils/module.h" line="14"/>
      <member name="kmod_init_fail"
              value="0"
              c:identifier="BD_UTILS_MODULE_ERROR_KMOD_INIT_FAIL">
      </member>
      <member name="fail" value="1" c:identifier="BD_UTILS_MODULE_ERROR_FAIL">
      </member>
      <member name="noexist"
              value="2"
              c:identifier="BD_UTILS_MODULE_ERROR_NOEXIST">
      </member>
      <member name="module_check_error"
              value="3"
              c:identifier="BD_UTILS_MODULE_ERROR_MODULE_CHECK_ERROR">
      </member>
      <member name="invalid_platform"
              value="4"
              c:identifier="BD_UTILS_MODULE_ERROR_INVALID_PLATFORM">
      </member>
    </enumeration>
    <callback name="UtilsProgExtract" c:type="BDUtilsProgExtract">
      <doc xml:space="preserve"
           filename="utils/exec.h"
           line="22">Callback function used to process a line captured from spawned command's standard
output and standard error output. Typically used to extract completion percentage
of a long-running job.

Note that both outputs are read simultaneously with no guarantees of message order
this function is called with.

The value the @completion points to may contain value previously returned from
this callback or zero when called for the first time. This is useful for extractors
where only some kind of a tick mark is printed out as a progress and previous value
is needed to compute an incremented value. It's important to keep in mind that this
function is only called over lines, i.e. progress reporting printing out tick marks
(e.g. dots) without a newline character might not work properly.

The @line string usually contains trailing newline character, which may be absent
however in case the spawned command exits without printing one. It's guaranteed
this function is called over remaining buffer no matter what the trailing
character is.</doc>
      <source-position filename="utils/exec.h" line="49"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="utils/exec.h"
             line="46">whether the line was a progress reporting line and should be excluded
         from the collected standard output string or not.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="line" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/exec.h"
               line="24">line to extract progress from</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="completion"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="utils/exec.h"
               line="25">percentage of completion</doc>
          <type name="guint8" c:type="guint8*"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="UtilsProgFunc" c:type="BDUtilsProgFunc">
      <source-position filename="utils/exec.h" line="20"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="task_id" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/exec.h"
               line="15">ID of the task/action the progress is reported for</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="status" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/exec.h"
               line="16">progress status</doc>
          <type name="UtilsProgStatus" c:type="BDUtilsProgStatus"/>
        </parameter>
        <parameter name="completion" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/exec.h"
               line="17">percentage of completion</doc>
          <type name="guint8" c:type="guint8"/>
        </parameter>
        <parameter name="msg"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="utils/exec.h"
               line="18">arbitrary progress message (for the user)</doc>
          <type name="utf8" c:type="gchar*"/>
        </parameter>
      </parameters>
    </callback>
    <enumeration name="UtilsProgStatus" c:type="BDUtilsProgStatus">
      <source-position filename="utils/exec.h" line="11"/>
      <member name="started" value="0" c:identifier="BD_UTILS_PROG_STARTED">
      </member>
      <member name="progress" value="1" c:identifier="BD_UTILS_PROG_PROGRESS">
      </member>
      <member name="finished" value="2" c:identifier="BD_UTILS_PROG_FINISHED">
      </member>
    </enumeration>
    <function name="btrfs_add_device"
              c:identifier="bd_btrfs_add_device"
              throws="1">
      <source-position filename="lib/plugin_apis/btrfs.h" line="191"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="187">whether the @device was successfully added to the @mountpoint btrfs volume or not

Tech category: %BD_BTRFS_TECH_MULTI_DEV-%BD_BTRFS_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="mountpoint" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="181">mountpoint of the btrfs volume to add new device to</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="182">a device to add to the btrfs volume</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="183">extra options for the addition (right now
                                                passed to the 'btrfs' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="btrfs_change_label"
              c:identifier="bd_btrfs_change_label"
              throws="1">
      <source-position filename="lib/plugin_apis/btrfs.h" line="400"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="395">whether the label of the @mountpoint filesystem was successfully set
to @label or not

Tech category: %BD_BTRFS_TECH_FS-%BD_BTRFS_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="mountpoint" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="391">a mountpoint of the btrfs filesystem to change label of</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="label" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="392">new label for the filesystem</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="btrfs_check" c:identifier="bd_btrfs_check" throws="1">
      <source-position filename="lib/plugin_apis/btrfs.h" line="372"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="368">whether the filesystem was successfully checked or not

Tech category: %BD_BTRFS_TECH_FS-%BD_BTRFS_TECH_MODE_QUERY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="363">a device that is part of the checked btrfs volume</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="364">extra options for the check (right now
                                                passed to the 'btrfs' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="btrfs_create_snapshot"
              c:identifier="bd_btrfs_create_snapshot"
              throws="1">
      <source-position filename="lib/plugin_apis/btrfs.h" line="281"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="277">whether the @dest snapshot of @source was successfully created or not

Tech category: %BD_BTRFS_TECH_SNAPSHOT-%BD_BTRFS_TECH_MODE_CREATE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="source" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="270">path to source subvolume</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="dest" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="271">path to new snapshot volume</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="ro" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="272">whether the snapshot should be read-only</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="273">extra options for the snapshot creation (right now
                                                passed to the 'btrfs' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="btrfs_create_subvolume"
              c:identifier="bd_btrfs_create_subvolume"
              throws="1">
      <source-position filename="lib/plugin_apis/btrfs.h" line="221"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="217">whether the @mountpoint/@name subvolume was successfully created or not

Tech category: %BD_BTRFS_TECH_SUBVOL-%BD_BTRFS_TECH_MODE_CREATE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="mountpoint" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="211">mountpoint of the btrfs volume to create subvolume under</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="212">name of the subvolume</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="213">extra options for the subvolume creation (right now
                                                passed to the 'btrfs' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="btrfs_create_volume"
              c:identifier="bd_btrfs_create_volume"
              throws="1">
      <source-position filename="lib/plugin_apis/btrfs.h" line="176"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="170">whether the new btrfs volume was created from @devices or not

See mkfs.btrfs(8) for details about @data_level, @md_level and btrfs in general.

Tech category: %BD_BTRFS_TECH_MULTI_DEV-%BD_BTRFS_TECH_MODE_CREATE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="devices" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="162">list of devices to create btrfs volume from</doc>
          <array c:type="const gchar**">
            <type name="utf8" c:type="gchar*"/>
          </array>
        </parameter>
        <parameter name="label"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="163">label for the volume</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="data_level"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="164">RAID level for the data or %NULL to use the default</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="md_level"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="165">RAID level for the metadata or %NULL to use the default</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="166">extra options for the volume creation (right now
                                                passed to the 'mkfs.btrfs' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="btrfs_delete_subvolume"
              c:identifier="bd_btrfs_delete_subvolume"
              throws="1">
      <source-position filename="lib/plugin_apis/btrfs.h" line="236"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="232">whether the @mountpoint/@name subvolume was successfully deleted or not

Tech category: %BD_BTRFS_TECH_SUBVOL-%BD_BTRFS_TECH_MODE_DELETE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="mountpoint" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="226">mountpoint of the btrfs volume to delete subvolume from</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="227">name of the subvolume</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="228">extra options for the subvolume deletion (right now
                                                passed to the 'btrfs' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="btrfs_error_quark" c:identifier="bd_btrfs_error_quark">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="btrfs_filesystem_info"
              c:identifier="bd_btrfs_filesystem_info"
              throws="1">
      <source-position filename="lib/plugin_apis/btrfs.h" line="323"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="319">information about the @device's volume's filesystem or %NULL in case of error

Tech category: %BD_BTRFS_TECH_FS-%BD_BTRFS_TECH_MODE_QUERY</doc>
        <type name="BtrfsFilesystemInfo" c:type="BDBtrfsFilesystemInfo*"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="316">a device that is part of the queried btrfs volume</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="btrfs_get_default_subvolume_id"
              c:identifier="bd_btrfs_get_default_subvolume_id"
              throws="1">
      <source-position filename="lib/plugin_apis/btrfs.h" line="249"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="244">ID of the @mountpoint volume's default subvolume. If 0,
         @error may be set to indicate error

Tech category: %BD_BTRFS_TECH_SUBVOL-%BD_BTRFS_TECH_MODE_QUERY</doc>
        <type name="guint64" c:type="guint64"/>
      </return-value>
      <parameters>
        <parameter name="mountpoint" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="241">mountpoint of the volume to get the default subvolume ID of</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="btrfs_is_tech_avail"
              c:identifier="bd_btrfs_is_tech_avail"
              throws="1">
      <source-position filename="lib/plugin_apis/btrfs.h" line="156"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="153">whether the @tech-@mode combination is available -- supported by the
         plugin implementation and having all the runtime dependencies available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="tech" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="149">the queried tech</doc>
          <type name="BtrfsTech" c:type="BDBtrfsTech"/>
        </parameter>
        <parameter name="mode" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="150">a bit mask of queried modes of operation (#BDBtrfsTechMode) for @tech</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
      </parameters>
    </function>
    <function name="btrfs_list_devices"
              c:identifier="bd_btrfs_list_devices"
              throws="1">
      <source-position filename="lib/plugin_apis/btrfs.h" line="294"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="289">information about the devices that are part of the btrfs volume
containing @device or %NULL in case of error

Tech category: %BD_BTRFS_TECH_MULTI_DEV-%BD_BTRFS_TECH_MODE_QUERY</doc>
        <array c:type="BDBtrfsDeviceInfo**">
          <type name="BtrfsDeviceInfo" c:type="BDBtrfsDeviceInfo*"/>
        </array>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="286">a device that is part of the queried btrfs volume</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="btrfs_list_subvolumes"
              c:identifier="bd_btrfs_list_subvolumes"
              throws="1">
      <source-position filename="lib/plugin_apis/btrfs.h" line="311"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="303">information about the subvolumes that are part of the btrfs volume
mounted at @mountpoint or %NULL in case of error

The subvolumes are sorted in a way that no child subvolume appears in the
list before its parent (sub)volume.

Tech category: %BD_BTRFS_TECH_SUBVOL-%BD_BTRFS_TECH_MODE_QUERY</doc>
        <array c:type="BDBtrfsSubvolumeInfo**">
          <type name="BtrfsSubvolumeInfo" c:type="BDBtrfsSubvolumeInfo*"/>
        </array>
      </return-value>
      <parameters>
        <parameter name="mountpoint" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="299">a mountpoint of the queried btrfs volume</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="snapshots_only" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="300">whether to list only snapshot subvolumes or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="btrfs_mkfs" c:identifier="bd_btrfs_mkfs" throws="1">
      <source-position filename="lib/plugin_apis/btrfs.h" line="342"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="336">whether the new btrfs volume was created from @devices or not

See mkfs.btrfs(8) for details about @data_level, @md_level and btrfs in general.

Tech category: %BD_BTRFS_TECH_FS-%BD_BTRFS_TECH_MODE_CREATE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="devices" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="328">list of devices to create btrfs volume from</doc>
          <array c:type="const gchar**">
            <type name="utf8" c:type="gchar*"/>
          </array>
        </parameter>
        <parameter name="label"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="329">label for the volume</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="data_level"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="330">RAID level for the data or %NULL to use the default</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="md_level"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="331">RAID level for the metadata or %NULL to use the default</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="332">extra options for the volume creation (right now
                                                passed to the 'btrfs' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="btrfs_remove_device"
              c:identifier="bd_btrfs_remove_device"
              throws="1">
      <source-position filename="lib/plugin_apis/btrfs.h" line="206"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="202">whether the @device was successfully removed from the @mountpoint btrfs volume or not

Tech category: %BD_BTRFS_TECH_MULTI_DEV-%BD_BTRFS_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="mountpoint" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="196">mountpoint of the btrfs volume to remove device from</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="197">a device to remove from the btrfs volume</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="198">extra options for the removal (right now
                                                passed to the 'btrfs' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="btrfs_repair" c:identifier="bd_btrfs_repair" throws="1">
      <source-position filename="lib/plugin_apis/btrfs.h" line="386"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="382">whether the filesystem was successfully checked and repaired or not

Tech category: %BD_BTRFS_TECH_FS-%BD_BTRFS_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="377">a device that is part of the to be repaired btrfs volume</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="378">extra options for the repair (right now
                                                passed to the 'btrfs' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="btrfs_resize" c:identifier="bd_btrfs_resize" throws="1">
      <source-position filename="lib/plugin_apis/btrfs.h" line="358"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="353">whether the @mountpoint filesystem was successfully resized to @size
or not

Tech category: %BD_BTRFS_TECH_FS-%BD_BTRFS_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="mountpoint" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="347">a mountpoint of the to be resized btrfs filesystem</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="348">requested new size</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="349">extra options for the volume resize (right now
                                                passed to the 'btrfs' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="btrfs_set_default_subvolume"
              c:identifier="bd_btrfs_set_default_subvolume"
              throws="1">
      <source-position filename="lib/plugin_apis/btrfs.h" line="265"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/btrfs.h"
             line="260">whether the @mountpoint volume's default subvolume was correctly set
         to @subvol_id or not

Tech category: %BD_BTRFS_TECH_SUBVOL-%BD_BTRFS_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="mountpoint" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="254">mountpoint of the volume to set the default subvolume ID of</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="subvol_id" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="255">ID of the subvolume to be set as the default subvolume</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/btrfs.h"
               line="256">extra options for the setting (right now
                                                passed to the 'btrfs' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_bitlk_close"
              c:identifier="bd_crypto_bitlk_close"
              throws="1">
      <source-position filename="lib/plugin_apis/crypto.h" line="1065"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="1061">whether the given @bitlk_device was successfully closed or not

Tech category: %BD_CRYPTO_TECH_BITLK-%BD_CRYPTO_TECH_MODE_OPEN_CLOSE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="bitlk_device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="1058">BITLK device to close</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_bitlk_info"
              c:identifier="bd_crypto_bitlk_info"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/crypto.h"
           line="861">Returns (transfer full): information about the @device or %NULL in case of error

Tech category: %BD_CRYPTO_TECH_BITLK-%BD_CRYPTO_TECH_MODE_QUERY</doc>
      <source-position filename="lib/plugin_apis/crypto.h" line="870"/>
      <return-value transfer-ownership="full">
        <type name="CryptoBITLKInfo" c:type="BDCryptoBITLKInfo*"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="863">a device to get information about</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_bitlk_open"
              c:identifier="bd_crypto_bitlk_open"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/crypto.h"
           line="1039">Supported @context types for this function: passphrase, key file</doc>
      <source-position filename="lib/plugin_apis/crypto.h" line="1053"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="1049">whether the @device was successfully opened or not

Tech category: %BD_CRYPTO_TECH_BITLK-%BD_CRYPTO_TECH_MODE_OPEN_CLOSE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="1041">the device to open</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="1042">name for the BITLK device</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="context" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="1043">key slot context (passphrase/keyfile/token...) for this BITLK device</doc>
          <type name="CryptoKeyslotContext" c:type="BDCryptoKeyslotContext*"/>
        </parameter>
        <parameter name="read_only" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="1044">whether to open as read-only or not (meaning read-write)</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_device_is_luks"
              c:identifier="bd_crypto_device_is_luks"
              throws="1">
      <source-position filename="lib/plugin_apis/crypto.h" line="467"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="461">%TRUE if the given @device is a LUKS device or %FALSE if not or
failed to determine (the @error) is populated with the error in such
cases)

Tech category: %BD_CRYPTO_TECH_LUKS-%BD_CRYPTO_TECH_MODE_QUERY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="458">the queried device</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_device_seems_encrypted"
              c:identifier="bd_crypto_device_seems_encrypted"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/crypto.h"
           line="963">Determines whether a block device seems to be encrypted.

TCRYPT volumes are not easily identifiable, because they have no
cleartext header, but are completely encrypted. This function is
used to determine whether a block device is a candidate for being
TCRYPT encrypted.

To achieve this, we calculate the chi square value of the first
512 Bytes and treat devices with a chi square value between 136
and 426 as candidates for being encrypted.
For the reasoning, see: https://tails.boum.org/blueprint/veracrypt/</doc>
      <source-position filename="lib/plugin_apis/crypto.h" line="986"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="980">%TRUE if the given @device seems to be encrypted or %FALSE if not or
failed to determine (the @error) is populated with the error in such
cases)

Tech category: %BD_CRYPTO_TECH_TRUECRYPT-%BD_CRYPTO_TECH_MODE_QUERY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="965">the queried device</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_error_quark" c:identifier="bd_crypto_error_quark">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="crypto_escrow_device"
              c:identifier="bd_crypto_escrow_device"
              throws="1">
      <source-position filename="lib/plugin_apis/crypto.h" line="1036"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="1032">whether the escrow data was successfully created for @device or not

Tech category: %BD_CRYPTO_TECH_ESCROW-%BD_CRYPTO_TECH_MODE_CREATE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="1025">path of the device to create escrow data for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="passphrase" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="1026">passphrase used for the device</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="cert_data" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="1027">certificate data to use for escrow</doc>
          <array c:type="const gchar*">
            <type name="gchar"/>
          </array>
        </parameter>
        <parameter name="directory" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="1028">directory to put escrow data into</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="backup_passphrase"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="1029">backup passphrase for the device or %NULL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_fvault2_close"
              c:identifier="bd_crypto_fvault2_close"
              throws="1">
      <source-position filename="lib/plugin_apis/crypto.h" line="1094"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="1090">whether the given @fvault2_device was successfully closed or not

Tech category: %BD_CRYPTO_TECH_FVAULT2-%BD_CRYPTO_TECH_MODE_OPEN_CLOSE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="fvault2_device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="1087">FVAULT2 device to close</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_fvault2_open"
              c:identifier="bd_crypto_fvault2_open"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/crypto.h"
           line="1068">Supported @context types for this function: passphrase, key file</doc>
      <source-position filename="lib/plugin_apis/crypto.h" line="1082"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="1078">whether the @device was successfully opened or not

Tech category: %BD_CRYPTO_TECH_FVAULT2-%BD_CRYPTO_TECH_MODE_OPEN_CLOSE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="1070">the device to open</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="1071">name for the FVAULT2 device</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="context" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="1072">key slot context (passphrase/keyfile/token...) for this FVAULT2 volume</doc>
          <type name="CryptoKeyslotContext" c:type="BDCryptoKeyslotContext*"/>
        </parameter>
        <parameter name="read_only" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="1073">whether to open as read-only or not (meaning read-write)</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_generate_backup_passphrase"
              c:identifier="bd_crypto_generate_backup_passphrase"
              throws="1">
      <source-position filename="lib/plugin_apis/crypto.h" line="453"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="447">A newly generated %BD_CRYPTO_BACKUP_PASSPHRASE_LENGTH-long passphrase.

See %BD_CRYPTO_BACKUP_PASSPHRASE_CHARSET for the definition of the charset used for the passphrase.

Tech category: always available</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
    </function>
    <function name="crypto_integrity_close"
              c:identifier="bd_crypto_integrity_close"
              throws="1">
      <source-position filename="lib/plugin_apis/crypto.h" line="946"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="942">whether the given @integrity_device was successfully closed or not

Tech category: %BD_CRYPTO_TECH_INTEGRITY-%BD_CRYPTO_TECH_MODE_OPEN_CLOSE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="integrity_device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="939">integrity device to close</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_integrity_format"
              c:identifier="bd_crypto_integrity_format"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/crypto.h"
           line="897">Formats the given @device as integrity according to the other parameters given.

Supported @context types for this function: volume key</doc>
      <source-position filename="lib/plugin_apis/crypto.h" line="915"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="910">whether the given @device was successfully formatted as integrity or not
(the @error) contains the error in such cases)

Tech category: %BD_CRYPTO_TECH_INTEGRITY-%BD_CRYPTO_TECH_MODE_CREATE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="899">a device to format as integrity</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="algorithm" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="900">integrity algorithm specification (e.g. "crc32c" or "sha256")</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="wipe" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="901">whether to wipe the device after format; a device that is not initially wiped will contain invalid checksums</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="context"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="902">key slot context (passphrase/keyfile/token...) for this device</doc>
          <type name="CryptoKeyslotContext" c:type="BDCryptoKeyslotContext*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="903">extra arguments for integrity format creation</doc>
          <type name="CryptoIntegrityExtra" c:type="BDCryptoIntegrityExtra*"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_integrity_info"
              c:identifier="bd_crypto_integrity_info"
              throws="1">
      <source-position filename="lib/plugin_apis/crypto.h" line="882"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="878">information about the @device or %NULL in case of error

Tech category: %BD_CRYPTO_TECH_INTEGRITY-%BD_CRYPTO_TECH_MODE_QUERY</doc>
        <type name="CryptoIntegrityInfo" c:type="BDCryptoIntegrityInfo*"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="875">a device to get information about</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_integrity_open"
              c:identifier="bd_crypto_integrity_open"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/crypto.h"
           line="918">Supported @context types for this function: volume key</doc>
      <source-position filename="lib/plugin_apis/crypto.h" line="934"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="930">whether the @device was successfully opened or not

Tech category: %BD_CRYPTO_TECH_INTEGRITY-%BD_CRYPTO_TECH_MODE_OPEN_CLOSE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="920">integrity device to open</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="921">name for the opened @device</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="algorithm" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="922">integrity algorithm specification (e.g. "crc32c" or "sha256")</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="context"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="923">key slot context (passphrase/keyfile/token...) for this device</doc>
          <type name="CryptoKeyslotContext" c:type="BDCryptoKeyslotContext*"/>
        </parameter>
        <parameter name="flags" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="924">flags for the integrity device activation</doc>
          <type name="CryptoIntegrityOpenFlags"
                c:type="BDCryptoIntegrityOpenFlags"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="925">extra arguments for integrity open</doc>
          <type name="CryptoIntegrityExtra" c:type="BDCryptoIntegrityExtra*"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_is_tech_avail"
              c:identifier="bd_crypto_is_tech_avail"
              throws="1">
      <source-position filename="lib/plugin_apis/crypto.h" line="440"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="437">whether the @tech-@mode combination is available -- supported by the
         plugin implementation and having all the runtime dependencies available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="tech" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="433">the queried tech</doc>
          <type name="CryptoTech" c:type="BDCryptoTech"/>
        </parameter>
        <parameter name="mode" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="434">a bit mask of queried modes of operation (#BDCryptoTechMode) for @tech</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_keyring_add_key"
              c:identifier="bd_crypto_keyring_add_key"
              throws="1">
      <source-position filename="lib/plugin_apis/crypto.h" line="960"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="956">whether the given key was successfully saved to kernel keyring or not

Tech category: %BD_CRYPTO_TECH_KEYRING-%BD_CRYPTO_TECH_MODE_ADD_KEY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="key_desc" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="951">kernel keyring key description</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="key_data" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="952">a key to add to kernel keyring (may contain arbitrary binary data)</doc>
          <array length="2" zero-terminated="0" c:type="const guint8*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="data_len" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="953">length of the @key_data buffer</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_luks_add_key"
              c:identifier="bd_crypto_luks_add_key"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/crypto.h"
           line="666">Supported @context types for this function: passphrase, key file</doc>
      <source-position filename="lib/plugin_apis/crypto.h" line="680"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="675">whether the @ncontext was successfully added to @device
or not

Tech category: %BD_CRYPTO_TECH_LUKS-%BD_CRYPTO_TECH_MODE_ADD_KEY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="668">device to add new key to</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="context" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="669">key slot context (passphrase/keyfile/token...) to for this LUKS @device</doc>
          <type name="CryptoKeyslotContext" c:type="BDCryptoKeyslotContext*"/>
        </parameter>
        <parameter name="ncontext" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="670">new key slot context (passphrase/keyfile/token...) to add to this LUKS @device</doc>
          <type name="CryptoKeyslotContext" c:type="BDCryptoKeyslotContext*"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_luks_change_key"
              c:identifier="bd_crypto_luks_change_key"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/crypto.h"
           line="698">Supported @context types for this function: passphrase, key file</doc>
      <source-position filename="lib/plugin_apis/crypto.h" line="711"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="707">whether the key was successfully changed or not

Tech category: %BD_CRYPTO_TECH_LUKS-%BD_CRYPTO_TECH_MODE_ADD_KEY&amp;%BD_CRYPTO_TECH_MODE_REMOVE_KEY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="700">device to change key of</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="context" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="701">key slot context (passphrase/keyfile/token...) for this LUKS @device</doc>
          <type name="CryptoKeyslotContext" c:type="BDCryptoKeyslotContext*"/>
        </parameter>
        <parameter name="ncontext" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="702">new key slot context (passphrase/keyfile/token...) to add to this LUKS @device</doc>
          <type name="CryptoKeyslotContext" c:type="BDCryptoKeyslotContext*"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_luks_close"
              c:identifier="bd_crypto_luks_close"
              throws="1">
      <source-position filename="lib/plugin_apis/crypto.h" line="663"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="659">whether the given @luks_device was successfully closed or not

Tech category: %BD_CRYPTO_TECH_LUKS-%BD_CRYPTO_TECH_MODE_OPEN_CLOSE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="luks_device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="656">LUKS device to close</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_luks_convert"
              c:identifier="bd_crypto_luks_convert"
              throws="1">
      <source-position filename="lib/plugin_apis/crypto.h" line="846"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="839">whether the @device was converted to @target_version.
         False, if the @device is already in the @target_version format.

Warning: LUKS header loss is possible. See bd_crypto_luks_header_backup() and bd_crypto_luks_header_restore()

Tech category: %BD_CRYPTO_TECH_LUKS-%BD_CRYPTO_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="835">a LUKS device to convert to a different version of LUKS</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="target_version" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="836">the LUKS version to convert to</doc>
          <type name="CryptoLUKSVersion" c:type="BDCryptoLUKSVersion"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_luks_format"
              c:identifier="bd_crypto_luks_format"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/crypto.h"
           line="602">Formats the given @device as LUKS according to the other parameters given. If
@min_entropy is specified (greater than 0), the function waits for enough
entropy to be available in the random data pool (WHICH MAY POTENTIALLY TAKE
FOREVER).

Supported @context types for this function: passphrase, key file</doc>
      <source-position filename="lib/plugin_apis/crypto.h" line="625"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="620">whether the given @device was successfully formatted as LUKS or not
(the @error) contains the error in such cases)

Tech category: %BD_CRYPTO_TECH_LUKS-%BD_CRYPTO_TECH_MODE_CREATE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="604">a device to format as LUKS</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="cipher"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="605">cipher specification (type-mode, e.g. "aes-xts-plain64") or %NULL to use the default</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="key_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="606">size of the volume key in bits or 0 to use the default</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="context" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="607">key slot context (passphrase/keyfile/token...) for this LUKS device</doc>
          <type name="CryptoKeyslotContext" c:type="BDCryptoKeyslotContext*"/>
        </parameter>
        <parameter name="min_entropy" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="608">minimum random data entropy (in bits) required to format @device as LUKS</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="luks_version" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="609">whether to use LUKS v1 or LUKS v2</doc>
          <type name="CryptoLUKSVersion" c:type="BDCryptoLUKSVersion"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="610">extra arguments for LUKS format creation</doc>
          <type name="CryptoLUKSExtra" c:type="BDCryptoLUKSExtra*"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_luks_header_backup"
              c:identifier="bd_crypto_luks_header_backup"
              throws="1">
      <source-position filename="lib/plugin_apis/crypto.h" line="788"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="783">whether the given backup of @device was successfully written to
         @backup_file or not

Tech category: %BD_CRYPTO_TECH_LUKS-%BD_CRYPTO_TECH_MODE_BACKUP_RESTORE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="779">device to backup the LUKS header</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="backup_file" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="780">file to save the header backup to</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_luks_header_restore"
              c:identifier="bd_crypto_luks_header_restore"
              throws="1">
      <source-position filename="lib/plugin_apis/crypto.h" line="803"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="797">whether the given @device LUKS header was successfully restored
         from @backup_file


Tech category: %BD_CRYPTO_TECH_LUKS-%BD_CRYPTO_TECH_MODE_BACKUP_RESTORE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="793">device to restore the LUKS header to</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="backup_file" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="794">existing file with a LUKS header backup</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_luks_info"
              c:identifier="bd_crypto_luks_info"
              throws="1">
      <source-position filename="lib/plugin_apis/crypto.h" line="858"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="854">information about the @device or %NULL in case of error

Tech category: %BD_CRYPTO_TECH_LUKS-%BD_CRYPTO_TECH_MODE_QUERY</doc>
        <type name="CryptoLUKSInfo" c:type="BDCryptoLUKSInfo*"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="851">a device to get information about</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_luks_kill_slot"
              c:identifier="bd_crypto_luks_kill_slot"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/crypto.h"
           line="761">Note: This can destroy last remaining keyslot without confirmation making
      the LUKS device permanently inaccessible.</doc>
      <source-position filename="lib/plugin_apis/crypto.h" line="774"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="770">whether the given @slot was successfully destroyed or not

Tech category: %BD_CRYPTO_TECH_LUKS-%BD_CRYPTO_TECH_MODE_REMOVE_KEY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="763">device to kill slot on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="slot" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="764">keyslot to destroy</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_luks_open"
              c:identifier="bd_crypto_luks_open"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/crypto.h"
           line="628">Supported @context types for this function: passphrase, key file, keyring</doc>
      <source-position filename="lib/plugin_apis/crypto.h" line="651"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="638">whether the @device was successfully opened or not

Tech category: %BD_CRYPTO_TECH_LUKS-%BD_CRYPTO_TECH_MODE_OPEN_CLOSE

Example of using %bd_crypto_luks_open with %BDCryptoKeyslotContext:

|[&lt;!-- language="C" --&gt;
BDCryptoKeyslotContext *context = NULL;

context = bd_crypto_keyslot_context_new_passphrase ("passphrase", 10, NULL);
bd_crypto_luks_open ("/dev/vda1", "luks-device", context, FALSE, NULL);
]|</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="630">the device to open</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="631">name for the LUKS device</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="context" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="632">key slot context (passphrase/keyfile/token...) to open this LUKS @device</doc>
          <type name="CryptoKeyslotContext" c:type="BDCryptoKeyslotContext*"/>
        </parameter>
        <parameter name="read_only" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="633">whether to open as read-only or not (meaning read-write)</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_luks_remove_key"
              c:identifier="bd_crypto_luks_remove_key"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/crypto.h"
           line="683">Supported @context types for this function: passphrase, key file</doc>
      <source-position filename="lib/plugin_apis/crypto.h" line="695"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="691">whether the key was successfully removed or not

Tech category: %BD_CRYPTO_TECH_LUKS-%BD_CRYPTO_TECH_MODE_REMOVE_KEY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="685">device to add new key to</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="context" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="686">key slot context (passphrase/keyfile/token...) to remove from this LUKS @device</doc>
          <type name="CryptoKeyslotContext" c:type="BDCryptoKeyslotContext*"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_luks_resize"
              c:identifier="bd_crypto_luks_resize"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/crypto.h"
           line="714">Supported @context types for this function: passphrase, key file</doc>
      <source-position filename="lib/plugin_apis/crypto.h" line="731"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="723">whether the @luks_device was successfully resized or not

You need to specify either @context for LUKS 2 devices that
don't have verified key loaded in kernel.
For LUKS 1 devices you can set @context %NULL.

Tech category: %BD_CRYPTO_TECH_LUKS-%BD_CRYPTO_TECH_MODE_RESIZE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="luks_device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="716">opened LUKS device to resize</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="717">requested size in sectors or 0 to adapt to the backing device</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="context"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="718">key slot context (passphrase/keyfile/token...) for this LUKS @device</doc>
          <type name="CryptoKeyslotContext" c:type="BDCryptoKeyslotContext*"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_luks_resume"
              c:identifier="bd_crypto_luks_resume"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/crypto.h"
           line="746">Supported @context types for this function: passphrase, key file</doc>
      <source-position filename="lib/plugin_apis/crypto.h" line="758"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="754">whether the given @luks_device was successfully resumed or not

Tech category: %BD_CRYPTO_TECH_LUKS-%BD_CRYPTO_TECH_MODE_SUSPEND_RESUME</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="luks_device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="748">LUKS device to resume</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="context"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="749">key slot context (passphrase/keyfile/token...) for @luks_device</doc>
          <type name="CryptoKeyslotContext" c:type="BDCryptoKeyslotContext*"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_luks_set_label"
              c:identifier="bd_crypto_luks_set_label"
              throws="1">
      <source-position filename="lib/plugin_apis/crypto.h" line="817"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="813">whether the given @label and @subsystem were successfully set or not

Tech category: %BD_CRYPTO_TECH_LUKS-%BD_CRYPTO_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="808">device to set label on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="label"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="809">label to set</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="subsystem"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="810">subsystem to set</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_luks_set_uuid"
              c:identifier="bd_crypto_luks_set_uuid"
              throws="1">
      <source-position filename="lib/plugin_apis/crypto.h" line="830"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="826">whether the given @uuid was successfully set or not

Tech category: %BD_CRYPTO_TECH_LUKS-%BD_CRYPTO_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="822">device to set UUID on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="uuid"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="823">UUID to set or %NULL to generate a new one</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_luks_status"
              c:identifier="bd_crypto_luks_status"
              throws="1">
      <source-position filename="lib/plugin_apis/crypto.h" line="481"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="475">one of "invalid", "inactive", "active" or "busy" or
%NULL if failed to determine (@error is populated with the error in
such cases)

Tech category: %BD_CRYPTO_TECH_LUKS-%BD_CRYPTO_TECH_MODE_QUERY</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="luks_device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="472">the queried LUKS device</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_luks_suspend"
              c:identifier="bd_crypto_luks_suspend"
              throws="1">
      <source-position filename="lib/plugin_apis/crypto.h" line="743"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="739">whether the given @luks_device was successfully suspended or not

Tech category: %BD_CRYPTO_TECH_LUKS-%BD_CRYPTO_TECH_MODE_SUSPEND_RESUME</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="luks_device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="736">LUKS device to suspend</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_luks_token_info"
              c:identifier="bd_crypto_luks_token_info"
              throws="1">
      <source-position filename="lib/plugin_apis/crypto.h" line="894"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="890">information about tokens on @device

Tech category: %BD_CRYPTO_TECH_LUKS-%BD_CRYPTO_TECH_MODE_QUERY</doc>
        <array c:type="BDCryptoLUKSTokenInfo**">
          <type name="CryptoLUKSTokenInfo" c:type="BDCryptoLUKSTokenInfo*"/>
        </array>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="887">a device to get LUKS2 token information about</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_opal_format"
              c:identifier="bd_crypto_opal_format"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/crypto.h"
           line="1126">Formats the given @device as LUKS HW-OPAL according to the other parameters given. If
@min_entropy is specified (greater than 0), the function waits for enough
entropy to be available in the random data pool (WHICH MAY POTENTIALLY TAKE
FOREVER).

Supported @context types for this function: passphrase, key file
Supported @opal_context types for this function: passphrase</doc>
      <source-position filename="lib/plugin_apis/crypto.h" line="1151"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="1146">whether the given @device was successfully formatted as LUKS HW-OPAL or not
(the @error contains the error in such cases)

Tech category: %BD_CRYPTO_TECH_LUKS-%BD_CRYPTO_TECH_MODE_CREATE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="1128">a device to format as LUKS HW-OPAL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="cipher"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="1129">cipher specification (type-mode, e.g. "aes-xts-plain64") or %NULL to use the default</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="key_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="1130">size of the volume key in bits or 0 to use the default</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="context" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="1131">key slot context (passphrase/keyfile/token...) for this LUKS device</doc>
          <type name="CryptoKeyslotContext" c:type="BDCryptoKeyslotContext*"/>
        </parameter>
        <parameter name="min_entropy" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="1132">minimum random data entropy (in bits) required to format @device as LUKS</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="hw_encryption" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="1133">type of hardware encryption (SW+HW or HW only)</doc>
          <type name="CryptoLUKSHWEncryptionType"
                c:type="BDCryptoLUKSHWEncryptionType"/>
        </parameter>
        <parameter name="opal_context" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="1134">OPAL admin passphrase</doc>
          <type name="CryptoKeyslotContext" c:type="BDCryptoKeyslotContext*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="1135">extra arguments for LUKS format creation</doc>
          <type name="CryptoLUKSExtra" c:type="BDCryptoLUKSExtra*"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_opal_is_supported"
              c:identifier="bd_crypto_opal_is_supported"
              throws="1">
      <source-position filename="lib/plugin_apis/crypto.h" line="1108"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="1102">%TRUE if the given @device supports OPAL or %FALSE if not or
failed to determine (the @error is populated with the error in such
cases).

Tech category: %BD_CRYPTO_TECH_SED_OPAL-%BD_CRYPTO_TECH_MODE_QUERY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="1099">device to check for OPAL support</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_opal_reset_device"
              c:identifier="bd_crypto_opal_reset_device"
              throws="1">
      <source-position filename="lib/plugin_apis/crypto.h" line="1168"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="1160">whether PSI reset on @device was successful or not.

Warning: PSID reset will remove all data from @device!

Supported @context types for this function: passphrase, key file

Tech category: %BD_CRYPTO_TECH_SED_OPAL-%BD_CRYPTO_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="1156">LUKS HW-OPAL device to run PSID reset on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="context" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="1157">PSID context</doc>
          <type name="CryptoKeyslotContext" c:type="BDCryptoKeyslotContext*"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_opal_wipe_device"
              c:identifier="bd_crypto_opal_wipe_device"
              throws="1">
      <source-position filename="lib/plugin_apis/crypto.h" line="1123"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="1117">whether @device was successfully wiped or not.

Supported @context types for this function: passphrase

Tech category: %BD_CRYPTO_TECH_SED_OPAL-%BD_CRYPTO_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="1113">LUKS HW-OPAL device to wipe</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="context" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="1114">OPAL admin passphrase context</doc>
          <type name="CryptoKeyslotContext" c:type="BDCryptoKeyslotContext*"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_tc_close"
              c:identifier="bd_crypto_tc_close"
              throws="1">
      <source-position filename="lib/plugin_apis/crypto.h" line="1020"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="1016">whether the given @tc_device was successfully closed or not

Tech category: %BD_CRYPTO_TECH_TRUECRYPT-%BD_CRYPTO_TECH_MODE_OPEN_CLOSE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="tc_device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="1013">TrueCrypt/VeraCrypt device to close</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="crypto_tc_open"
              c:identifier="bd_crypto_tc_open"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/crypto.h"
           line="989">Supported @context types for this function: passphrase</doc>
      <source-position filename="lib/plugin_apis/crypto.h" line="1008"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/crypto.h"
             line="1004">whether the @device was successfully opened or not

Tech category: %BD_CRYPTO_TECH_TRUECRYPT-%BD_CRYPTO_TECH_MODE_OPEN_CLOSE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="991">the device to open</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="992">name for the TrueCrypt/VeraCrypt device</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="context"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="993">passphrase key slot context for this TrueCrypt/VeraCrypt volume</doc>
          <type name="CryptoKeyslotContext" c:type="BDCryptoKeyslotContext*"/>
        </parameter>
        <parameter name="keyfiles"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="995">paths to the keyfiles for the TrueCrypt/VeraCrypt volume</doc>
          <array c:type="const gchar**">
            <type name="utf8" c:type="gchar*"/>
          </array>
        </parameter>
        <parameter name="hidden" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="996">whether a hidden volume inside the volume should be opened</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="system" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="997">whether to try opening as an encrypted system (with boot loader)</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="veracrypt" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="998">whether to try VeraCrypt modes (TrueCrypt modes are tried anyway)</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="veracrypt_pim" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="999">VeraCrypt PIM value (only used if @veracrypt is %TRUE)</doc>
          <type name="guint32" c:type="guint32"/>
        </parameter>
        <parameter name="read_only" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/crypto.h"
               line="994">whether to open as read-only or not (meaning read-write)</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="dm_create_linear"
              c:identifier="bd_dm_create_linear"
              throws="1">
      <source-position filename="lib/plugin_apis/dm.h" line="57"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/dm.h"
             line="52">whether the new linear mapping @map_name was successfully created
for the @device or not

Tech category: %BD_DM_TECH_MAP-%BD_DM_TECH_MODE_CREATE_ACTIVATE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="map_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/dm.h"
               line="46">name of the map</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/dm.h"
               line="47">device to create map for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="length" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/dm.h"
               line="48">length of the mapping in sectors</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="uuid"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/dm.h"
               line="49">UUID for the new dev mapper device or %NULL if not specified</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="dm_error_quark" c:identifier="bd_dm_error_quark">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="dm_get_subsystem_from_name"
              c:identifier="bd_dm_get_subsystem_from_name"
              throws="1">
      <source-position filename="lib/plugin_apis/dm.h" line="107"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/dm.h"
             line="103">subsystem of the given device

Tech category: %BD_DM_TECH_MAP-%BD_DM_TECH_MODE_QUERY</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="device_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/dm.h"
               line="100">name of the device</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="dm_is_tech_avail"
              c:identifier="bd_dm_is_tech_avail"
              throws="1">
      <source-position filename="lib/plugin_apis/dm.h" line="41"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/dm.h"
             line="38">whether the @tech-@mode combination is available -- supported by the
         plugin implementation and having all the runtime dependencies available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="tech" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/dm.h"
               line="34">the queried tech</doc>
          <type name="DMTech" c:type="BDDMTech"/>
        </parameter>
        <parameter name="mode" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/dm.h"
               line="35">a bit mask of queried modes of operation (#BDDMTechMode) for @tech</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
      </parameters>
    </function>
    <function name="dm_map_exists" c:identifier="bd_dm_map_exists" throws="1">
      <source-position filename="lib/plugin_apis/dm.h" line="122"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/dm.h"
             line="117">whether the given @map_name exists (and is live if @live_only is
%TRUE (and is active if @active_only is %TRUE)).

Tech category: %BD_DM_TECH_MAP-%BD_DM_TECH_MODE_QUERY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="map_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/dm.h"
               line="112">name of the queried map</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="live_only" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/dm.h"
               line="113">whether to go through the live maps only or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="active_only" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/dm.h"
               line="114">whether to ignore suspended maps or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="dm_name_from_node"
              c:identifier="bd_dm_name_from_node"
              throws="1">
      <source-position filename="lib/plugin_apis/dm.h" line="82"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/dm.h"
             line="77">map name of the map providing the @dm_node device or %NULL
(@error) contains the error in such cases

Tech category: %BD_DM_TECH_MAP-%BD_DM_TECH_MODE_QUERY</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="dm_node" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/dm.h"
               line="74">name of the DM node (e.g. "dm-0")</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="dm_node_from_name"
              c:identifier="bd_dm_node_from_name"
              throws="1">
      <source-position filename="lib/plugin_apis/dm.h" line="95"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/dm.h"
             line="90">DM node name for the @map_name map or %NULL (@error) contains
the error in such cases

Tech category: %BD_DM_TECH_MAP-%BD_DM_TECH_MODE_QUERY</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="map_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/dm.h"
               line="87">name of the queried DM map</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="dm_remove" c:identifier="bd_dm_remove" throws="1">
      <source-position filename="lib/plugin_apis/dm.h" line="69"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/dm.h"
             line="65">whether the @map_name map was successfully removed or not

Tech category: %BD_DM_TECH_MAP-%BD_DM_TECH_MODE_REMOVE_DEACTIVATE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="map_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/dm.h"
               line="62">name of the map to remove</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="ensure_init" c:identifier="bd_ensure_init" throws="1">
      <doc xml:space="preserve"
           filename="lib/blockdev.c"
           line="459">Checks the state of the library and if it is uninitialized or not all the
@require_plugins plugins are available, tries to (re)initialize it. Otherwise
just returns early. The difference between:

|[&lt;!-- language="C" --&gt;
if (!bd_is_initialized())
    bd_init(None, None, &amp;error);
]|

and this function is that this function does the check and init in an atomic
way (holding the lock preventing other threads from doing changes in
between).</doc>
      <source-position filename="lib/blockdev.h" line="21"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/blockdev.c"
             line="481">whether the library was successfully initialized with all the
         required or default (see @require_plugins) plugins or not either
         before or by this call</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="require_plugins"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/blockdev.c"
               line="461">%NULL-terminated list
                of plugins that should be loaded (if no so_name is specified
                for the plugin, the default is used) or %NULL to load all
                plugins</doc>
          <array c:type="BDPluginSpec**">
            <type name="PluginSpec" c:type="BDPluginSpec*"/>
          </array>
        </parameter>
        <parameter name="log_func"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   scope="notified">
          <doc xml:space="preserve"
               filename="lib/blockdev.c"
               line="465">logging function to use</doc>
          <type name="UtilsLogFunc" c:type="BDUtilsLogFunc"/>
        </parameter>
      </parameters>
    </function>
    <function name="extra_arg_list_free"
              c:identifier="bd_extra_arg_list_free"
              moved-to="ExtraArg.list_free">
      <doc xml:space="preserve"
           filename="utils/extra_arg.c"
           line="38">Frees @args and all its elements.</doc>
      <source-position filename="utils/extra_arg.h" line="25"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="args"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="utils/extra_arg.c"
               line="40">A list of %BDExtraArg to free</doc>
          <array c:type="BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_btrfs_check"
              c:identifier="bd_fs_btrfs_check"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="2242"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2238">whether the filesystem was successfully checked or not

Tech category: %BD_FS_TECH_BTRFS-%BD_FS_TECH_MODE_CHECK</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2233">the device containing the file system to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2234">extra options for the check (right now
                                                passed to the 'btrfsck' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_btrfs_check_label"
              c:identifier="bd_fs_btrfs_check_label"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="2289"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2281">whether @label is a valid label for the Btrfs file system or not
         (reason is provided in @error)

Note: This function is intended to be used for btrfs filesystem on a single device,
      for more complicated setups use the btrfs plugin instead.

Tech category: always available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="label" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2278">label to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_btrfs_check_uuid"
              c:identifier="bd_fs_btrfs_check_uuid"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="2322"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2314">whether @uuid is a valid UUID for the Btrfs file system or not
         (reason is provided in @error)

Note: This function is intended to be used for btrfs filesystem on a single device,
      for more complicated setups use the btrfs plugin instead.

Tech category: always available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="uuid" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2311">UUID to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_btrfs_get_info"
              c:identifier="bd_fs_btrfs_get_info"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="2338"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2330">information about the file system on @device or
                          %NULL in case of error

Note: This function WON'T WORK for multi device btrfs filesystems,
      for more complicated setups use the btrfs plugin instead.

Tech category: %BD_FS_TECH_BTRFS-%BD_FS_TECH_MODE_QUERY</doc>
        <type name="FSBtrfsInfo" c:type="BDFSBtrfsInfo*"/>
      </return-value>
      <parameters>
        <parameter name="mpoint" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2327">a mountpoint of the btrfs filesystem to get information about</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_btrfs_mkfs" c:identifier="bd_fs_btrfs_mkfs" throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="2228"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2223">whether a new btrfs fs was successfully created on @device or not

Tech category: %BD_FS_TECH_BTRFS-%BD_FS_TECH_MODE_MKFS</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2218">the device to create a new btrfs fs on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2219">extra options for the creation (right now
                                                passed to the 'mkfs.btrfs' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_btrfs_repair"
              c:identifier="bd_fs_btrfs_repair"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="2256"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2252">whether the filesystem was successfully checked and repaired or not

Tech category: %BD_FS_TECH_BTRFS-%BD_FS_TECH_MODE_REPAIR</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2247">the device containing the file system to repair</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2248">extra options for the repair (right now
                                                passed to the 'btrfs' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_btrfs_resize"
              c:identifier="bd_fs_btrfs_resize"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="2357"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2349">whether the @mpoint filesystem was successfully resized to @new_size
or not

Note: This function WON'T WORK for multi device btrfs filesystems,
      for more complicated setups use the btrfs plugin instead.

Tech category: %BD_BTRFS_TECH_FS-%BD_BTRFS_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="mpoint" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2343">a mountpoint of the to be resized btrfs filesystem</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="new_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2344">requested new size</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2345">extra options for the volume resize (right now
                                                passed to the 'btrfs' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_btrfs_set_label"
              c:identifier="bd_fs_btrfs_set_label"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="2273"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2265">whether the label of Btrfs file system on the @mpoint was
         successfully set or not

Note: This function is intended to be used for btrfs filesystem on a single device,
      for more complicated setups use the btrfs plugin instead.

Tech category: %BD_FS_TECH_BTRFS-%BD_FS_TECH_MODE_SET_LABEL</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="mpoint" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2261">the mount point of the file system to set label for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="label" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2262">label to set</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_btrfs_set_uuid"
              c:identifier="bd_fs_btrfs_set_uuid"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="2306"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2298">whether the UUID of the Btrfs file system on the @device was
         successfully set or not

Note: This function is intended to be used for btrfs filesystem on a single device,
      for more complicated setups use the btrfs plugin instead.

Tech category: %BD_FS_TECH_BTRFS-%BD_FS_TECH_MODE_SET_UUID</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2294">the device containing the file system to set the UUID (serial number) for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="uuid"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2295">UUID to set or %NULL to generate a new one</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_can_check" c:identifier="bd_fs_can_check" throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/fs.h"
           line="964">Searches for the required utility to check the given filesystem and returns whether
it is installed.
Unknown filesystems or filesystems which do not support checking result in errors.</doc>
      <source-position filename="lib/plugin_apis/fs.h" line="978"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="974">whether filesystem check is available

Tech category: %BD_FS_TECH_GENERIC-%BD_FS_TECH_MODE_QUERY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="type" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="966">the filesystem type to be tested for installed consistency check support</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="required_utility"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="967">the utility binary which is required for checking (if missing i.e. returns FALSE but no error)</doc>
          <type name="utf8" c:type="gchar**"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_can_get_free_space"
              c:identifier="bd_fs_can_get_free_space"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/fs.h"
           line="1050">Searches for the required utility to get free space of the given filesystem and
returns whether it is installed.
Unknown filesystems or filesystems which do not support free space querying result in errors.</doc>
      <source-position filename="lib/plugin_apis/fs.h" line="1065"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1061">whether getting filesystem free space is available

Tech category: %BD_FS_TECH_GENERIC-%BD_FS_TECH_MODE_QUERY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="type" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1052">the filesystem type to be tested for installed free space querying support</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="required_utility"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1053">the utility binary which is required
                                          for free space querying (if missing i.e. return FALSE but no error)</doc>
          <type name="utf8" c:type="gchar**"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_can_get_info"
              c:identifier="bd_fs_can_get_info"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/fs.h"
           line="884">Searches for the required utility to get info of the given filesystem and
returns whether it is installed.
Unknown filesystems or filesystems which do not support info querying result in errors.</doc>
      <source-position filename="lib/plugin_apis/fs.h" line="899"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="895">whether getting filesystem info is available

Tech category: %BD_FS_TECH_GENERIC-%BD_FS_TECH_MODE_QUERY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="type" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="886">the filesystem type to be tested for info querying support</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="required_utility"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="887">the utility binary which is required
                                          for info querying (if missing i.e. return FALSE but no error)</doc>
          <type name="utf8" c:type="gchar**"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_can_get_min_size"
              c:identifier="bd_fs_can_get_min_size"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/fs.h"
           line="1068">Searches for the required utility to get minimum size of the given filesystem and
returns whether it is installed.
Unknown filesystems or filesystems which do not support minimum size querying result in errors.</doc>
      <source-position filename="lib/plugin_apis/fs.h" line="1083"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1079">whether getting filesystem size is available

Tech category: %BD_FS_TECH_GENERIC-%BD_FS_TECH_MODE_QUERY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="type" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1070">the filesystem type to be tested for installed minimum size querying support</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="required_utility"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1071">the utility binary which is required
                                          for size querying (if missing i.e. return FALSE but no error)</doc>
          <type name="utf8" c:type="gchar**"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_can_get_size"
              c:identifier="bd_fs_can_get_size"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/fs.h"
           line="1032">Searches for the required utility to get size of the given filesystem and
returns whether it is installed.
Unknown filesystems or filesystems which do not support size querying result in errors.</doc>
      <source-position filename="lib/plugin_apis/fs.h" line="1047"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1043">whether getting filesystem size is available

Tech category: %BD_FS_TECH_GENERIC-%BD_FS_TECH_MODE_QUERY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="type" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1034">the filesystem type to be tested for installed size querying support</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="required_utility"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1035">the utility binary which is required
                                          for size querying (if missing i.e. return FALSE but no error)</doc>
          <type name="utf8" c:type="gchar**"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_can_mkfs" c:identifier="bd_fs_can_mkfs" throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/fs.h"
           line="915">Searches for the required utility to create the given filesystem and returns whether
it is installed. The options flags indicate what additional options can be specified for @type.
Unknown filesystems result in errors.</doc>
      <source-position filename="lib/plugin_apis/fs.h" line="930"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="926">whether filesystem mkfs tool is available

Tech category: %BD_FS_TECH_GENERIC-%BD_FS_TECH_MODE_QUERY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="type" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="917">the filesystem type to be tested for installed mkfs support</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="options"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="918">flags for allowed mkfs options (i.e. support for setting label or UUID when creating the filesystem)</doc>
          <type name="FSMkfsOptionsFlags" c:type="BDFSMkfsOptionsFlags*"/>
        </parameter>
        <parameter name="required_utility"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="919">the utility binary which is required for creating (if missing returns %FALSE but no @error)</doc>
          <type name="utf8" c:type="gchar**"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_can_repair" c:identifier="bd_fs_can_repair" throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/fs.h"
           line="981">Searches for the required utility to repair the given filesystem and returns whether
it is installed.
Unknown filesystems or filesystems which do not support reparing result in errors.</doc>
      <source-position filename="lib/plugin_apis/fs.h" line="995"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="991">whether filesystem repair is available

Tech category: %BD_FS_TECH_GENERIC-%BD_FS_TECH_MODE_QUERY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="type" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="983">the filesystem type to be tested for installed repair support</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="required_utility"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="984">the utility binary which is required for repairing (if missing i.e. return FALSE but no error)</doc>
          <type name="utf8" c:type="gchar**"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_can_resize" c:identifier="bd_fs_can_resize" throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/fs.h"
           line="945">Searches for the required utility to resize the given filesystem and returns whether
it is installed. The mode flags indicate if growing and/or shrinking resize is available if
mounted/unmounted.
Unknown filesystems or filesystems which do not support resizing result in errors.</doc>
      <source-position filename="lib/plugin_apis/fs.h" line="961"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="957">whether filesystem resize is available

Tech category: %BD_FS_TECH_GENERIC-%BD_FS_TECH_MODE_QUERY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="type" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="947">the filesystem type to be tested for installed resize support</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="mode"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="948">flags for allowed resizing (i.e. growing/shrinking support for online/offline)</doc>
          <type name="FSResizeFlags" c:type="BDFSResizeFlags*"/>
        </parameter>
        <parameter name="required_utility"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="949">the utility binary which is required for resizing (if missing i.e. returns FALSE but no error)</doc>
          <type name="utf8" c:type="gchar**"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_can_set_label"
              c:identifier="bd_fs_can_set_label"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/fs.h"
           line="998">Searches for the required utility to set the label of the given filesystem and returns whether
it is installed.
Unknown filesystems or filesystems which do not support setting the label result in errors.</doc>
      <source-position filename="lib/plugin_apis/fs.h" line="1012"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1008">whether setting filesystem label is available

Tech category: %BD_FS_TECH_GENERIC-%BD_FS_TECH_MODE_QUERY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="type" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1000">the filesystem type to be tested for installed label support</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="required_utility"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1001">the utility binary which is required for relabeling (if missing i.e. return FALSE but no error)</doc>
          <type name="utf8" c:type="gchar**"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_can_set_uuid"
              c:identifier="bd_fs_can_set_uuid"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/fs.h"
           line="1015">Searches for the required utility to set the UUID of the given filesystem and returns whether
it is installed.
Unknown filesystems or filesystems which do not support setting the UUID result in errors.</doc>
      <source-position filename="lib/plugin_apis/fs.h" line="1029"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1025">whether setting filesystem UUID is available

Tech category: %BD_FS_TECH_GENERIC-%BD_FS_TECH_MODE_QUERY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="type" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1017">the filesystem type to be tested for installed UUID support</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="required_utility"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1018">the utility binary which is required for setting UUID (if missing i.e. return FALSE but no error)</doc>
          <type name="utf8" c:type="gchar**"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_check" c:identifier="bd_fs_check" throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/fs.h"
           line="720">Check filesystem on @device avoiding any modifications or repairs.
This calls other fs check functions from this plugin based on detected
filesystem (e.g. bd_fs_xfs_check for XFS). This function will return
an error for unknown/unsupported filesystems.

Note that depending on a corresponding filesystem type and configured
features running this function on a mounted filesystem may result
in false errors reported.</doc>
      <source-position filename="lib/plugin_apis/fs.h" line="739"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="735">whether the file system on @device passed the consistency check or not

Tech category: %BD_FS_TECH_GENERIC-%BD_FS_TECH_MODE_CHECK</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="722">the device the file system of which to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="fstype"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="723">the filesystem type on @device or %NULL to detect</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_check_label"
              c:identifier="bd_fs_check_label"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/fs.h"
           line="742">This calls other fs check label functions from this plugin based on the provided
filesystem (e.g. bd_fs_xfs_check_label for XFS). This function will return
an error for unknown/unsupported filesystems.</doc>
      <source-position filename="lib/plugin_apis/fs.h" line="757"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="752">whether @label is a valid label for the @fstype file system or not
         (reason is provided in @error)

Tech category: always available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="fstype" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="744">the filesystem type to check @label for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="label" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="745">label to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_check_uuid" c:identifier="bd_fs_check_uuid" throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/fs.h"
           line="781">This calls other fs check uuid functions from this plugin based on the provided
filesystem (e.g. bd_fs_xfs_check_uuid for XFS). This function will return
an error for unknown/unsupported filesystems.</doc>
      <source-position filename="lib/plugin_apis/fs.h" line="796"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="791">whether @uuid is a valid UUID for the @fstype file system or not
         (reason is provided in @error)

Tech category: always available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="fstype" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="783">the filesystem type to check @uuid for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="uuid" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="784">uuid to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_clean" c:identifier="bd_fs_clean" throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/fs.h"
           line="543">Clean all signatures from @device.
Difference between this and bd_fs_wipe() is that this function doesn't
return error if @device is already empty. This will also always remove
all signatures from @device, not only the first one.</doc>
      <source-position filename="lib/plugin_apis/fs.h" line="558"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="554">whether @device was successfully cleaned or not

Tech category: %BD_FS_TECH_GENERIC-%BD_FS_TECH_MODE_WIPE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="545">the device to clean</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="force" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="546">whether to wipe signatures on a mounted @device</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_error_quark" c:identifier="bd_fs_error_quark">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="fs_exfat_check"
              c:identifier="bd_fs_exfat_check"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="2132"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2128">whether the exfat file system on the @device is clean or not

Tech category: %BD_FS_TECH_EXFAT-%BD_FS_TECH_MODE_CHECK</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2123">the device containing the file system to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2124">extra options for the repair (right now
                                                passed to the 'exfatfsck' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_exfat_check_label"
              c:identifier="bd_fs_exfat_check_label"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="2174"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2169">whether @label is a valid label for the exfat file system or not
         (reason is provided in @error)

Tech category: always available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="label" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2166">label to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_exfat_check_uuid"
              c:identifier="bd_fs_exfat_check_uuid"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="2201"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2196">whether @uuid is a valid UUID for the exFAT file system or not
         (reason is provided in @error)

Tech category: always available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="uuid" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2193">UUID to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_exfat_get_info"
              c:identifier="bd_fs_exfat_get_info"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="2213"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2209">information about the file system on @device or
                          %NULL in case of error
Tech category: %BD_FS_TECH_EXFAT-%BD_FS_TECH_MODE_QUERY</doc>
        <type name="FSExfatInfo" c:type="BDFSExfatInfo*"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2206">the device containing the file system to get info for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_exfat_mkfs" c:identifier="bd_fs_exfat_mkfs" throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="2118"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2114">whether a new exfat fs was successfully created on @device or not

Tech category: %BD_FS_TECH_EXFAT-%BD_FS_TECH_MODE_MKFS</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2109">the device to create a new exfat fs on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2110">extra options for the creation (right now
                                                passed to the 'mkexfatfs' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_exfat_repair"
              c:identifier="bd_fs_exfat_repair"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="2147"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2142">whether the exfat file system on the @device was successfully repaired
         (if needed) or not (error is set in that case)

Tech category: %BD_FS_TECH_EXFAT-%BD_FS_TECH_MODE_REPAIR</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2137">the device containing the file system to repair</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2138">extra options for the repair (right now
                                                passed to the 'exfatfsck' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_exfat_set_label"
              c:identifier="bd_fs_exfat_set_label"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="2161"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2156">whether the label of exfat file system on the @device was
         successfully set or not

Tech category: %BD_FS_TECH_EXFAT-%BD_FS_TECH_MODE_SET_LABEL</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2152">the device containing the file system to set label for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="label" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2153">label to set</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_exfat_set_uuid"
              c:identifier="bd_fs_exfat_set_uuid"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="2188"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2183">whether the volume ID of exFAT file system on the @device was
         successfully set or not

Tech category: %BD_FS_TECH_EXFAT-%BD_FS_TECH_MODE_SET_UUID</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2179">the device containing the file system to set uuid for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="uuid"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2180">volume ID to set or %NULL to generate a new one</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ext2_check" c:identifier="bd_fs_ext2_check" throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1167"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1163">whether an ext2 file system on the @device is clean or not

Tech category: %BD_FS_TECH_EXT2-%BD_FS_TECH_MODE_CHECK</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1158">the device the file system on which to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1159">extra options for the check (right now
                                                passed to the 'e2fsck' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ext2_check_label"
              c:identifier="bd_fs_ext2_check_label"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1298"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1293">whether @label is a valid label for the ext2 file system or not
         (reason is provided in @error)

Tech category: always available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="label" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1290">label to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ext2_check_uuid"
              c:identifier="bd_fs_ext2_check_uuid"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1385"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1380">whether @uuid is a valid UUID for the ext2 file system or not
         (reason is provided in @error)

Tech category: always available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="uuid" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1377">UUID to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ext2_get_info"
              c:identifier="bd_fs_ext2_get_info"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1424"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1419">information about the file system on @device or
                          %NULL in case of error

Tech category: %BD_FS_TECH_EXT2-%BD_FS_TECH_MODE_QUERY</doc>
        <type name="FSExt2Info" c:type="BDFSExt2Info*"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1416">the device the file system of which to get info for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ext2_get_min_size"
              c:identifier="bd_fs_ext2_get_min_size"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1511"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1506">smallest shrunken filesystem size as reported by resize2fs
         in case of error 0 is returned and @error is set

Tech category: %BD_FS_TECH_EXT2-%BD_FS_TECH_MODE_RESIZE</doc>
        <type name="guint64" c:type="guint64"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1503">the device containing the file system to get min size for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ext2_mkfs" c:identifier="bd_fs_ext2_mkfs" throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1125"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1121">whether a new ext2 fs was successfully created on @device or not

Tech category: %BD_FS_TECH_EXT2-%BD_FS_TECH_MODE_MKFS</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1116">the device to create a new ext2 fs on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1117">extra options for the creation (right now
                                                passed to the 'mke2fs' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ext2_repair"
              c:identifier="bd_fs_ext2_repair"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1211"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1206">whether an ext2 file system on the @device was successfully repaired
         (if needed) or not (error is set in that case)

Tech category: %BD_FS_TECH_EXT2-%BD_FS_TECH_MODE_REPAIR</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1200">the device the file system on which to repair</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="unsafe" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1201">whether to do unsafe operations too</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1202">extra options for the repair (right now
                                                passed to the 'e2fsck' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ext2_resize"
              c:identifier="bd_fs_ext2_resize"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1466"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1462">whether the file system on @device was successfully resized or not

Tech category: %BD_FS_TECH_EXT2-%BD_FS_TECH_MODE_RESIZE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1455">the device the file system of which to resize</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="new_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1456">new requested size for the file system (if 0, the file system is
           adapted to the underlying block device)</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1458">extra options for the resize (right now
                                                passed to the 'resize2fs' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ext2_set_label"
              c:identifier="bd_fs_ext2_set_label"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1257"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1252">whether the label of ext2 file system on the @device was
         successfully set or not

Tech category: %BD_FS_TECH_EXT2-%BD_FS_TECH_MODE_SET_LABEL</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1248">the device the file system on which to set label for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="label" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1249">label to set</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ext2_set_uuid"
              c:identifier="bd_fs_ext2_set_uuid"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1340"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1335">whether the UUID of ext2 file system on the @device was
         successfully set or not

Tech category: %BD_FS_TECH_EXT2-%BD_FS_TECH_MODE_SET_UUID</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1329">the device the file system on which to set UUID for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="uuid"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1330">UUID to set %NULL to generate a new one
                     UUID can also be one of "clear", "random" and "time" to clear,
                     generate a new random/time-based UUID</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ext3_check" c:identifier="bd_fs_ext3_check" throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1181"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1177">whether an ext3 file system on the @device is clean or not

Tech category: %BD_FS_TECH_EXT3-%BD_FS_TECH_MODE_CHECK</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1172">the device the file system on which to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1173">extra options for the check (right now
                                                passed to the 'e2fsck' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ext3_check_label"
              c:identifier="bd_fs_ext3_check_label"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1311"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1306">whether @label is a valid label for the ext3 file system or not
         (reason is provided in @error)

Tech category: always available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="label" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1303">label to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ext3_check_uuid"
              c:identifier="bd_fs_ext3_check_uuid"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1398"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1393">whether @uuid is a valid UUID for the ext3 file system or not
         (reason is provided in @error)

Tech category: always available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="uuid" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1390">UUID to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ext3_get_info"
              c:identifier="bd_fs_ext3_get_info"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1437"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1432">information about the file system on @device or
                          %NULL in case of error

Tech category: %BD_FS_TECH_EXT3-%BD_FS_TECH_MODE_QUERY</doc>
        <type name="FSExt3Info" c:type="BDFSExt3Info*"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1429">the device the file system of which to get info for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ext3_get_min_size"
              c:identifier="bd_fs_ext3_get_min_size"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1524"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1519">smallest shrunken filesystem size as reported by resize2fs
         in case of error 0 is returned and @error is set

Tech category: %BD_FS_TECH_EXT3-%BD_FS_TECH_MODE_RESIZE</doc>
        <type name="guint64" c:type="guint64"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1516">the device containing the file system to get min size for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ext3_mkfs" c:identifier="bd_fs_ext3_mkfs" throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1139"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1135">whether a new ext3 fs was successfully created on @device or not

Tech category: %BD_FS_TECH_EXT3-%BD_FS_TECH_MODE_MKFS</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1130">the device to create a new ext3 fs on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1131">extra options for the creation (right now
                                                passed to the 'mke2fs' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ext3_repair"
              c:identifier="bd_fs_ext3_repair"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1227"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1222">whether an ext3 file system on the @device was successfully repaired
         (if needed) or not (error is set in that case)

Tech category: %BD_FS_TECH_EXT3-%BD_FS_TECH_MODE_REPAIR</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1216">the device the file system on which to repair</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="unsafe" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1217">whether to do unsafe operations too</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1218">extra options for the repair (right now
                                                passed to the 'e2fsck' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ext3_resize"
              c:identifier="bd_fs_ext3_resize"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1482"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1478">whether the file system on @device was successfully resized or not

Tech category: %BD_FS_TECH_EXT3-%BD_FS_TECH_MODE_RESIZE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1471">the device the file system of which to resize</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="new_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1472">new requested size for the file system (if 0, the file system is
           adapted to the underlying block device)</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1474">extra options for the resize (right now
                                                passed to the 'resize2fs' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ext3_set_label"
              c:identifier="bd_fs_ext3_set_label"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1271"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1266">whether the label of ext3 file system on the @device was
         successfully set or not

Tech category: %BD_FS_TECH_EXT3-%BD_FS_TECH_MODE_SET_LABEL</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1262">the device the file system on which to set label for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="label" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1263">label to set</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ext3_set_uuid"
              c:identifier="bd_fs_ext3_set_uuid"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1356"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1351">whether the UUID of ext3 file system on the @device was
         successfully set or not

Tech category: %BD_FS_TECH_EXT3-%BD_FS_TECH_MODE_SET_UUID</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1345">the device the file system on which to set UUID for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="uuid"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1346">UUID to set %NULL to generate a new one
                     UUID can also be one of "clear", "random" and "time" to clear,
                     generate a new random/time-based UUID</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ext4_check" c:identifier="bd_fs_ext4_check" throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1195"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1191">whether an ext4 file system on the @device is clean or not

Tech category: %BD_FS_TECH_EXT4-%BD_FS_TECH_MODE_CHECK</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1186">the device the file system on which to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1187">extra options for the check (right now
                                                passed to the 'e2fsck' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ext4_check_label"
              c:identifier="bd_fs_ext4_check_label"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1324"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1319">whether @label is a valid label for the ext4 file system or not
         (reason is provided in @error)

Tech category: always available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="label" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1316">label to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ext4_check_uuid"
              c:identifier="bd_fs_ext4_check_uuid"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1411"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1406">whether @uuid is a valid UUID for the ext4 file system or not
         (reason is provided in @error)

Tech category: always available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="uuid" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1403">UUID to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ext4_get_info"
              c:identifier="bd_fs_ext4_get_info"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1450"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1445">information about the file system on @device or
                          %NULL in case of error

Tech category: %BD_FS_TECH_EXT3-%BD_FS_TECH_MODE_QUERY</doc>
        <type name="FSExt4Info" c:type="BDFSExt4Info*"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1442">the device the file system of which to get info for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ext4_get_min_size"
              c:identifier="bd_fs_ext4_get_min_size"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1537"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1532">smallest shrunken filesystem size as reported by resize2fs
         in case of error 0 is returned and @error is set

Tech category: %BD_FS_TECH_EXT4-%BD_FS_TECH_MODE_RESIZE</doc>
        <type name="guint64" c:type="guint64"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1529">the device containing the file system to get min size for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ext4_mkfs" c:identifier="bd_fs_ext4_mkfs" throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1153"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1149">whether a new ext4 fs was successfully created on @device or not

Tech category: %BD_FS_TECH_EXT4-%BD_FS_TECH_MODE_MKFS</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1144">the device to create a new ext4 fs on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1145">extra options for the creation (right now
                                                passed to the 'mkfs.ext4' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ext4_repair"
              c:identifier="bd_fs_ext4_repair"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1243"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1238">whether an ext4 file system on the @device was successfully repaired
         (if needed) or not (error is set in that case)

Tech category: %BD_FS_TECH_EXT4-%BD_FS_TECH_MODE_REPAIR</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1232">the device the file system on which to repair</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="unsafe" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1233">whether to do unsafe operations too</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1234">extra options for the repair (right now
                                                passed to the 'e2fsck' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ext4_resize"
              c:identifier="bd_fs_ext4_resize"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1498"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1494">whether the file system on @device was successfully resized or not

Tech category: %BD_FS_TECH_EXT4-%BD_FS_TECH_MODE_RESIZE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1487">the device the file system of which to resize</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="new_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1488">new requested size for the file system (if 0, the file system is
           adapted to the underlying block device)</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1490">extra options for the resize (right now
                                                passed to the 'resize2fs' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ext4_set_label"
              c:identifier="bd_fs_ext4_set_label"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1285"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1280">whether the label of ext4 file system on the @device was
         successfully set or not

Tech category: %BD_FS_TECH_EXT3-%BD_FS_TECH_MODE_SET_LABEL</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1276">the device the file system on which to set label for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="label" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1277">label to set</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ext4_set_uuid"
              c:identifier="bd_fs_ext4_set_uuid"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1372"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1367">whether the UUID of ext4 file system on the @device was
         successfully set or not

Tech category: %BD_FS_TECH_EXT4-%BD_FS_TECH_MODE_SET_UUID</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1361">the device the file system on which to set UUID for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="uuid"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1362">UUID to set %NULL to generate a new one
                     UUID can also be one of "clear", "random" and "time" to clear,
                     generate a new random/time-based UUID</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_f2fs_check" c:identifier="bd_fs_f2fs_check" throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1951"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1947">whether an f2fs file system on the @device is clean or not

Tech category: %BD_FS_TECH_F2FS-%BD_FS_TECH_MODE_CHECK</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1942">the device containing the file system to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1943">extra options for the repair (right now
                                                passed to the 'fsck.f2fs' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_f2fs_check_label"
              c:identifier="bd_fs_f2fs_check_label"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="2009"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2004">whether @label is a valid label for the f2fs file system or not
         (reason is provided in @error)

Tech category: always available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="label" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2001">label to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_f2fs_get_info"
              c:identifier="bd_fs_f2fs_get_info"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1979"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1974">information about the file system on @device or
                          %NULL in case of error

Tech category: %BD_FS_TECH_F2FS-%BD_FS_TECH_MODE_QUERY</doc>
        <type name="FSF2FSInfo" c:type="BDFSF2FSInfo*"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1971">the device containing the file system to get info for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_f2fs_mkfs" c:identifier="bd_fs_f2fs_mkfs" throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1937"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1933">whether a new f2fs fs was successfully created on @device or not

Tech category: %BD_FS_TECH_F2FS-%BD_FS_TECH_MODE_MKFS</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1928">the device to create a new f2fs fs on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1929">extra options for the creation (right now
                                                passed to the 'mkfs.f2fs' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_f2fs_repair"
              c:identifier="bd_fs_f2fs_repair"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1966"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1961">whether an f2fs file system on the @device was successfully repaired
         (if needed) or not (error is set in that case)

Tech category: %BD_FS_TECH_F2FS-%BD_FS_TECH_MODE_REPAIR</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1956">the device containing the file system to repair</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1957">extra options for the repair (right now
                                                passed to the 'fsck.f2fs' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_f2fs_resize"
              c:identifier="bd_fs_f2fs_resize"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1996"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1992">whether the file system on @device was successfully resized or not

Tech category: %BD_FS_TECH_F2FS-%BD_FS_TECH_MODE_RESIZE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1984">the device containing the file system to resize</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="new_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1985">new requested size for the file system *in file system sectors* (see bd_fs_f2fs_get_info())
           (if 0, the file system is adapted to the underlying block device)</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="safe" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1987">whether to perform safe resize or not (does not resize metadata)</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1988">extra options for the resize (right now
                                                passed to the 'resize.f2fs' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_features" c:identifier="bd_fs_features" throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/fs.h"
           line="2511">Returns (transfer-none): features supported by @fstype, see %BDFSFeatures for more information.

Tech category: always available</doc>
      <source-position filename="lib/plugin_apis/fs.h" line="2521"/>
      <return-value transfer-ownership="none">
        <type name="FSFeatures" c:type="const BDFSFeatures*"/>
      </return-value>
      <parameters>
        <parameter name="fstype" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2513">name of the filesystem to get features for (e.g. "ext4")</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_freeze" c:identifier="bd_fs_freeze" throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/fs.h"
           line="577">Freezes filesystem mounted on @mountpoint. The filesystem must
support freezing.</doc>
      <source-position filename="lib/plugin_apis/fs.h" line="588"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="585">whether @mountpoint was successfully freezed or not</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="mountpoint" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="579">mountpoint of the device (filesystem) to freeze</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_get_free_space"
              c:identifier="bd_fs_get_free_space"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/fs.h"
           line="850">Get free space for filesystem on @device. This calls other fs info functions from this
plugin based on detected filesystem (e.g. bd_fs_ext4_get_info for ext4). This
function will return an error for unknown/unsupported filesystems.</doc>
      <source-position filename="lib/plugin_apis/fs.h" line="864"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="860">free space of filesystem on @device, 0 in case of error.

Tech category: %BD_FS_TECH_GENERIC-%BD_FS_TECH_MODE_QUERY</doc>
        <type name="guint64" c:type="guint64"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="852">the device with file system to get free space for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="fstype"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="853">the filesystem type on @device or %NULL to detect</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_get_fstype" c:identifier="bd_fs_get_fstype" throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/fs.h"
           line="561">Get first signature on @device as a string.</doc>
      <source-position filename="lib/plugin_apis/fs.h" line="574"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="568">type of filesystem found on @device, %NULL in case
                          no signature has been detected or in case of error
                          (@error is set in this case)

Tech category: %BD_FS_TECH_GENERIC-%BD_FS_TECH_MODE_QUERY</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="563">the device to probe</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_get_min_size"
              c:identifier="bd_fs_get_min_size"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/fs.h"
           line="867">Get minimum size for filesystem on @device. This calls other fs info functions from this
plugin based on detected filesystem (e.g. bd_fs_ext4_get_min_size for ext4). This
function will return an error for unknown/unsupported filesystems.</doc>
      <source-position filename="lib/plugin_apis/fs.h" line="881"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="877">minimum size of filesystem on @device, 0 in case of error.

Tech category: %BD_FS_TECH_GENERIC-%BD_FS_TECH_MODE_RESIZE</doc>
        <type name="guint64" c:type="guint64"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="869">the device with file system to get minimum size for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="fstype"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="870">the filesystem type on @device or %NULL to detect</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_get_mountpoint"
              c:identifier="bd_fs_get_mountpoint"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/fs.h"
           line="650">Get mountpoint for @device. If @device is mounted multiple times only
one mountpoint will be returned.</doc>
      <source-position filename="lib/plugin_apis/fs.h" line="664"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="658">mountpoint for @device, %NULL in case device is
                          not mounted or in case of an error (@error is set
                          in this case)

Tech category: %BD_FS_TECH_MOUNT (no mode, ignored)</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="652">device to find mountpoint for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_get_size" c:identifier="bd_fs_get_size" throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/fs.h"
           line="830">Get size for filesystem on @device. This calls other fs info functions from this
plugin based on detected filesystem (e.g. bd_fs_xfs_get_info for XFS). This
function will return an error for unknown/unsupported filesystems.

Note: This function will mount @device for filesystems that need to be mounted
      to gather information (like btrfs).</doc>
      <source-position filename="lib/plugin_apis/fs.h" line="847"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="843">size of filesystem on @device, 0 in case of error.

Tech category: %BD_FS_TECH_GENERIC-%BD_FS_TECH_MODE_QUERY</doc>
        <type name="guint64" c:type="guint64"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="832">the device with file system to get size for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="fstype"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="833">the filesystem type on @device or %NULL to detect</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_is_mountpoint"
              c:identifier="bd_fs_is_mountpoint"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="676"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="672">whether @path is a mountpoint or not

Tech category: %BD_FS_TECH_MOUNT (no mode, ignored)</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="path" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="669">path (folder) to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_is_tech_avail"
              c:identifier="bd_fs_is_tech_avail"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="511"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="508">whether the @tech-@mode combination is available -- supported by the
         plugin implementation and having all the runtime dependencies available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="tech" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="504">the queried tech</doc>
          <type name="FSTech" c:type="BDFSTech"/>
        </parameter>
        <parameter name="mode" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="505">a bit mask of queried modes of operation (#BDFSTechMode) for @tech</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_mkfs" c:identifier="bd_fs_mkfs" throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/fs.h"
           line="1086">This is a helper function for creating filesystems with extra options.
This is the same as running a filesystem-specific function like %bd_fs_ext4_mkfs
and manually specifying the extra command line options. %BDFSMkfsOptions
removes the need to specify supported options for selected filesystems,
make sure to check whether @fstype supports these options (see %bd_fs_can_mkfs)
for details.

When specifying additional mkfs options using @extra, it's caller's
responsibility to make sure these options do not conflict with options
specified using @options. Extra options are added after the @options and
there are no additional checks for duplicate and/or conflicting options.</doc>
      <source-position filename="lib/plugin_apis/fs.h" line="1111"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1106">whether @fstype was successfully created on @device or not.

Tech category: %BD_FS_TECH_GENERIC-%BD_FS_TECH_MODE_MKFS</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1088">the device to create the new filesystem on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="fstype" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1089">name of the filesystem to create (e.g. "ext4")</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="options" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1090">additional options like label or UUID for the filesystem</doc>
          <type name="FSMkfsOptions" c:type="BDFSMkfsOptions*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1091">extra mkfs options not provided in @options</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_mount" c:identifier="bd_fs_mount" throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="647"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="643">whether @device (or @mountpoint) was successfully mounted or not

Tech category: %BD_FS_TECH_MOUNT (no mode, ignored)</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="628">device to mount, if not specified @mountpoint entry
                       from fstab will be used</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="mountpoint"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="630">mountpoint for @device, if not specified @device
                           entry from fstab will be used</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="fstype"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="632">filesystem type</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="options"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="633">comma delimited options for mount</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="634">extra options for the mount;
                                              currently only 'run_as_uid'
                                              and 'run_as_gid' are supported;
                                              value must be a valid non zero
                                              uid (gid), if you specify one of
                                              these, the function will run in
                                              a child process with real user</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_nilfs2_check_label"
              c:identifier="bd_fs_nilfs2_check_label"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="2050"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2045">whether @label is a valid label for the nilfs2 file system or not
         (reason is provided in @error)

Tech category: always available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="label" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2042">label to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_nilfs2_check_uuid"
              c:identifier="bd_fs_nilfs2_check_uuid"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="2077"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2072">whether @uuid is a valid UUID for the nilfs file system or not
         (reason is provided in @error)

Tech category: always available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="uuid" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2069">UUID to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_nilfs2_get_info"
              c:identifier="bd_fs_nilfs2_get_info"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="2090"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2085">information about the file system on @device or
                          %NULL in case of error

Tech category: %BD_FS_TECH_NILFS2-%BD_FS_TECH_MODE_QUERY</doc>
        <type name="FSNILFS2Info" c:type="BDFSNILFS2Info*"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2082">the device containing the file system to get info for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_nilfs2_mkfs"
              c:identifier="bd_fs_nilfs2_mkfs"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="2023"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2019">whether a new nilfs fs was successfully created on @device or not

Tech category: %BD_FS_TECH_NILFS2-%BD_FS_TECH_MODE_MKFS</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2014">the device to create a new nilfs fs on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2015">extra options for the creation (right now
                                                passed to the 'mkfs.nilfs2' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_nilfs2_resize"
              c:identifier="bd_fs_nilfs2_resize"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="2104"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2100">whether the file system on @device was successfully resized or not

Tech category: %BD_FS_TECH_NILFS2-%BD_FS_TECH_MODE_RESIZE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2095">the device the file system of which to resize</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="new_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2096">new requested size for the file system (if 0, the file system is
           adapted to the underlying block device)</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_nilfs2_set_label"
              c:identifier="bd_fs_nilfs2_set_label"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="2037"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2032">whether the label of nilfs file system on the @device was
         successfully set or not

Tech category: %BD_FS_TECH_NILFS2-%BD_FS_TECH_MODE_SET_LABEL</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2028">the device containing the file system to set label for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="label" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2029">label to set</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_nilfs2_set_uuid"
              c:identifier="bd_fs_nilfs2_set_uuid"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="2064"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2059">whether the uuid of nilfs file system on the @device was
         successfully set or not

Tech category: %BD_FS_TECH_NILFS2-%BD_FS_TECH_MODE_SET_UUID</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2055">the device containing the file system to set UUID for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="uuid"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2056">UUID to set or %NULL to generate a new one</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ntfs_check" c:identifier="bd_fs_ntfs_check" throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1812"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1808">whether an ntfs file system on the @device is clean or not

Tech category: %BD_FS_TECH_NTFS-%BD_FS_TECH_MODE_CHECK</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1803">the device containing the file system to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1804">extra options for the repair (right now
                                              passed to the 'ntfsfix' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ntfs_check_label"
              c:identifier="bd_fs_ntfs_check_label"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1854"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1849">whether @label is a valid label for the ntfs file system or not
         (reason is provided in @error)

Tech category: always available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="label" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1846">label to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ntfs_check_uuid"
              c:identifier="bd_fs_ntfs_check_uuid"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1881"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1876">whether @uuid is a valid UUID for the ntfs file system or not
         (reason is provided in @error)

Tech category: always available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="uuid" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1873">UUID to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ntfs_get_info"
              c:identifier="bd_fs_ntfs_get_info"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1910"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1905">information about the file system on @device or
                          %NULL in case of error

Tech category: %BD_FS_TECH_NTFS-%BD_FS_TECH_MODE_QUERY</doc>
        <type name="FSNtfsInfo" c:type="BDFSNtfsInfo*"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1900">the device containing the file system to get info for (device must
            not be mounted, trying to get info for a mounted device will result
            in an error)</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ntfs_get_min_size"
              c:identifier="bd_fs_ntfs_get_min_size"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1923"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1918">smallest shrunken filesystem size as reported by ntfsresize
         in case of error 0 is returned and @error is set

Tech category: %BD_FS_TECH_NTFS-%BD_FS_TECH_MODE_RESIZE</doc>
        <type name="guint64" c:type="guint64"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1915">the device containing the file system to get min size for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ntfs_mkfs" c:identifier="bd_fs_ntfs_mkfs" throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1798"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1794">whether a new NTFS fs was successfully created on @device or not

Tech category: %BD_FS_TECH_NTFS-%BD_FS_TECH_MODE_MKFS</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1789">the device to create a new ntfs fs on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1790">extra options for the creation (right now
                                                passed to the 'mkntfs' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ntfs_repair"
              c:identifier="bd_fs_ntfs_repair"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1827"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1822">whether an NTFS file system on the @device was successfully repaired
         (if needed) or not (error is set in that case)

Tech category: %BD_FS_TECH_NTFS-%BD_FS_TECH_MODE_REPAIR</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1817">the device containing the file system to repair</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1818">extra options for the repair (right now
                                              passed to the 'ntfsfix' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ntfs_resize"
              c:identifier="bd_fs_ntfs_resize"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1895"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1891">whether the file system on @device was successfully resized or not

Tech category: %BD_FS_TECH_NTFS-%BD_FS_TECH_MODE_RESIZE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1886">the device the file system of which to resize</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="new_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1887">new requested size for the file system in bytes (if 0, the file system
           is adapted to the underlying block device)</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ntfs_set_label"
              c:identifier="bd_fs_ntfs_set_label"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1841"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1836">whether the label of the NTFS file system on the @device was
         successfully set or not

Tech category: %BD_FS_TECH_NTFS-%BD_FS_TECH_MODE_SET_LABEL</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1832">the device containing the file system to set the label for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="label" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1833">label to set</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_ntfs_set_uuid"
              c:identifier="bd_fs_ntfs_set_uuid"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1868"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1863">whether the UUID of the NTFS file system on the @device was
         successfully set or not

Tech category: %BD_FS_TECH_NTFS-%BD_FS_TECH_MODE_SET_UUID</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1859">the device containing the file system to set the UUID (serial number) for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="uuid"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1860">UUID to set or %NULL to generate a new one</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_repair" c:identifier="bd_fs_repair" throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/fs.h"
           line="701">Repair filesystem on @device. This calls other fs repair functions from this
plugin based on detected filesystem (e.g. bd_fs_xfs_repair for XFS). This
function will return an error for unknown/unsupported filesystems.

Most filesystem tools typically require the filesystem not to be mounted.</doc>
      <source-position filename="lib/plugin_apis/fs.h" line="717"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="713">whether the file system on @device was successfully repaired or not

Tech category: %BD_FS_TECH_GENERIC-%BD_FS_TECH_MODE_REPAIR</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="703">the device the file system of which to repair</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="fstype"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="704">the filesystem type on @device or %NULL to detect</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_resize" c:identifier="bd_fs_resize" throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/fs.h"
           line="679">Resize filesystem on @device. This calls other fs resize functions from this
plugin based on provides or detected filesystem (e.g. bd_fs_xfs_resize for XFS).
This function will return an error for unknown/unsupported filesystems.

Note: This function will mount @device for filesystems that can be resized only
      when mounted (like XFS or Btrfs).</doc>
      <source-position filename="lib/plugin_apis/fs.h" line="698"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="694">whether the file system on @device was successfully resized or not

Tech category: %BD_FS_TECH_GENERIC-%BD_FS_TECH_MODE_RESIZE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="681">the device the file system of which to resize</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="new_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="682">new requested size for the file system (if 0, the file system is
           adapted to the underlying block device)</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="fstype"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="684">the filesystem type on @device or %NULL to detect</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_set_label" c:identifier="bd_fs_set_label" throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/fs.h"
           line="760">Set label for filesystem on @device. This calls other fs label functions from this
plugin based on detected filesystem (e.g. bd_fs_xfs_set_label for XFS). This
function will return an error for unknown/unsupported filesystems.

Note: This function will mount @device for filesystems that need to be mounted
      to set label (like btrfs).</doc>
      <source-position filename="lib/plugin_apis/fs.h" line="778"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="774">whether the file system on @device was successfully relabeled or not

Tech category: %BD_FS_TECH_GENERIC-%BD_FS_TECH_MODE_SET_LABEL</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="762">the device with file system to set the label for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="label" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="763">label to set</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="fstype"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="764">the filesystem type on @device or %NULL to detect</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_set_uuid" c:identifier="bd_fs_set_uuid" throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/fs.h"
           line="799">Set UUID for filesystem on @device. This calls other fs UUID functions from this
plugin based on detected filesystem (e.g. bd_fs_xfs_set_uuid for XFS). This
function will return an error for unknown/unsupported filesystems.</doc>
      <source-position filename="lib/plugin_apis/fs.h" line="814"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="810">whether the UUID on the file system on @device was successfully changed or not

Tech category: %BD_FS_TECH_GENERIC-%BD_FS_TECH_MODE_SET_UUID</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="801">the device with file system to set the UUID for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="uuid"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="802">UUID to set or %NULL to generate a new one</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="fstype"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="803">the filesystem type on @device or %NULL to detect</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_supported_filesystems"
              c:identifier="bd_fs_supported_filesystems"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="526"/>
      <return-value transfer-ownership="container">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="518">list of filesystems supported by this plugin

Note: This returns filesystems supported by libblockdev, but not necessarily
      by the systems this is running on, for this information you need to
      run one of the `bd_fs_can_` functions.

Tech category: always available</doc>
        <array c:type="const gchar**">
          <type name="utf8"/>
        </array>
      </return-value>
    </function>
    <function name="fs_udf_check_label"
              c:identifier="bd_fs_udf_check_label"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/fs.h"
           line="2395">Note: This checks only whether @label adheres the length limits for Logical Volume Identifier,
      not the stricter limits for Volume Identifier.</doc>
      <source-position filename="lib/plugin_apis/fs.h" line="2408"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2403">whether @label is a valid label for the UDF file system or not
         (reason is provided in @error)

Tech category: always available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="label" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2397">label to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_udf_check_uuid"
              c:identifier="bd_fs_udf_check_uuid"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="2435"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2430">whether @uuid is a valid UUID for the UDF file system or not
         (reason is provided in @error)

Tech category: always available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="uuid" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2427">UUID to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_udf_get_info"
              c:identifier="bd_fs_udf_get_info"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="2448"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2443">information about the file system on @device or
                          %NULL in case of error

Tech category: %BD_FS_TECH_UDF-%BD_FS_TECH_MODE_QUERY</doc>
        <type name="FSUdfInfo" c:type="BDFSUdfInfo*"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2440">the device containing the file system to get info for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_udf_mkfs" c:identifier="bd_fs_udf_mkfs" throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="2374"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2370">whether a new UDF fs was successfully created on @device or not

Tech category: %BD_FS_TECH_UDF-%BD_FS_TECH_MODE_MKFS</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2362">the device to create a new UDF fs on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="media_type"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2363">specify the media type or %NULL for default ('hd')</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="revision"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2364">UDF revision to use or %NULL for default ('2.01')</doc>
          <type name="utf8" c:type="gchar*"/>
        </parameter>
        <parameter name="block_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2365">block size in bytes or 0 for auto detection (device logical block size)</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2366">extra options for the creation (right now
                                                passed to the 'mkudffs' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_udf_set_label"
              c:identifier="bd_fs_udf_set_label"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/fs.h"
           line="2377">Note: This sets both Volume Identifier and Logical Volume Identifier. Volume Identifier
      is truncated to 30 or 15 characters to accommodate to the different length limits
      of these labels.</doc>
      <source-position filename="lib/plugin_apis/fs.h" line="2392"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2387">whether the label of UDF file system on the @device was
         successfully set or not

Tech category: %BD_FS_TECH_UDF-%BD_FS_TECH_MODE_SET_LABEL</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2379">the device containing the file system to set label for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="label" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2380">label to set</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_udf_set_uuid"
              c:identifier="bd_fs_udf_set_uuid"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="2422"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="2417">whether the UUID of the UDF file system on the @device was
         successfully set or not

Tech category: %BD_FS_TECH_UDF-%BD_FS_TECH_MODE_SET_UUID</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2413">the device containing the file system to set the UUID (serial number) for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="uuid"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="2414">UUID to set or %NULL to generate a new one</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_unfreeze" c:identifier="bd_fs_unfreeze" throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/fs.h"
           line="591">Un-freezes filesystem mounted on @mountpoint. The filesystem must
support freezing.</doc>
      <source-position filename="lib/plugin_apis/fs.h" line="602"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="599">whether @mountpoint was successfully unfreezed or not</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="mountpoint" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="593">mountpoint of the device (filesystem) to un-freeze</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_unmount" c:identifier="bd_fs_unmount" throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="623"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="619">whether @spec was successfully unmounted or not

Tech category: %BD_FS_TECH_MOUNT (no mode, ignored)</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="spec" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="607">mount point or device to unmount</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="lazy" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="608">enable/disable lazy unmount</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="force" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="609">enable/disable force unmount</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="610">extra options for the unmount;
                                              currently only 'run_as_uid'
                                              and 'run_as_gid' are supported;
                                              value must be a valid non zero
                                              uid (gid), if you specify one of
                                              these, the function will run in
                                              a child process with real user</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_vfat_check" c:identifier="bd_fs_vfat_check" throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1687"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1683">whether an vfat file system on the @device is clean or not

Tech category: %BD_FS_TECH_VFAT-%BD_FS_TECH_MODE_CHECK</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1678">the device containing the file system to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1679">extra options for the repair (right now
                                                passed to the 'fsck.vfat' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_vfat_check_label"
              c:identifier="bd_fs_vfat_check_label"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1729"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1724">whether @label is a valid label for the vfat file system or not
         (reason is provided in @error)

Tech category: always available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="label" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1721">label to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_vfat_check_uuid"
              c:identifier="bd_fs_vfat_check_uuid"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1757"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1752">whether @uuid is a valid UUID for the vfat file system or not
         (reason is provided in @error)

Tech category: always available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="uuid" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1749">UUID to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_vfat_get_info"
              c:identifier="bd_fs_vfat_get_info"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1770"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1765">information about the file system on @device or
                          %NULL in case of error

Tech category: %BD_FS_TECH_VFAT-%BD_FS_TECH_MODE_QUERY</doc>
        <type name="FSVfatInfo" c:type="BDFSVfatInfo*"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1762">the device containing the file system to get info for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_vfat_mkfs" c:identifier="bd_fs_vfat_mkfs" throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/fs.h"
           line="1660">Please remember that FAT labels should always be uppercase.</doc>
      <source-position filename="lib/plugin_apis/fs.h" line="1673"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1669">whether a new vfat fs was successfully created on @device or not

Tech category: %BD_FS_TECH_VFAT-%BD_FS_TECH_MODE_MKFS</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1662">the device to create a new vfat fs on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1663">extra options for the creation (right now
                                                passed to the 'mkfs.vfat' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_vfat_repair"
              c:identifier="bd_fs_vfat_repair"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1702"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1697">whether an vfat file system on the @device was successfully repaired
         (if needed) or not (error is set in that case)

Tech category: %BD_FS_TECH_VFAT-%BD_FS_TECH_MODE_REPAIR</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1692">the device containing the file system to repair</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1693">extra options for the repair (right now
                                                passed to the 'fsck.vfat' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_vfat_resize"
              c:identifier="bd_fs_vfat_resize"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1784"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1780">whether the file system on @device was successfully resized or not

Tech category: %BD_FS_TECH_VFAT-%BD_FS_TECH_MODE_RESIZE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1775">the device the file system of which to resize</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="new_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1776">new requested size for the file system (if 0, the file system is
           adapted to the underlying block device)</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_vfat_set_label"
              c:identifier="bd_fs_vfat_set_label"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1716"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1711">whether the label of vfat file system on the @device was
         successfully set or not

Tech category: %BD_FS_TECH_VFAT-%BD_FS_TECH_MODE_SET_LABEL</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1707">the device containing the file system to set label for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="label" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1708">label to set</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_vfat_set_uuid"
              c:identifier="bd_fs_vfat_set_uuid"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1744"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1739">whether the volume ID of vfat file system on the @device was
         successfully set or not

Tech category: %BD_FS_TECH_VFAT-%BD_FS_TECH_MODE_SET_UUID</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1735">the device containing the file system to set uuid for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="uuid"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1736">volume ID to set or %NULL to generate a new one</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_wipe" c:identifier="bd_fs_wipe" throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="540"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="536">whether signatures were successfully wiped on @device or not

Tech category: %BD_FS_TECH_GENERIC-%BD_FS_TECH_MODE_WIPE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="531">the device to wipe signatures from</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="all" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="532">whether to wipe all (%TRUE) signatures or just the first (%FALSE) one</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="force" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="533">whether to wipe signatures on a mounted @device</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_xfs_check" c:identifier="bd_fs_xfs_check" throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1568"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1561">whether an xfs file system on the @device is clean or not

Note: If the file system is mounted RW, it will always be reported as not
      clean!

Tech category: %BD_FS_TECH_XFS-%BD_FS_TECH_MODE_CHECK</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1556">the device containing the file system to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1557">extra options for the repair (right now
                                              passed to the 'xfs_repair' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_xfs_check_label"
              c:identifier="bd_fs_xfs_check_label"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1610"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1605">whether @label is a valid label for the xfs file system or not
         (reason is provided in @error)

Tech category: always available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="label" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1602">label to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_xfs_check_uuid"
              c:identifier="bd_fs_xfs_check_uuid"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="827"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="822">whether @uuid is a valid UUID for the xfs file system or not
         (reason is provided in @error)

Tech category: always available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="uuid" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="819">UUID to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_xfs_get_info"
              c:identifier="bd_fs_xfs_get_info"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1641"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1636">information about the file system on @device or
                          %NULL in case of error

Tech category: %BD_FS_TECH_XFS-%BD_FS_TECH_MODE_QUERY</doc>
        <type name="FSXfsInfo" c:type="BDFSXfsInfo*"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1631">the device containing the file system to get info for (device must
            be mounted, trying to get info for an unmounted device will result
            in an error)</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_xfs_mkfs" c:identifier="bd_fs_xfs_mkfs" throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1551"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1547">whether a new xfs fs was successfully created on @device or not

Tech category: %BD_FS_TECH_XFS-%BD_FS_TECH_MODE_MKFS</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1542">the device to create a new xfs fs on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1543">extra options for the creation (right now
                                                passed to the 'mkfs.xfs' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_xfs_repair" c:identifier="bd_fs_xfs_repair" throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1583"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1578">whether an xfs file system on the @device was successfully repaired
         (if needed) or not (error is set in that case)

Tech category: %BD_FS_TECH_XFS-%BD_FS_TECH_MODE_REPAIR</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1573">the device containing the file system to repair</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1574">extra options for the repair (right now
                                                passed to the 'xfs_repair' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_xfs_resize" c:identifier="bd_fs_xfs_resize" throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1657"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1653">whether the file system mounted on @mpoint was successfully resized or not

Tech category: %BD_FS_TECH_XFS-%BD_FS_TECH_MODE_RESIZE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="mpoint" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1646">the mount point of the file system to resize</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="new_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1647">new requested size for the file system *in file system blocks* (see bd_fs_xfs_get_info())
           (if 0, the file system is adapted to the underlying block device)</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1649">extra options for the resize (right now
                                                passed to the 'xfs_growfs' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_xfs_set_label"
              c:identifier="bd_fs_xfs_set_label"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1597"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1592">whether the label of xfs file system on the @device was
         successfully set or not

Tech category: %BD_FS_TECH_XFS-%BD_FS_TECH_MODE_SET_LABEL</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1588">the device containing the file system to set label for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="label" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1589">label to set</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_xfs_set_uuid"
              c:identifier="bd_fs_xfs_set_uuid"
              throws="1">
      <source-position filename="lib/plugin_apis/fs.h" line="1626"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/fs.h"
             line="1621">whether the UUID of xfs file system on the @device was
         successfully set or not

Tech category: %BD_FS_TECH_XFS-%BD_FS_TECH_MODE_SET_UUID</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1615">the device containing the file system to set uuid for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="uuid"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/fs.h"
               line="1616">UUID to set %NULL to generate a new one
                     UUID can also be one of "nil" and "generate" to clear or
                     generate a new UUID</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="get_available_plugin_names"
              c:identifier="bd_get_available_plugin_names">
      <source-position filename="lib/plugins.h" line="44"/>
      <return-value transfer-ownership="container">
        <doc xml:space="preserve"
             filename="lib/blockdev.c"
             line="716">an array of string
names of plugins that are available</doc>
        <array c:type="gchar**">
          <type name="utf8"/>
        </array>
      </return-value>
    </function>
    <function name="get_plugin_name" c:identifier="bd_get_plugin_name">
      <source-position filename="lib/plugins.h" line="46"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/blockdev.c"
             line="770">name of the plugin</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="plugin" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/blockdev.c"
               line="768">the queried plugin</doc>
          <type name="Plugin" c:type="BDPlugin"/>
        </parameter>
      </parameters>
    </function>
    <function name="get_plugin_soname" c:identifier="bd_get_plugin_soname">
      <source-position filename="lib/plugins.h" line="45"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/blockdev.c"
             line="756">name of the shared object loaded for the plugin or
%NULL if none is loaded</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="plugin" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/blockdev.c"
               line="754">the queried plugin</doc>
          <type name="Plugin" c:type="BDPlugin"/>
        </parameter>
      </parameters>
    </function>
    <function name="init" c:identifier="bd_init" throws="1">
      <source-position filename="lib/blockdev.h" line="20"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/blockdev.c"
             line="403">whether the library was successfully initialized with all the
         required or default (see @require_plugins) plugins or not

Example of libblockdev initialization with 'fs' and 'lvm' plugins. Specific
version of the lvm plugin is required:

|[&lt;!-- language="C" --&gt;
GError *error = NULL;
gboolean ret = FALSE;
BDPluginSpec fs_plugin = {BD_PLUGIN_FS, NULL};
BDPluginSpec lvm_plugin = {BD_PLUGIN_LVM, "libbd_lvm.so.3"};

BDPluginSpec *plugins[] = {&amp;fs_plugin, &amp;lvm_plugin, NULL};

ret = bd_init (plugins, NULL, &amp;error);
]|</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="require_plugins"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/blockdev.c"
               line="396">%NULL-terminated list
                of plugins that should be loaded (if no so_name is specified
                for the plugin, the default is used) or %NULL to load all
                plugins</doc>
          <array c:type="BDPluginSpec**">
            <type name="PluginSpec" c:type="BDPluginSpec*"/>
          </array>
        </parameter>
        <parameter name="log_func"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   scope="notified">
          <doc xml:space="preserve"
               filename="lib/blockdev.c"
               line="400">logging function to use</doc>
          <type name="UtilsLogFunc" c:type="BDUtilsLogFunc"/>
        </parameter>
      </parameters>
    </function>
    <function name="init_error_quark"
              c:identifier="bd_init_error_quark"
              introspectable="0">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="is_initialized" c:identifier="bd_is_initialized">
      <source-position filename="lib/blockdev.h" line="27"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/blockdev.c"
             line="699">whether the library is initialized or not

The library is considered initialized if some of the *init*() functions
was/were called and either at least one plugin is loaded or 0 plugins are
loaded after an explicit call that requested 0 plugins to be loaded.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="is_plugin_available" c:identifier="bd_is_plugin_available">
      <source-position filename="lib/plugins.h" line="43"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/blockdev.c"
             line="743">whether the given plugin is available or not</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="plugin" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/blockdev.c"
               line="741">the queried plugin</doc>
          <type name="Plugin" c:type="BDPlugin"/>
        </parameter>
      </parameters>
    </function>
    <function name="loop_error_quark" c:identifier="bd_loop_error_quark">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="loop_get_loop_name"
              c:identifier="bd_loop_get_loop_name"
              throws="1">
      <source-position filename="lib/plugin_apis/loop.h" line="103"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/loop.h"
             line="99">name of the loop device associated with the given @file

Tech category: %BD_LOOP_TECH_LOOP-%BD_LOOP_TECH_MODE_QUERY</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="file" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/loop.h"
               line="96">path of the backing file to get loop name for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="loop_info" c:identifier="bd_loop_info" throws="1">
      <source-position filename="lib/plugin_apis/loop.h" line="91"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/loop.h"
             line="87">information about the @loop device or %NULL in case of error

Tech category: %BD_LOOP_TECH_LOOP-%BD_LOOP_TECH_MODE_QUERY</doc>
        <type name="LoopInfo" c:type="BDLoopInfo*"/>
      </return-value>
      <parameters>
        <parameter name="loop" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/loop.h"
               line="84">name of the loop device to get information about (e.g. "loop0")</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="loop_is_tech_avail"
              c:identifier="bd_loop_is_tech_avail"
              throws="1">
      <source-position filename="lib/plugin_apis/loop.h" line="38"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/loop.h"
             line="35">whether the @tech-@mode combination is available -- supported by the
         plugin implementation and having all the runtime dependencies available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="tech" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/loop.h"
               line="31">the queried tech</doc>
          <type name="LoopTech" c:type="BDLoopTech"/>
        </parameter>
        <parameter name="mode" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/loop.h"
               line="32">a bit mask of queried modes of operation (#BDLoopTechMode) for @tech</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
      </parameters>
    </function>
    <function name="loop_set_autoclear"
              c:identifier="bd_loop_set_autoclear"
              throws="1">
      <source-position filename="lib/plugin_apis/loop.h" line="164"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/loop.h"
             line="160">whether the autoclear flag was successfully set on the @loop device or not

Tech category: %BD_LOOP_TECH_LOOP-%BD_LOOP_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="loop" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/loop.h"
               line="156">path or name of the loop device</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="autoclear" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/loop.h"
               line="157">whether to set or unset the autoclear flag</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="loop_setup" c:identifier="bd_loop_setup" throws="1">
      <source-position filename="lib/plugin_apis/loop.h" line="121"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/loop.h"
             line="117">whether the @file was successfully setup as a loop device or not

Tech category: %BD_LOOP_TECH_LOOP-%BD_LOOP_TECH_MODE_CREATE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="file" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/loop.h"
               line="108">file to setup as a loop device</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="offset" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/loop.h"
               line="109">offset of the start of the device (in @file)</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/loop.h"
               line="110">maximum size of the device (or 0 to leave unspecified)</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="read_only" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/loop.h"
               line="111">whether to setup as read-only (%TRUE) or read-write (%FALSE)</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="part_scan" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/loop.h"
               line="112">whether to enforce partition scan on the newly created device or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="sector_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/loop.h"
               line="113">logical sector size for the loop device in bytes (or 0 for default)</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="loop_name"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/loop.h"
               line="114">if not %NULL, it is used to store the name of the loop device</doc>
          <type name="utf8" c:type="const gchar**"/>
        </parameter>
      </parameters>
    </function>
    <function name="loop_setup_from_fd"
              c:identifier="bd_loop_setup_from_fd"
              throws="1">
      <source-position filename="lib/plugin_apis/loop.h" line="139"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/loop.h"
             line="135">whether an new loop device was successfully setup for @fd or not

Tech category: %BD_LOOP_TECH_LOOP-%BD_LOOP_TECH_MODE_CREATE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="fd" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/loop.h"
               line="126">file descriptor for a file to setup as a new loop device</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="offset" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/loop.h"
               line="127">offset of the start of the device (in file given by @fd)</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/loop.h"
               line="128">maximum size of the device (or 0 to leave unspecified)</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="read_only" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/loop.h"
               line="129">whether to setup as read-only (%TRUE) or read-write (%FALSE)</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="part_scan" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/loop.h"
               line="130">whether to enforce partition scan on the newly created device or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="sector_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/loop.h"
               line="131">logical sector size for the loop device in bytes (or 0 for default)</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="loop_name"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/loop.h"
               line="132">if not %NULL, it is used to store the name of the loop device</doc>
          <type name="utf8" c:type="const gchar**"/>
        </parameter>
      </parameters>
    </function>
    <function name="loop_teardown" c:identifier="bd_loop_teardown" throws="1">
      <source-position filename="lib/plugin_apis/loop.h" line="151"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/loop.h"
             line="147">whether the @loop device was successfully torn down or not

Tech category: %BD_LOOP_TECH_LOOP-%BD_LOOP_TECH_MODE_DESTROY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="loop" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/loop.h"
               line="144">path or name of the loop device to tear down</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_add_lv_tags"
              c:identifier="bd_lvm_add_lv_tags"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1144"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1140">whether the tags were successfully added to @device or not

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_QUERY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1135">name of the VG that contains the LV to set tags on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="lv_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1136">name of the LV to set tags on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="tags" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1137">list of tags to add</doc>
          <array c:type="const gchar**">
            <type name="utf8" c:type="gchar*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_add_pv_tags"
              c:identifier="bd_lvm_add_pv_tags"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="744"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="740">whether the tags were successfully added to @device or not

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_QUERY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="736">the device to set PV tags for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="tags" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="737">list of tags to add</doc>
          <array c:type="const gchar**">
            <type name="utf8" c:type="gchar*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_add_vg_tags"
              c:identifier="bd_lvm_add_vg_tags"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="901"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="897">whether the tags were successfully added to @vg_name or not

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_QUERY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="893">the VG to set tags on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="tags" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="894">list of tags to add</doc>
          <array c:type="const gchar**">
            <type name="utf8" c:type="gchar*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_cache_attach"
              c:identifier="bd_lvm_cache_attach"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1420"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1414">whether the @cache_pool_lv was successfully attached to the @data_lv or not

Note: Both @data_lv and @cache_lv will be deactivated before the operation.

Tech category: %BD_LVM_TECH_CACHE-%BD_LVM_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1407">name of the VG containing the @data_lv and the @cache_pool_lv LVs</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="data_lv" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1408">data LV to attach the @cache_pool_lv to</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="cache_pool_lv" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1409">cache pool LV to attach to the @data_lv</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1410">extra options for the cache attachment
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_cache_create_cached_lv"
              c:identifier="bd_lvm_cache_create_cached_lv"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1458"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1454">whether the cached LV @lv_name was successfully created or not

Tech category: %BD_LVM_TECH_CACHE-%BD_LVM_TECH_MODE_CREATE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1443">name of the VG to create a cached LV in</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="lv_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1444">name of the cached LV to create</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="data_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1445">size of the data LV</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="cache_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1446">size of the cache (or cached LV more precisely)</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="md_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1447">size of the cache metadata LV or 0 to use the default</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="mode" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1448">cache mode for the cached LV</doc>
          <type name="LVMCacheMode" c:type="BDLVMCacheMode"/>
        </parameter>
        <parameter name="flags" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1449">a combination of (ORed) #BDLVMCachePoolFlags</doc>
          <type name="LVMCachePoolFlags" c:type="BDLVMCachePoolFlags"/>
        </parameter>
        <parameter name="slow_pvs" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1450">list of slow PVs (used for the data LV)</doc>
          <array c:type="const gchar**">
            <type name="utf8" c:type="gchar*"/>
          </array>
        </parameter>
        <parameter name="fast_pvs" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1451">list of fast PVs (used for the cache LV)</doc>
          <array c:type="const gchar**">
            <type name="utf8" c:type="gchar*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_cache_create_pool"
              c:identifier="bd_lvm_cache_create_pool"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1402"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1398">whether the cache pool @vg_name/@pool_name was successfully created or not

Tech category: %BD_LVM_TECH_CACHE-%BD_LVM_TECH_MODE_CREATE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1387">name of the VG to create @pool_name in</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="pool_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1388">name of the cache pool LV to create</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="pool_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1389">desired size of the cache pool @pool_name</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="md_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1390">desired size of the @pool_name cache pool's metadata LV or 0 to
          use the default</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="mode" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1392">cache mode of the @pool_name cache pool</doc>
          <type name="LVMCacheMode" c:type="BDLVMCacheMode"/>
        </parameter>
        <parameter name="flags" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1393">a combination of (ORed) #BDLVMCachePoolFlags</doc>
          <type name="LVMCachePoolFlags" c:type="BDLVMCachePoolFlags"/>
        </parameter>
        <parameter name="fast_pvs" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1394">list of (fast) PVs to create the @pool_name
                                      cache pool (and the metadata LV)</doc>
          <array c:type="const gchar**">
            <type name="utf8" c:type="gchar*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_cache_detach"
              c:identifier="bd_lvm_cache_detach"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1438"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1432">whether the cache was successfully detached from the @cached_lv or not

Note: synces the cache first

Tech category: %BD_LVM_TECH_CACHE-%BD_LVM_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1425">name of the VG containing the @cached_lv</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="cached_lv" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1426">name of the cached LV to detach its cache from</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="destroy" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1427">whether to destroy the cache after detach or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1428">extra options for the cache detachment
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_cache_get_default_md_size"
              c:identifier="bd_lvm_cache_get_default_md_size"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1357"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1353">recommended default size of the cache metadata LV or 0 in case of error

Tech category: %BD_LVM_TECH_CACHE_CALCS no mode (it is ignored)</doc>
        <type name="guint64" c:type="guint64"/>
      </return-value>
      <parameters>
        <parameter name="cache_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1350">size of the cache to determine MD size for</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_cache_get_mode_from_str"
              c:identifier="bd_lvm_cache_get_mode_from_str"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1382"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1377">cache mode for the @mode_str or %BD_LVM_CACHE_MODE_UNKNOWN if
         failed to determine

Tech category: always provided/supported</doc>
        <type name="LVMCacheMode" c:type="BDLVMCacheMode"/>
      </return-value>
      <parameters>
        <parameter name="mode_str" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1374">string representation of a cache mode</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_cache_get_mode_str"
              c:identifier="bd_lvm_cache_get_mode_str"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1369"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1365">string representation of @mode or %NULL in case of error

Tech category: always provided/supported</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="mode" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1362">mode to get the string representation for</doc>
          <type name="LVMCacheMode" c:type="BDLVMCacheMode"/>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_cache_pool_convert"
              c:identifier="bd_lvm_cache_pool_convert"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/lvm.h"
           line="1559">Converts the @data_lv and @metadata_lv into a new cache pool in the @vg_name
VG.</doc>
      <source-position filename="lib/plugin_apis/lvm.h" line="1577"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1572">whether the new cache pool was successfully created from @data_lv and
         @metadata_lv or not

Tech category: %BD_LVM_TECH_CACHE-%BD_LVM_TECH_MODE_CREATE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1561">name of the VG to create the new thin pool in</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="data_lv" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1562">name of the LV that should become the data part of the new pool</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="metadata_lv" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1563">name of the LV that should become the metadata part of the new pool</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="name"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1564">name for the thin pool (if %NULL, the name @data_lv is inherited)</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1565">extra options for the thin pool creation
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_cache_pool_name"
              c:identifier="bd_lvm_cache_pool_name"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1471"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1467">name of the cache pool LV used by the @cached_lv or %NULL in case of error

Tech category: %BD_LVM_TECH_CACHE-%BD_LVM_TECH_MODE_QUERY</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1463">name of the VG containing the @cached_lv</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="cached_lv" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1464">cached LV to get the name of the its pool LV for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_cache_stats"
              c:identifier="bd_lvm_cache_stats"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1484"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1480">stats for the @cached_lv or %NULL in case of error

Tech category: %BD_LVM_TECH_CACHE-%BD_LVM_TECH_MODE_QUERY</doc>
        <type name="LVMCacheStats" c:type="BDLVMCacheStats*"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1476">name of the VG containing the @cached_lv</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="cached_lv" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1477">cached LV to get stats for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_cache_stats_free"
              c:identifier="bd_lvm_cache_stats_free"
              moved-to="LVMCacheStats.free"
              introspectable="0">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/lvm.h"
           line="477">Frees @data.</doc>
      <source-position filename="lib/plugin_apis/lvm.h" line="483"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="479">%BDLVMCacheStats to free</doc>
          <type name="LVMLVdata" c:type="BDLVMLVdata*"/>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_config_get"
              c:identifier="bd_lvm_config_get"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1894"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1890">Requested LVM config @section and @setting configuration or %NULL in case of error.

Tech category: %BD_LVM_TECH_CONFIG no mode (it is ignored)</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="section"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1881">LVM config section, e.g. 'global' or %NULL to print the entire config</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="setting"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1882">name of the specific setting, e.g. 'umask' or %NULL to print the entire @section</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="type" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1883">type of the config, e.g. 'full' or 'current'</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="values_only" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1884">whether to include only values without keys in the output</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="global_config" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1885">whether to include our internal global config in the call or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1886">extra options for the lvmconfig command
                                              (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_delete_lv_tags"
              c:identifier="bd_lvm_delete_lv_tags"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1158"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1154">whether the tags were successfully removed from @device or not

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_QUERY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1149">name of the VG that contains the LV to set tags on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="lv_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1150">name of the LV to set tags on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="tags" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1151">list of tags to remove</doc>
          <array c:type="const gchar**">
            <type name="utf8" c:type="gchar*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_delete_pv_tags"
              c:identifier="bd_lvm_delete_pv_tags"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="757"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="753">whether the tags were successfully removed from @device or not

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_QUERY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="749">the device to set PV tags for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="tags" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="750">list of tags to remove</doc>
          <array c:type="const gchar**">
            <type name="utf8" c:type="gchar*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_delete_vg_tags"
              c:identifier="bd_lvm_delete_vg_tags"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="914"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="910">whether the tags were successfully removed from @vg_name or not

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_QUERY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="906">the VG to set tags on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="tags" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="907">list of tags to remove</doc>
          <array c:type="const gchar**">
            <type name="utf8" c:type="gchar*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_devices_add"
              c:identifier="bd_lvm_devices_add"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1862"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1858">whether the @device was successfully added to @devices_file or not

Tech category: %BD_LVM_TECH_DEVICES no mode (it is ignored)</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1853">device (PV) to add to the devices file</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="devices_file"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1854">LVM devices file or %NULL for default</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1855">extra options for the lvmdevices command</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_devices_delete"
              c:identifier="bd_lvm_devices_delete"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1876"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1872">whether the @device was successfully removed from @devices_file or not

Tech category: %BD_LVM_TECH_DEVICES no mode (it is ignored)</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1867">device (PV) to delete from the devices file</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="devices_file"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1868">LVM devices file or %NULL for default</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1869">extra options for the lvmdevices command</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_error_quark" c:identifier="bd_lvm_error_quark">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="lvm_get_devices_filter"
              c:identifier="bd_lvm_get_devices_filter"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1345"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1340">a copy of a string representation of
                                                    the currently set LVM devices filter

Tech category: %BD_LVM_TECH_DEVICES no mode (it is ignored)</doc>
        <array c:type="gchar**">
          <type name="utf8"/>
        </array>
      </return-value>
    </function>
    <function name="lvm_get_global_config"
              c:identifier="bd_lvm_get_global_config"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1321"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1313">a copy of a string representation of the currently
                          set libblockdev LVM global configuration

Note: This function does not change the global `lvm.conf` config
      file, see %bd_lvm_set_global_config for details.

Tech category: %BD_LVM_TECH_GLOB_CONF no mode (it is ignored)</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
    </function>
    <function name="lvm_get_lv_physical_size"
              c:identifier="bd_lvm_get_lv_physical_size"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="589"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="582">space taken on disk(s) by the LV with given @size

Gives number of bytes needed for an LV with the size @lv_size on an LVM stack
using given @pe_size.

Tech category: %BD_LVM_TECH_CALCS no mode (it is ignored)</doc>
        <type name="guint64" c:type="guint64"/>
      </return-value>
      <parameters>
        <parameter name="lv_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="578">LV size</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="pe_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="579">PE size</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_get_max_lv_size"
              c:identifier="bd_lvm_get_max_lv_size"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="554"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="550">maximum LV size in bytes

Tech category: %BD_LVM_TECH_CALCS no mode (it is ignored)</doc>
        <type name="guint64" c:type="guint64"/>
      </return-value>
    </function>
    <function name="lvm_get_supported_pe_sizes"
              c:identifier="bd_lvm_get_supported_pe_sizes"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="543"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="539">list of supported PE sizes

Tech category: %BD_LVM_TECH_CALCS no mode (it is ignored)</doc>
        <array zero-terminated="0" c:type="guint64*" fixed-size="25">
          <type name="guint64" c:type="guint64"/>
        </array>
      </return-value>
    </function>
    <function name="lvm_get_thpool_meta_size"
              c:identifier="bd_lvm_get_thpool_meta_size"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/lvm.h"
           line="607">Note: This function will be changed in 3.0: the @n_snapshots parameter
      is currently not used and will be removed.</doc>
      <source-position filename="lib/plugin_apis/lvm.h" line="621"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="617">recommended size of the metadata space for the specified pool

Tech category: %BD_LVM_TECH_THIN_CALCS no mode (it is ignored)</doc>
        <type name="guint64" c:type="guint64"/>
      </return-value>
      <parameters>
        <parameter name="size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="609">size of the thin pool</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="chunk_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="610">chunk size of the thin pool or 0 to use the default</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="n_snapshots" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="611">ignored</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_get_thpool_padding"
              c:identifier="bd_lvm_get_thpool_padding"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="604"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="599">size of the padding needed for a thin pool with the given @size
        according to the @pe_size and @included

Tech category: %BD_LVM_TECH_THIN_CALCS no mode (it is ignored)</doc>
        <type name="guint64" c:type="guint64"/>
      </return-value>
      <parameters>
        <parameter name="size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="594">size of the thin pool</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="pe_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="595">PE size or 0 if the default value should be used</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="included" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="596">if padding is already included in the size</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_get_vdo_compression_state_str"
              c:identifier="bd_lvm_get_vdo_compression_state_str"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1774"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1770">string representation of @state or %NULL in case of error

Tech category: always provided/supported</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="state" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1767">state to get the string representation for</doc>
          <type name="LVMVDOCompressionState"
                c:type="BDLVMVDOCompressionState"/>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_get_vdo_index_state_str"
              c:identifier="bd_lvm_get_vdo_index_state_str"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1786"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1782">string representation of @state or %NULL in case of error

Tech category: always provided/supported</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="state" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1779">state to get the string representation for</doc>
          <type name="LVMVDOIndexState" c:type="BDLVMVDOIndexState"/>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_get_vdo_operating_mode_str"
              c:identifier="bd_lvm_get_vdo_operating_mode_str"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1762"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1758">string representation of @mode or %NULL in case of error

Tech category: always provided/supported</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="mode" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1755">mode to get the string representation for</doc>
          <type name="LVMVDOOperatingMode" c:type="BDLVMVDOOperatingMode"/>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_get_vdo_write_policy_from_str"
              c:identifier="bd_lvm_get_vdo_write_policy_from_str"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1811"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1806">write policy for the @policy_str or %BD_LVM_VDO_WRITE_POLICY_UNKNOWN if
         failed to determine

Tech category: always provided/supported</doc>
        <type name="LVMVDOWritePolicy" c:type="BDLVMVDOWritePolicy"/>
      </return-value>
      <parameters>
        <parameter name="policy_str" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1803">string representation of a policy</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_get_vdo_write_policy_str"
              c:identifier="bd_lvm_get_vdo_write_policy_str"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1798"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1794">string representation of @policy or %NULL in case of error

Tech category: always provided/supported</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="policy" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1791">policy to get the string representation for</doc>
          <type name="LVMVDOWritePolicy" c:type="BDLVMVDOWritePolicy"/>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_is_supported_pe_size"
              c:identifier="bd_lvm_is_supported_pe_size"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="532"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="528">whether the given size is supported physical extent size or not

Tech category: %BD_LVM_TECH_CALCS no mode (it is ignored)</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="525">size (in bytes) to test</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_is_tech_avail"
              c:identifier="bd_lvm_is_tech_avail"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="520"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="517">whether the @tech-@mode combination is available -- supported by the
         plugin implementation and having all the runtime dependencies available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="tech" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="513">the queried tech</doc>
          <type name="LVMTech" c:type="BDLVMTech"/>
        </parameter>
        <parameter name="mode" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="514">a bit mask of queried modes of operation (#BDLVMTechMode) for @tech</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_is_valid_thpool_chunk_size"
              c:identifier="bd_lvm_is_valid_thpool_chunk_size"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="646"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="642">whether the given size is a valid thin pool chunk size or not

Tech category: %BD_LVM_TECH_THIN_CALCS no mode (it is ignored)</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="638">the size to be tested</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="discard" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="639">whether discard/TRIM is required to be supported or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_is_valid_thpool_md_size"
              c:identifier="bd_lvm_is_valid_thpool_md_size"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="633"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="629">whether the given size is a valid thin pool metadata size or not

Tech category: %BD_LVM_TECH_THIN_CALCS no mode (it is ignored)</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="626">the size to be tested</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_lvactivate"
              c:identifier="bd_lvm_lvactivate"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1082"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1078">whether the @vg_name/@lv_name LV was successfully activated or not

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1069">name of the VG containing the to-be-activated LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="lv_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1070">name of the to-be-activated LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="ignore_skip" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1071">whether to ignore the skip flag or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="shared" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1072">whether to activate the LV in shared mode (used for shared LVM setups with lvmlockd,
         use %FALSE if not sure)</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1074">extra options for the LV activation
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_lvcreate" c:identifier="bd_lvm_lvcreate" throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="999"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="995">whether the given @vg_name/@lv_name LV was successfully created or not

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_CREATE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="985">name of the VG to create a new LV in</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="lv_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="986">name of the to-be-created LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="987">requested size of the new LV</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="type"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="988">type of the new LV ("striped", "raid1",..., see lvcreate (8))</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="pv_list"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="989">list of PVs the newly created LV should use or %NULL
if not specified</doc>
          <array c:type="const gchar**">
            <type name="utf8" c:type="gchar*"/>
          </array>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="991">extra options for the LV creation
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_lvdeactivate"
              c:identifier="bd_lvm_lvdeactivate"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1097"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1093">whether the @vg_name/@lv_name LV was successfully deactivated or not

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1087">name of the VG containing the to-be-deactivated LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="lv_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1088">name of the to-be-deactivated LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1089">extra options for the LV deactivation
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_lvinfo" c:identifier="bd_lvm_lvinfo" throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1172"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1167">information about the @vg_name/@lv_name LV or %NULL in case
of error (the @error) gets populated in those cases)

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_QUERY</doc>
        <type name="LVMLVdata" c:type="BDLVMLVdata*"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1163">name of the VG that contains the LV to get information about</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="lv_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1164">name of the LV to get information about</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_lvinfo_tree"
              c:identifier="bd_lvm_lvinfo_tree"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/lvm.h"
           line="1175">This function will fill out the data_lvs, metadata_lvs, and segs fields as well.</doc>
      <source-position filename="lib/plugin_apis/lvm.h" line="1188"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1183">information about the @vg_name/@lv_name LV or %NULL in case
of error (the @error) gets populated in those cases)

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_QUERY</doc>
        <type name="LVMLVdata" c:type="BDLVMLVdata*"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1177">name of the VG that contains the LV to get information about</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="lv_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1178">name of the LV to get information about</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_lvorigin" c:identifier="bd_lvm_lvorigin" throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="980"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="975">the origin volume for the @vg_name/@lv_name LV or
%NULL if failed to determine (@error) is set in those cases)

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_QUERY</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="971">name of the VG containing the queried LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="lv_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="972">name of the queried LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_lvremove" c:identifier="bd_lvm_lvremove" throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1015"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1011">whether the @vg_name/@lv_name LV was successfully removed or not

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_REMOVE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1004">name of the VG containing the to-be-removed LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="lv_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1005">name of the to-be-removed LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="force" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1006">whether to force removal or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1007">extra options for the LV removal
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_lvrename" c:identifier="bd_lvm_lvrename" throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1032"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1027">whether the @vg_name/@lv_name LV was successfully renamed to
@vg_name/@new_name or not

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1020">name of the VG containing the to-be-renamed LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="lv_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1021">name of the to-be-renamed LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="new_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1022">new name for the @vg_name/@lv_name LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1023">extra options for the LV rename
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_lvrepair" c:identifier="bd_lvm_lvrepair" throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1064"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1060">whether the @vg_name/@lv_name LV was successfully repaired or not

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1053">name of the VG containing the to-be-repaired LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="lv_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1054">name of the to-be-repaired LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="pv_list" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1055">list of PVs to be used for the repair</doc>
          <array c:type="const gchar**">
            <type name="utf8" c:type="gchar*"/>
          </array>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1056">extra options for the LV repair
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_lvresize" c:identifier="bd_lvm_lvresize" throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1048"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1044">whether the @vg_name/@lv_name LV was successfully resized or not

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1037">name of the VG containing the to-be-resized LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="lv_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1038">name of the to-be-resized LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1039">the requested new size of the LV</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1040">extra options for the LV resize
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_lvs" c:identifier="bd_lvm_lvs" throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1201"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1196">information about LVs found in the given
@vg_name VG or in system if @vg_name is %NULL

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_QUERY</doc>
        <array c:type="BDLVMLVdata**">
          <type name="LVMLVdata" c:type="BDLVMLVdata*"/>
        </array>
      </return-value>
      <parameters>
        <parameter name="vg_name"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1193">name of the VG to get information about LVs from</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_lvs_tree" c:identifier="bd_lvm_lvs_tree" throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/lvm.h"
           line="1204">This function will fill out the data_lvs, metadata_lvs, and segs fields as well.</doc>
      <source-position filename="lib/plugin_apis/lvm.h" line="1216"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1211">information about LVs found in the given
@vg_name VG or in system if @vg_name is %NULL.

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_QUERY</doc>
        <array c:type="BDLVMLVdata**">
          <type name="LVMLVdata" c:type="BDLVMLVdata*"/>
        </array>
      </return-value>
      <parameters>
        <parameter name="vg_name"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1206">name of the VG to get information about LVs from</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_lvsnapshotcreate"
              c:identifier="bd_lvm_lvsnapshotcreate"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1115"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1110">whether the @snapshot_name snapshot of the @vg_name/@origin_name LV
was successfully created or not.

Tech category: %BD_LVM_TECH_BASIC_SNAP-%BD_LVM_TECH_MODE_CREATE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1102">name of the VG containing the LV a new snapshot should be created of</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="origin_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1103">name of the LV a new snapshot should be created of</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="snapshot_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1104">name of the to-be-created snapshot</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1105">requested size for the snapshot</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1106">extra options for the LV snapshot creation
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_lvsnapshotmerge"
              c:identifier="bd_lvm_lvsnapshotmerge"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1130"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1126">whether the @vg_name/@snapshot_name LV snapshot was successfully merged or not

Tech category: %BD_LVM_TECH_BASIC_SNAP-%BD_LVM_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1120">name of the VG containing the to-be-merged LV snapshot</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="snapshot_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1121">name of the to-be-merged LV snapshot</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1122">extra options for the LV snapshot merge
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_pvcreate" c:identifier="bd_lvm_pvcreate" throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="662"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="658">whether the PV was successfully created or not

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_CREATE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="651">the device to make PV from</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="data_alignment" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="652">data (first PE) alignment or 0 to use the default</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="metadata_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="653">size of the area reserved for metadata or 0 to use the default</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="654">extra options for the PV creation
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_pvinfo" c:identifier="bd_lvm_pvinfo" throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="770"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="765">information about the PV on the given @device or
%NULL in case of error (the @error) gets populated in those cases)

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_QUERY</doc>
        <type name="LVMPVdata" c:type="BDLVMPVdata*"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="762">a PV to get information about or %NULL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_pvmove" c:identifier="bd_lvm_pvmove" throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="713"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="706">whether the extents from the @src PV where successfully moved or not

If @dest is %NULL, VG allocation rules are used for the extents from the @src
PV (see pvmove(8)).

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="src" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="700">the PV device to move extents off of</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="dest"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="701">the PV device to move extents onto or %NULL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="702">extra options for the PV move
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_pvremove" c:identifier="bd_lvm_pvremove" throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="695"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="691">whether the PV was successfully removed/destroyed or not

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_REMOVE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="686">the PV device to be removed/destroyed</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="687">extra options for the PV removal
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_pvresize" c:identifier="bd_lvm_pvresize" throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="681"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="673">whether the PV's size was successfully changed or not

If given @size different from 0, sets the PV's size to the given value (see
pvresize(8)). If given @size 0, adjusts the PV's size to the underlying
block device's size.

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="667">the device to resize</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="668">the new requested size of the PV or 0 if it should be adjusted to device's size</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="669">extra options for the PV resize
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_pvs" c:identifier="bd_lvm_pvs" throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="781"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="777">information about PVs found in the system

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_QUERY</doc>
        <array c:type="BDLVMPVdata**">
          <type name="LVMPVdata" c:type="BDLVMPVdata*"/>
        </array>
      </return-value>
    </function>
    <function name="lvm_pvscan" c:identifier="bd_lvm_pvscan" throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="731"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="724">whether the system or @device was successfully scanned for PVs or not

The @device argument is used only if @update_cache is %TRUE. Otherwise the
whole system is scanned for PVs.

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_QUERY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="718">the device to scan for PVs or %NULL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="update_cache" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="719">whether to update the lvmetad cache or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="720">extra options for the PV scan
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_round_size_to_pe"
              c:identifier="bd_lvm_round_size_to_pe"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="573"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="564">@size rounded to @pe_size according to the @roundup

Rounds given @size up/down to a multiple of @pe_size according to the value
of the @roundup parameter. If the rounded value is too big to fit in the
return type, the result is rounded down (floored) regardless of the @roundup
parameter.

Tech category: %BD_LVM_TECH_CALCS no mode (it is ignored)</doc>
        <type name="guint64" c:type="guint64"/>
      </return-value>
      <parameters>
        <parameter name="size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="559">size to be rounded</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="pe_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="560">physical extent (PE) size or 0 to use the default</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="roundup" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="561">whether to round up or down (ceil or floor)</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_set_devices_filter"
              c:identifier="bd_lvm_set_devices_filter"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1333"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1329">whether the devices filter was successfully set or not

Tech category: %BD_LVM_TECH_DEVICES no mode (it is ignored)</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="devices"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1326">list of devices for lvm commands to work on</doc>
          <array c:type="const gchar**">
            <type name="utf8" c:type="gchar*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_set_global_config"
              c:identifier="bd_lvm_set_global_config"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/lvm.h"
           line="1288">Note: This function sets configuration options for LVM calls internally
      in libblockdev, it doesn't change the global lvm.conf config file.
      Calling this function with `backup {backup=0 archive=0}` for example
      means `--config=backup {backup=0 archive=0}"` will be added to all
      calls libblockdev makes.</doc>
      <source-position filename="lib/plugin_apis/lvm.h" line="1306"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1301">whether the new requested global config @new_config was successfully
         set or not

Tech category: %BD_LVM_TECH_GLOB_CONF no mode (it is ignored)</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="new_config"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1290">string representation of the new global libblockdev LVM
                         configuration to set or %NULL to reset to default</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_thlvcreate"
              c:identifier="bd_lvm_thlvcreate"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1253"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1249">whether the @vg_name/@lv_name thin LV was successfully created or not

Tech category: %BD_LVM_TECH_THIN-%BD_LVM_TECH_MODE_CREATE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1241">name of the VG containing the thin pool providing extents for the to-be-created thin LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="pool_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1242">name of the pool LV providing extents for the to-be-created thin LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="lv_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1243">name of the to-be-created thin LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1244">requested virtual size of the to-be-created thin LV</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1245">extra options for the thin LV creation
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_thlvpoolname"
              c:identifier="bd_lvm_thlvpoolname"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1267"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1262">the name of the pool volume for the @vg_name/@lv_name
thin LV or %NULL if failed to determine (@error) is set in those cases)

Tech category: %BD_LVM_TECH_THIN-%BD_LVM_TECH_MODE_QUERY</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1258">name of the VG containing the queried thin LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="lv_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1259">name of the queried thin LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_thpool_convert"
              c:identifier="bd_lvm_thpool_convert"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/lvm.h"
           line="1538">Converts the @data_lv and @metadata_lv into a new thin pool in the @vg_name
VG.</doc>
      <source-position filename="lib/plugin_apis/lvm.h" line="1556"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1551">whether the new thin pool was successfully created from @data_lv and
         @metadata_lv or not

Tech category: %BD_LVM_TECH_THIN-%BD_LVM_TECH_MODE_CREATE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1540">name of the VG to create the new thin pool in</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="data_lv" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1541">name of the LV that should become the data part of the new pool</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="metadata_lv" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1542">name of the LV that should become the metadata part of the new pool</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="name"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1543">name for the thin pool (if %NULL, the name @data_lv is inherited)</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1544">extra options for the thin pool creation
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_thpoolcreate"
              c:identifier="bd_lvm_thpoolcreate"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1236"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1232">whether the @vg_name/@lv_name thin pool was successfully created or not

Tech category: %BD_LVM_TECH_THIN-%BD_LVM_TECH_MODE_CREATE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1221">name of the VG to create a thin pool in</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="lv_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1222">name of the to-be-created pool LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1223">requested size of the to-be-created pool</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="md_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1224">requested metadata size or 0 to use the default</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="chunk_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1225">requested chunk size or 0 to use the default</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="profile"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1226">profile to use (see lvm(8) for more information) or %NULL to use
                        the default</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1228">extra options for the thin pool creation
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_thsnapshotcreate"
              c:identifier="bd_lvm_thsnapshotcreate"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1285"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1280">whether the @snapshot_name snapshot of the @vg_name/@origin_name
thin LV was successfully created or not.

Tech category: %BD_LVM_TECH_THIN-%BD_LVM_TECH_MODE_CREATE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1272">name of the VG containing the thin LV a new snapshot should be created of</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="origin_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1273">name of the thin LV a new snapshot should be created of</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="snapshot_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1274">name of the to-be-created snapshot</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="pool_name"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1275">name of the thin pool to create the snapshot in or %NULL if not specified</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1276">extra options for the thin LV snapshot creation
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_vdo_disable_compression"
              c:identifier="bd_lvm_vdo_disable_compression"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1629"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1625">whether compression was successfully disabled on @vg_name/@pool_name LV or not

Tech category: %BD_LVM_TECH_VDO-%BD_LVM_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1619">name of the VG containing the to-be-changed VDO pool LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="pool_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1620">name of the VDO pool LV to disable compression on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1621">extra options for the VDO change
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_vdo_disable_deduplication"
              c:identifier="bd_lvm_vdo_disable_deduplication"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1659"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1655">whether deduplication was successfully disabled on @vg_name/@pool_name LV or not

Tech category: %BD_LVM_TECH_VDO-%BD_LVM_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1649">name of the VG containing the to-be-changed VDO pool LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="pool_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1650">name of the VDO pool LV to disable deduplication on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1651">extra options for the VDO change
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_vdo_enable_compression"
              c:identifier="bd_lvm_vdo_enable_compression"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1614"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1610">whether compression was successfully enabled on @vg_name/@pool_name LV or not

Tech category: %BD_LVM_TECH_VDO-%BD_LVM_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1604">name of the VG containing the to-be-changed VDO pool LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="pool_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1605">name of the VDO pool LV to enable compression on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1606">extra options for the VDO change
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_vdo_enable_deduplication"
              c:identifier="bd_lvm_vdo_enable_deduplication"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1644"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1640">whether deduplication was successfully enabled on @vg_name/@pool_name LV or not

Tech category: %BD_LVM_TECH_VDO-%BD_LVM_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1634">name of the VG containing the to-be-changed VDO pool LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="pool_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1635">name of the VDO pool LV to enable deduplication on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1636">extra options for the VDO change
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_vdo_get_stats"
              c:identifier="bd_lvm_vdo_get_stats"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1848"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1840">a structure containing selected statistics or %NULL in case of error
                          (@error gets populated in those cases)

In contrast to @bd_lvm_vdo_get_stats_full this function will only return selected statistics
in a fixed structure. In case a value is not available, -1 would be returned.

Tech category: %BD_LVM_TECH_VDO-%BD_LVM_TECH_MODE_QUERY</doc>
        <type name="LVMVDOStats" c:type="BDLVMVDOStats*"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1836">name of the VG that contains @pool_name VDO pool</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="pool_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1837">name of the VDO pool to get statistics for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_vdo_get_stats_full"
              c:identifier="bd_lvm_vdo_get_stats_full"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1831"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1820">hashtable of type string - string of available
                                                   statistics or %NULL in case of error
                                                   (@error gets populated in those cases)

Statistics are collected from the values exposed by the kernel `dm-vdo` module.

Some of the keys are computed to mimic the information produced by the vdo tools.
Please note the contents of the hashtable may vary depending on the actual dm-vdo module version.

Tech category: %BD_LVM_TECH_VDO-%BD_LVM_TECH_MODE_QUERY</doc>
        <type name="GLib.HashTable" c:type="GHashTable*">
          <type name="utf8"/>
          <type name="utf8"/>
        </type>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1816">name of the VG that contains @pool_name VDO pool</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="pool_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1817">name of the VDO pool to get statistics for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_vdo_info" c:identifier="bd_lvm_vdo_info" throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1673"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1668">information about the @vg_name/@lv_name LV or %NULL in case
of error (the @error) gets populated in those cases)

Tech category: %BD_LVM_TECH_VDO-%BD_LVM_TECH_MODE_QUERY</doc>
        <type name="LVMVDOPooldata" c:type="BDLVMVDOPooldata*"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1664">name of the VG that contains the LV to get information about</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="lv_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1665">name of the LV to get information about</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_vdo_pool_convert"
              c:identifier="bd_lvm_vdo_pool_convert"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/lvm.h"
           line="1713">Converts the @pool_lv into a new VDO pool LV in the @vg_name VG and creates a new
@name VDO LV with size @virtual_size.

Note: All data on @pool_lv will be irreversibly destroyed.</doc>
      <source-position filename="lib/plugin_apis/lvm.h" line="1736"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1732">whether the new VDO pool LV was successfully created from @pool_lv and or not

Tech category: %BD_LVM_TECH_VDO-%BD_LVM_TECH_MODE_CREATE&amp;%BD_LVM_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1715">name of the VG that contains @pool_lv</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="pool_lv" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1716">name of the LV that should become the new VDO pool LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="name"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1717">name for the VDO LV or %NULL for default name</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="virtual_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1718">virtual size for the new VDO LV</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="index_memory" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1719">amount of index memory (in bytes) or 0 for default</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="compression" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1720">whether to enable compression or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="deduplication" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1721">whether to enable deduplication or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="write_policy" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1722">write policy for the volume</doc>
          <type name="LVMVDOWritePolicy" c:type="BDLVMVDOWritePolicy"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1723">extra options for the VDO pool creation
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_vdo_pool_create"
              c:identifier="bd_lvm_vdo_pool_create"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1599"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1595">whether the given @vg_name/@lv_name VDO LV was successfully created or not

Tech category: %BD_LVM_TECH_VDO-%BD_LVM_TECH_MODE_CREATE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1582">name of the VG to create a new LV in</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="lv_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1583">name of the to-be-created VDO LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="pool_name"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1584">name of the to-be-created VDO pool LV or %NULL for default name</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="data_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1585">requested size of the data VDO LV (physical size of the @pool_name VDO pool LV)</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="virtual_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1586">requested virtual_size of the @lv_name VDO LV</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="index_memory" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1587">amount of index memory (in bytes) or 0 for default</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="compression" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1588">whether to enable compression or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="deduplication" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1589">whether to enable deduplication or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="write_policy" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1590">write policy for the volume</doc>
          <type name="LVMVDOWritePolicy" c:type="BDLVMVDOWritePolicy"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1591">extra options for the VDO LV creation
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_vdo_pool_resize"
              c:identifier="bd_lvm_vdo_pool_resize"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1710"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1704">whether the @vg_name/@pool_name VDO pool LV was successfully resized or not

Note: Size of the VDO pool LV can be only extended, not reduced.

Tech category: %BD_LVM_TECH_VDO-%BD_LVM_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1697">name of the VG containing the to-be-resized VDO pool LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="pool_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1698">name of the to-be-resized VDO pool LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1699">the requested new size of the VDO pool LV</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1700">extra options for the VDO pool LV resize
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_vdo_resize"
              c:identifier="bd_lvm_vdo_resize"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1692"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1685">whether the @vg_name/@lv_name VDO LV was successfully resized or not

Note: Reduction needs to process TRIM for reduced disk area to unmap used data blocks
      from the VDO pool LV and it may take a long time.

Tech category: %BD_LVM_TECH_VDO-%BD_LVM_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1678">name of the VG containing the to-be-resized VDO LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="lv_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1679">name of the to-be-resized VDO LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1680">the requested new size of the VDO LV</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1681">extra options for the VDO LV resize
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_vdolvpoolname"
              c:identifier="bd_lvm_vdolvpoolname"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1750"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1745">the name of the pool volume for the @vg_name/@lv_name
VDO LV or %NULL if failed to determine (@error) is set in those cases)

Tech category: %BD_LVM_TECH_VDO-%BD_LVM_TECH_MODE_QUERY</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1741">name of the VG containing the queried VDO LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="lv_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1742">name of the queried VDO LV</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_vgactivate"
              c:identifier="bd_lvm_vgactivate"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="840"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="836">whether the VG was successfully activated or not

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="831">name of the to be activated VG</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="832">extra options for the VG activation
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_vgcreate" c:identifier="bd_lvm_vgcreate" throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="797"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="793">whether the VG @name was successfully created or not

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_CREATE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="786">name of the newly created VG</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="pv_list" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="787">list of PVs the newly created VG should use</doc>
          <array c:type="const gchar**">
            <type name="utf8" c:type="gchar*"/>
          </array>
        </parameter>
        <parameter name="pe_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="788">PE size or 0 if the default value should be used</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="789">extra options for the VG creation
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_vgdeactivate"
              c:identifier="bd_lvm_vgdeactivate"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="854"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="850">whether the VG was successfully deactivated or not

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="845">name of the to be deactivated VG</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="846">extra options for the VG deactivation
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_vgextend" c:identifier="bd_lvm_vgextend" throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="869"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="865">whether the VG @vg_name was successfully extended with the given @device or not.

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="859">name of the to be extended VG</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="860">PV device to extend the @vg_name VG with</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="861">extra options for the VG extension
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_vginfo" c:identifier="bd_lvm_vginfo" throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="955"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="950">information about the @vg_name VG or %NULL in case
of error (the @error) gets populated in those cases)

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_QUERY</doc>
        <type name="LVMVGdata" c:type="BDLVMVGdata*"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="947">a VG to get information about</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_vglock_start"
              c:identifier="bd_lvm_vglock_start"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="928"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="924">whether the lock was successfully started for @vg_name or not

Tech category: %BD_LVM_TECH_SHARED-%BD_LVM_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="919">a shared VG to start the lockspace in lvmlockd</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="920">extra options for the vgchange command
                                              (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_vglock_stop"
              c:identifier="bd_lvm_vglock_stop"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="942"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="938">whether the lock was successfully stopped for @vg_name or not

Tech category: %BD_LVM_TECH_SHARED-%BD_LVM_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="933">a shared VG to stop the lockspace in lvmlockd</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="934">extra options for the vgchange command
                                              (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_vgreduce" c:identifier="bd_lvm_vgreduce" throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="888"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="881">whether the VG @vg_name was successfully reduced of the given @device or not

Note: This function does not move extents off of the PV before removing
      it from the VG. You must do that first by calling #bd_lvm_pvmove.

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="874">name of the to be reduced VG</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="device"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="875">PV device the @vg_name VG should be reduced of or %NULL
                       if the VG should be reduced of the missing PVs</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="877">extra options for the VG reduction
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_vgremove" c:identifier="bd_lvm_vgremove" throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="811"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="807">whether the VG was successfully removed or not

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_REMOVE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="802">name of the to be removed VG</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="803">extra options for the VG removal
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_vgrename" c:identifier="bd_lvm_vgrename" throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="826"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="822">whether the VG was successfully renamed or not

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="old_vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="816">old name of the VG to rename</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="new_vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="817">new name for the @old_vg_name VG</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="818">extra options for the VG rename
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_vgs" c:identifier="bd_lvm_vgs" throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="966"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="962">information about VGs found in the system

Tech category: %BD_LVM_TECH_BASIC-%BD_LVM_TECH_MODE_QUERY</doc>
        <array c:type="BDLVMVGdata**">
          <type name="LVMVGdata" c:type="BDLVMVGdata*"/>
        </array>
      </return-value>
    </function>
    <function name="lvm_writecache_attach"
              c:identifier="bd_lvm_writecache_attach"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1500"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1496">whether the @cache_lv was successfully attached to the @data_lv or not

Tech category: %BD_LVM_TECH_WRITECACHE-%BD_LVM_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1489">name of the VG containing the @data_lv and the @cache_pool_lv LVs</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="data_lv" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1490">data LV to attach the @cache_lv to</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="cache_lv" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1491">cache (fast) LV to attach to the @data_lv</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1492">extra options for the cache attachment
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_writecache_create_cached_lv"
              c:identifier="bd_lvm_writecache_create_cached_lv"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1535"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1531">whether the cached LV @lv_name was successfully created or not

Tech category: %BD_LVM_TECH_WRITECACHE-%BD_LVM_TECH_MODE_CREATE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1523">name of the VG to create a cached LV in</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="lv_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1524">name of the cached LV to create</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="data_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1525">size of the data LV</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="cache_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1526">size of the cache (or cached LV more precisely)</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="slow_pvs" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1527">list of slow PVs (used for the data LV)</doc>
          <array c:type="const gchar**">
            <type name="utf8" c:type="gchar*"/>
          </array>
        </parameter>
        <parameter name="fast_pvs" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1528">list of fast PVs (used for the cache LV)</doc>
          <array c:type="const gchar**">
            <type name="utf8" c:type="gchar*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="lvm_writecache_detach"
              c:identifier="bd_lvm_writecache_detach"
              throws="1">
      <source-position filename="lib/plugin_apis/lvm.h" line="1518"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/lvm.h"
             line="1512">whether the cache was successfully detached from the @cached_lv or not

Note: synces the cache first

Tech category: %BD_LVM_TECH_WRITECACHE-%BD_LVM_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="vg_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1505">name of the VG containing the @cached_lv</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="cached_lv" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1506">name of the cached LV to detach its cache from</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="destroy" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1507">whether to destroy the cache after detach or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/lvm.h"
               line="1508">extra options for the cache detachment
                                                (just passed to LVM as is)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="md_activate" c:identifier="bd_md_activate" throws="1">
      <source-position filename="lib/plugin_apis/mdraid.h" line="235"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="229">whether the MD RAID @device was successfully activated or not

Note: either @members or @uuid (or both) have to be specified.

Tech category: %BD_MD_TECH_MDRAID-%BD_MD_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="raid_spec"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="221">specification of the RAID device (name, node or path) to activate (if not given "--scan" is implied and @members is ignored)</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="members"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="222">member devices to be considered for @device activation</doc>
          <array c:type="const gchar**">
            <type name="utf8" c:type="gchar*"/>
          </array>
        </parameter>
        <parameter name="uuid"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="223">UUID (in the MD RAID format!) of the MD RAID to activate</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="start_degraded" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="224">whether to start the array even if it's degraded</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="225">extra options for the activation (right now
                                                passed to the 'mdadm' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="md_add" c:identifier="bd_md_add" throws="1">
      <source-position filename="lib/plugin_apis/mdraid.h" line="302"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="290">whether the @device was successfully added to the @raid_spec RAID or
not

The @raid_devs parameter is used when adding devices to a raid array that has
no actual redundancy. In this case it is necessary to explicitly grow the
array all at once rather than manage it in the sense of adding spares.

Whether the new device will be added as a spare or an active member is
decided by mdadm.

Tech category: %BD_MD_TECH_MDRAID-%BD_MD_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="raid_spec" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="282">specification of the RAID device (name, node or path) to add @device into</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="283">name of the device to add to the @raid_spec RAID device</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="raid_devs" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="284">number of devices the @raid_spec RAID should actively use or 0
            to leave unspecified (see below)</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="286">extra options for the addition (right now
                                                passed to the 'mdadm' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="md_canonicalize_uuid"
              c:identifier="bd_md_canonicalize_uuid"
              throws="1">
      <source-position filename="lib/plugin_apis/mdraid.h" line="358"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="351">canonicalized form of @uuid

This function expects a UUID in the form that mdadm returns. The change is as
follows: 3386ff85:f5012621:4a435f06:1eb47236 -&gt; 3386ff85-f501-2621-4a43-5f061eb47236

Tech category: always available</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="uuid" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="348">UUID to canonicalize</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="md_create" c:identifier="bd_md_create" throws="1">
      <source-position filename="lib/plugin_apis/mdraid.h" line="192"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="188">whether the new MD RAID device @device_name was successfully created or not

Tech category: %BD_MD_TECH_MDRAID-%BD_MD_TECH_MODE_CREATE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="177">name of the device to create</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="level" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="178">RAID level (as understood by mdadm, see mdadm(8))</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="disks" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="179">disks to use for the new RAID (including spares)</doc>
          <array c:type="const gchar**">
            <type name="utf8" c:type="gchar*"/>
          </array>
        </parameter>
        <parameter name="spares" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="180">number of spare devices</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="version"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="181">metadata version</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="bitmap"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="182">write-intent bitmap location ('none', 'internal') or %NULL to let mdadm decide (i.e. internal &gt; 100GB)</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="chunk_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="183">chunk size of the device to create</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="184">extra options for the creation (right now
                                                passed to the 'mdadm' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="md_deactivate" c:identifier="bd_md_deactivate" throws="1">
      <source-position filename="lib/plugin_apis/mdraid.h" line="216"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="212">whether the RAID device @raid_spec was successfully deactivated or not

Tech category: %BD_MD_TECH_MDRAID-%BD_MD_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="raid_spec" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="209">specification of the RAID device (name, node or path)</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="md_denominate" c:identifier="bd_md_denominate" throws="1">
      <source-position filename="lib/plugin_apis/mdraid.h" line="277"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="270">whether the @device was successfully denominated (added to its
appropriate RAID) or not

Note: may start the MD RAID if it becomes ready by adding @device.

Tech category: %BD_MD_TECH_MDRAID-%BD_MD_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="267">device to denominate (remove from its appropriate RAID) as a MD RAID device</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="md_destroy" c:identifier="bd_md_destroy" throws="1">
      <source-position filename="lib/plugin_apis/mdraid.h" line="204"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="200">whether the MD RAID metadata was successfully destroyed on @device or not

Tech category: %BD_MD_TECH_MDRAID-%BD_MD_TECH_MODE_DELETE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="197">device to destroy MD RAID metadata on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="md_detail" c:identifier="bd_md_detail" throws="1">
      <source-position filename="lib/plugin_apis/mdraid.h" line="343"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="339">information about the MD RAID @raid_spec

Tech category: %BD_MD_TECH_MDRAID-%BD_MD_TECH_MODE_QUERY</doc>
        <type name="MDDetailData" c:type="BDMDDetailData*"/>
      </return-value>
      <parameters>
        <parameter name="raid_spec" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="336">specification of the RAID device (name, node or path) to examine</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="md_error_quark" c:identifier="bd_md_error_quark">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="md_examine" c:identifier="bd_md_examine" throws="1">
      <source-position filename="lib/plugin_apis/mdraid.h" line="331"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="327">information about the MD RAID extracted from the @device

Tech category: %BD_MD_TECH_MDRAID-%BD_MD_TECH_MODE_QUERY</doc>
        <type name="MDExamineData" c:type="BDMDExamineData*"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="324">name of the device (a member of an MD RAID) to examine</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="md_get_bitmap_location"
              c:identifier="bd_md_get_bitmap_location"
              throws="1">
      <source-position filename="lib/plugin_apis/mdraid.h" line="436"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="432">bitmap location for @raid_spec

Tech category: %BD_MD_TECH_MDRAID-%BD_MD_TECH_MODE_QUERY</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="raid_spec" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="429">specification of the RAID device (name, node or path) to get the bitmap location</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="md_get_md_uuid"
              c:identifier="bd_md_get_md_uuid"
              throws="1">
      <source-position filename="lib/plugin_apis/mdraid.h" line="375"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="366">transformed form of @uuid

This function expects a UUID in the canonical (traditional format) and
returns a UUID in the format used by MD RAID and is thus reverse to
bd_md_canonicalize_uuid(). The change is as follows:
3386ff85-f501-2621-4a43-5f061eb47236 -&gt; 3386ff85:f5012621:4a435f06:1eb47236

Tech category: always available</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="uuid" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="363">UUID to transform into format used by MD RAID</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="md_get_status" c:identifier="bd_md_get_status" throws="1">
      <source-position filename="lib/plugin_apis/mdraid.h" line="411"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="407">status of the @raid_spec RAID.

Tech category: %BD_MD_TECH_MDRAID-%BD_MD_TECH_MODE_QUERY</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="raid_spec" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="404">specification of the RAID device (name, node or path) to get status</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="md_get_superblock_size"
              c:identifier="bd_md_get_superblock_size"
              throws="1">
      <source-position filename="lib/plugin_apis/mdraid.h" line="172"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="167">Calculated superblock size for an array with a given @member_size
and metadata @version or default if unsupported @version is used.

Tech category: always available</doc>
        <type name="guint64" c:type="guint64"/>
      </return-value>
      <parameters>
        <parameter name="member_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="163">size of an array member</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="version"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="164">metadata version or %NULL to use the current default version</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="md_is_tech_avail"
              c:identifier="bd_md_is_tech_avail"
              throws="1">
      <source-position filename="lib/plugin_apis/mdraid.h" line="158"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="155">whether the @tech-@mode combination is available -- supported by the
         plugin implementation and having all the runtime dependencies available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="tech" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="151">the queried tech</doc>
          <type name="MDTech" c:type="BDMDTech"/>
        </parameter>
        <parameter name="mode" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="152">a bit mask of queried modes of operation for @tech</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
      </parameters>
    </function>
    <function name="md_name_from_node"
              c:identifier="bd_md_name_from_node"
              throws="1">
      <source-position filename="lib/plugin_apis/mdraid.h" line="399"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="395">@name of the MD RAID the device node belongs to or %NULL in case of error

Tech category: always available</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="node" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="392">path of the MD RAID's device node</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="md_node_from_name"
              c:identifier="bd_md_node_from_name"
              throws="1">
      <source-position filename="lib/plugin_apis/mdraid.h" line="387"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="383">device node of the @name MD RAID or %NULL in case of error

Tech category: always available</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="380">name of the MD RAID</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="md_nominate" c:identifier="bd_md_nominate" throws="1">
      <source-position filename="lib/plugin_apis/mdraid.h" line="262"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="255">whether the @device was successfully nominated (added to its
appropriate RAID) or not

Note: may start the MD RAID if it becomes ready by adding @device.

Tech category: %BD_MD_TECH_MDRAID-%BD_MD_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="252">device to nominate (add to its appropriate RAID) as a MD RAID device</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="md_remove" c:identifier="bd_md_remove" throws="1">
      <source-position filename="lib/plugin_apis/mdraid.h" line="319"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="314">whether the @device was successfully removed from the @raid_spec
RAID or not.

Tech category: %BD_MD_TECH_MDRAID-%BD_MD_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="raid_spec" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="307">specification of the RAID device (name, node or path) to remove @device from</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="308">device to remove from the @raid_spec RAID</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="fail" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="309">whether to mark the @device as failed before removing</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="310">extra options for the removal (right now
                                                passed to the 'mdadm' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="md_request_sync_action"
              c:identifier="bd_md_request_sync_action"
              throws="1">
      <source-position filename="lib/plugin_apis/mdraid.h" line="450"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="445">whether the @action was successfully requested for the @raid_spec
RAID or not.

Tech category: %BD_MD_TECH_MDRAID-%BD_MD_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="raid_spec" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="441">specification of the RAID device (name, node or path) to request sync action on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="action" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="442">requested sync action (resync, recovery, check, repair or idle)</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="md_run" c:identifier="bd_md_run" throws="1">
      <source-position filename="lib/plugin_apis/mdraid.h" line="247"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="243">whether the @raid_spec was successfully started or not

Tech category: %BD_MD_TECH_MDRAID-%BD_MD_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="raid_spec" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="240">specification of the (possibly degraded) RAID device (name, node or path) to be started</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="md_set_bitmap_location"
              c:identifier="bd_md_set_bitmap_location"
              throws="1">
      <source-position filename="lib/plugin_apis/mdraid.h" line="424"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mdraid.h"
             line="420">whether @location was successfully set for @raid_spec

Tech category: %BD_MD_TECH_MDRAID-%BD_MD_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="raid_spec" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="416">specification of the RAID device (name, node or path) to set the bitmap location</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="location" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mdraid.h"
               line="417">bitmap location (none, internal or path)</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="mpath_error_quark" c:identifier="bd_mpath_error_quark">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="mpath_flush_mpaths"
              c:identifier="bd_mpath_flush_mpaths"
              throws="1">
      <source-position filename="lib/plugin_apis/mpath.h" line="52"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mpath.h"
             line="46">whether multipath device maps were successfully flushed or not

Flushes all unused multipath device maps.

Tech category: %BD_MPATH_TECH_BASE-%BD_MPATH_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="mpath_get_mpath_members"
              c:identifier="bd_mpath_get_mpath_members"
              throws="1">
      <source-position filename="lib/plugin_apis/mpath.h" line="78"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mpath.h"
             line="72">list of names of all devices that are
                                                    members of the mpath mappings (or %NULL
                                                    in case of error)

Tech category: %BD_MPATH_TECH_BASE-%BD_MPATH_TECH_MODE_QUERY</doc>
        <array c:type="gchar**">
          <type name="utf8"/>
        </array>
      </return-value>
    </function>
    <function name="mpath_is_mpath_member"
              c:identifier="bd_mpath_is_mpath_member"
              throws="1">
      <source-position filename="lib/plugin_apis/mpath.h" line="65"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mpath.h"
             line="60">%TRUE if the device is a multipath member, %FALSE if not or an error
appeared when queried (@error is set in those cases)

Tech category: %BD_MPATH_TECH_BASE-%BD_MPATH_TECH_MODE_QUERY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mpath.h"
               line="57">device to test</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="mpath_is_tech_avail"
              c:identifier="bd_mpath_is_tech_avail"
              throws="1">
      <source-position filename="lib/plugin_apis/mpath.h" line="39"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mpath.h"
             line="36">whether the @tech-@mode combination is available -- supported by the
         plugin implementation and having all the runtime dependencies available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="tech" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mpath.h"
               line="32">the queried tech</doc>
          <type name="MpathTech" c:type="BDMpathTech"/>
        </parameter>
        <parameter name="mode" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mpath.h"
               line="33">a bit mask of queried modes of operation for @tech</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
      </parameters>
    </function>
    <function name="mpath_set_friendly_names"
              c:identifier="bd_mpath_set_friendly_names"
              throws="1">
      <source-position filename="lib/plugin_apis/mpath.h" line="90"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/mpath.h"
             line="86">if successfully set or not

Tech category: %BD_MPATH_TECH_FRIENDLY_NAMES-%BD_MPATH_TECH_MODE_MODIFY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="enabled" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/mpath.h"
               line="83">whether friendly names should be enabled or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="nvdimm_error_quark" c:identifier="bd_nvdimm_error_quark">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="nvdimm_is_tech_avail"
              c:identifier="bd_nvdimm_is_tech_avail"
              deprecated="1"
              deprecated-version="3.1"
              throws="1">
      <doc-deprecated xml:space="preserve">NVDIMM plugin will be removed in the next major release</doc-deprecated>
      <source-position filename="lib/plugin_apis/nvdimm.h" line="97"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvdimm.h"
             line="92">whether the @tech-@mode combination is available -- supported by the
         plugin implementation and having all the runtime dependencies available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="tech" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvdimm.h"
               line="88">the queried tech</doc>
          <type name="NVDIMMTech" c:type="BDNVDIMMTech"/>
        </parameter>
        <parameter name="mode" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvdimm.h"
               line="89">a bit mask of queried modes of operation (#BDNVDIMMTechMode) for @tech</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
      </parameters>
    </function>
    <function name="nvdimm_list_namespaces"
              c:identifier="bd_nvdimm_list_namespaces"
              deprecated="1"
              deprecated-version="3.1"
              throws="1">
      <doc-deprecated xml:space="preserve">NVDIMM plugin will be removed in the next major release</doc-deprecated>
      <source-position filename="lib/plugin_apis/nvdimm.h" line="208"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvdimm.h"
             line="201">information about the namespaces on @bus and @region or
                                    %NULL if no namespaces were found (@error may be set to indicate error)

Tech category: %BD_NVDIMM_TECH_NAMESPACE-%BD_NVDIMM_TECH_MODE_QUERY</doc>
        <array c:type="BDNVDIMMNamespaceInfo**">
          <type name="NVDIMMNamespaceInfo" c:type="BDNVDIMMNamespaceInfo*"/>
        </array>
      </return-value>
      <parameters>
        <parameter name="bus"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvdimm.h"
               line="192">return only namespaces on given bus (specified by name),
                    %NULL may be specified to return namespaces from all buses</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="region"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvdimm.h"
               line="194">return only namespaces on given region (specified by regionX name or region id),
                       %NULL may be specified to return namespaces from all regions</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="idle" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvdimm.h"
               line="196">whether to list idle (not enabled) namespaces too</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvdimm.h"
               line="197">extra options for the creation (right now
                                                passed to the 'ndctl' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="nvdimm_namespace_disable"
              c:identifier="bd_nvdimm_namespace_disable"
              deprecated="1"
              deprecated-version="3.1"
              throws="1">
      <doc-deprecated xml:space="preserve">NVDIMM plugin will be removed in the next major release</doc-deprecated>
      <source-position filename="lib/plugin_apis/nvdimm.h" line="171"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvdimm.h"
             line="165">whether the @namespace was successfully disabled or not

Tech category: %BD_NVDIMM_TECH_NAMESPACE-%BD_NVDIMM_TECH_MODE_ACTIVATE_DEACTIVATE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="namespace" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvdimm.h"
               line="161">name of the namespace to disable</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvdimm.h"
               line="162">extra options (currently unused)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="nvdimm_namespace_enable"
              c:identifier="bd_nvdimm_namespace_enable"
              deprecated="1"
              deprecated-version="3.1"
              throws="1">
      <doc-deprecated xml:space="preserve">NVDIMM plugin will be removed in the next major release</doc-deprecated>
      <source-position filename="lib/plugin_apis/nvdimm.h" line="156"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvdimm.h"
             line="150">whether the @namespace was successfully enabled or not

Tech category: %BD_NVDIMM_TECH_NAMESPACE-%BD_NVDIMM_TECH_MODE_ACTIVATE_DEACTIVATE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="namespace" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvdimm.h"
               line="146">name of the namespace to enable</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvdimm.h"
               line="147">extra options (currently unused)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="nvdimm_namespace_get_devname"
              c:identifier="bd_nvdimm_namespace_get_devname"
              deprecated="1"
              deprecated-version="3.1"
              throws="1">
      <doc-deprecated xml:space="preserve">NVDIMM plugin will be removed in the next major release</doc-deprecated>
      <source-position filename="lib/plugin_apis/nvdimm.h" line="141"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvdimm.h"
             line="133">namespace device name (e.g. "namespaceX.Y") for @device
                          or %NULL if @device is not a NVDIMM namespace
                          (@error may be set to indicate error)

Tech category: %BD_NVDIMM_TECH_NAMESPACE-%BD_NVDIMM_TECH_MODE_QUERY</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvdimm.h"
               line="130">name or path of a block device (e.g. "/dev/pmem0")</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="nvdimm_namespace_get_mode_from_str"
              c:identifier="bd_nvdimm_namespace_get_mode_from_str"
              deprecated="1"
              deprecated-version="3.1"
              throws="1">
      <doc-deprecated xml:space="preserve">NVDIMM plugin will be removed in the next major release</doc-deprecated>
      <source-position filename="lib/plugin_apis/nvdimm.h" line="111"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvdimm.h"
             line="105">mode matching the @mode_str given or %BD_NVDIMM_NAMESPACE_MODE_UNKNOWN in case of no match

Tech category: always available</doc>
        <type name="NVDIMMNamespaceMode" c:type="BDNVDIMMNamespaceMode"/>
      </return-value>
      <parameters>
        <parameter name="mode_str" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvdimm.h"
               line="102">string representation of mode</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="nvdimm_namespace_get_mode_str"
              c:identifier="bd_nvdimm_namespace_get_mode_str"
              deprecated="1"
              deprecated-version="3.1"
              throws="1">
      <doc-deprecated xml:space="preserve">NVDIMM plugin will be removed in the next major release</doc-deprecated>
      <source-position filename="lib/plugin_apis/nvdimm.h" line="125"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvdimm.h"
             line="119">string representation of @mode or %NULL in case of error

Tech category: always available</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="mode" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvdimm.h"
               line="116">mode to get string representation of</doc>
          <type name="NVDIMMNamespaceMode" c:type="BDNVDIMMNamespaceMode"/>
        </parameter>
      </parameters>
    </function>
    <function name="nvdimm_namespace_get_supported_sector_sizes"
              c:identifier="bd_nvdimm_namespace_get_supported_sector_sizes"
              deprecated="1"
              deprecated-version="3.1"
              throws="1">
      <doc-deprecated xml:space="preserve">NVDIMM plugin will be removed in the next major release</doc-deprecated>
      <source-position filename="lib/plugin_apis/nvdimm.h" line="238"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvdimm.h"
             line="232">list of supported sector sizes for @mode

Tech category: %BD_NVDIMM_TECH_NAMESPACE-%BD_NVDIMM_TECH_MODE_QUERY</doc>
        <array c:type="const guint64*">
          <type name="guint64" c:type="guint64"/>
        </array>
      </return-value>
      <parameters>
        <parameter name="mode" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvdimm.h"
               line="229">namespace mode</doc>
          <type name="NVDIMMNamespaceMode" c:type="BDNVDIMMNamespaceMode"/>
        </parameter>
      </parameters>
    </function>
    <function name="nvdimm_namespace_info"
              c:identifier="bd_nvdimm_namespace_info"
              deprecated="1"
              deprecated-version="3.1"
              throws="1">
      <doc-deprecated xml:space="preserve">NVDIMM plugin will be removed in the next major release</doc-deprecated>
      <source-position filename="lib/plugin_apis/nvdimm.h" line="187"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvdimm.h"
             line="180">information about given namespace or %NULL if no such
                          namespace was found (@error may be set to indicate error)

Tech category: %BD_NVDIMM_TECH_NAMESPACE-%BD_NVDIMM_TECH_MODE_QUERY</doc>
        <type name="NVDIMMNamespaceInfo" c:type="BDNVDIMMNamespaceInfo*"/>
      </return-value>
      <parameters>
        <parameter name="namespace" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvdimm.h"
               line="176">namespace to get information about</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvdimm.h"
               line="177">extra options (currently unused)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="nvdimm_namespace_reconfigure"
              c:identifier="bd_nvdimm_namespace_reconfigure"
              deprecated="1"
              deprecated-version="3.1"
              throws="1">
      <doc-deprecated xml:space="preserve">NVDIMM plugin will be removed in the next major release</doc-deprecated>
      <source-position filename="lib/plugin_apis/nvdimm.h" line="224"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvdimm.h"
             line="220">whether @namespace was successfully reconfigured or not</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="namespace" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvdimm.h"
               line="213">name of the namespace to reconfigure</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="mode" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvdimm.h"
               line="214">mode type to set (memory/sector/raw/dax)</doc>
          <type name="NVDIMMNamespaceMode" c:type="BDNVDIMMNamespaceMode"/>
        </parameter>
        <parameter name="force" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvdimm.h"
               line="215">whether to use force to reconfigure an active namespace</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvdimm.h"
               line="217">extra options for the creation (right now
                                                passed to the 'ndctl' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="nvme_connect" c:identifier="bd_nvme_connect" throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/nvme.h"
           line="893">Creates a transport connection to a remote system (specified by @transport_addr and @transport_svcid)
and creates a NVMe over Fabrics controller for the NVMe subsystem specified by the @subsysnqn option.

Valid values for @transport include:
- `"rdma"`: An rdma network (RoCE, iWARP, Infiniband, basic rdma, etc.)
- `"fc"`: A Fibre Channel network.
- `"tcp"`: A TCP/IP network.
- `"loop"`: A NVMe over Fabrics target on the local host.

In addition to the primary options it's possible to supply @extra arguments:
- `"config"`: Use the specified JSON configuration file instead of the default file (see below) or
              specify `"none"` to avoid reading any configuration file.
- `"dhchap_key"`: NVMe In-band authentication secret in ASCII format as described
                     in the NVMe 2.0 specification. When not specified, the secret is by default read
                     from `/etc/nvme/hostkey`. In case that file does not exist no in-band authentication
                     is attempted.
- `"dhchap_ctrl_key"`: NVMe In-band authentication controller secret for bi-directional authentication.
                       When not specified, no bi-directional authentication is attempted.
- `"nr_io_queues"`: The number of I/O queues.
- `"nr_write_queues"`: Number of additional queues that will be used for write I/O.
- `"nr_poll_queues"`: Number of additional queues that will be used for polling latency sensitive I/O.
- `"queue_size"`: Number of elements in the I/O queues.
- `"keep_alive_tmo"`: The keep alive timeout (in seconds).
- `"reconnect_delay"`: The delay (in seconds) before reconnect is attempted after a connect loss.
- `"ctrl_loss_tmo"`: The controller loss timeout period (in seconds). A special value of `-1` will cause reconnecting forever.
- `"fast_io_fail_tmo"`: Fast I/O Fail timeout (in seconds).
- `"tos"`: Type of service.
- `"duplicate_connect"`: Allow duplicated connections between same transport host and subsystem port. Boolean value.
- `"disable_sqflow"`: Disables SQ flow control to omit head doorbell update for submission queues when sending nvme completions. Boolean value.
- `"hdr_digest"`: Generates/verifies header digest (TCP). Boolean value.
- `"data_digest"`: Generates/verifies data digest (TCP). Boolean value.
- `"tls"`: Enable TLS encryption (TCP). Boolean value.
- `"hostsymname"`: TP8010: NVMe host symbolic name.
- `"keyring"`: Keyring to store and lookup keys. String value.
- `"tls_key"`: TLS PSK for the connection. String value.

Boolean values can be expressed by "0"/"1", "on"/"off" or "True"/"False" case-insensitive
strings. Failed numerical or boolean string conversions will result in the option being ignored.

By default additional options are read from the default configuration file `/etc/nvme/config.json`.
This follows the default behaviour of `nvme-cli`. Use the @extra `"config"` argument
to either specify a different config file or disable use of it. The JSON configuration
file format is documented in [https://raw.githubusercontent.com/linux-nvme/libnvme/master/doc/config-schema.json](https://raw.githubusercontent.com/linux-nvme/libnvme/master/doc/config-schema.json).
As a rule @extra key names are kept consistent with the JSON config file schema.
Any @extra option generally overrides particular option specified in a configuration file.</doc>
      <source-position filename="lib/plugin_apis/nvme.h" line="957"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="953">%TRUE if the subsystem was connected successfully, %FALSE otherwise with @error set.

Tech category: %BD_NVME_TECH_FABRICS-%BD_NVME_TECH_MODE_INITIATOR</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="subsysnqn" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="895">The name for the NVMe subsystem to connect to.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="transport" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="896">The network fabric used for a NVMe-over-Fabrics network.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="transport_addr"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="897">The network address of the Controller. For transports using IP addressing (e.g. `rdma`) this should be an IP-based address.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="transport_svcid"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="898">The transport service id.  For transports using IP addressing (e.g. `rdma`) this field is the port number. By default, the IP port number for the `RDMA` transport is `4420`.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="host_traddr"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="899">The network address used on the host to connect to the Controller. For TCP, this sets the source address on the socket.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="host_iface"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="900">The network interface used on the host to connect to the Controller (e.g. IP `eth1`, `enp2s0`). This forces the connection to be made on a specific interface instead of letting the system decide.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="host_nqn"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="901">Overrides the default Host NQN that identifies the NVMe Host. If this option is %NULL, the default is read from `/etc/nvme/hostnqn` first.
                       If that does not exist, the autogenerated NQN value from the NVMe Host kernel module is used next. The Host NQN uniquely identifies the NVMe Host.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="host_id"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="903">User-defined host UUID or %NULL to use default (as defined in `/etc/nvme/hostid`)</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="904">Additional arguments.</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="nvme_device_self_test"
              c:identifier="bd_nvme_device_self_test"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/nvme.h"
           line="718">Initiates or aborts the Device Self-test operation on the controller or a namespace,
distinguished by the @device path specified. In case a controller device
is specified then the self-test operation would include all active namespaces.

To abort a running operation, pass #BD_NVME_SELF_TEST_ACTION_ABORT as @action.
To retrieve progress of a current running operation, check the self-test log using
bd_nvme_get_self_test_log().</doc>
      <source-position filename="lib/plugin_apis/nvme.h" line="737"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="732">%TRUE if the device self-test command was issued successfully,
         %FALSE otherwise with @error set.

Tech category: %BD_NVME_TECH_NVME-%BD_NVME_TECH_MODE_MANAGE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="720">a NVMe controller or namespace device (e.g. `/dev/nvme0`)</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="action" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="721">self-test action to take.</doc>
          <type name="NVMESelfTestAction" c:type="BDNVMESelfTestAction"/>
        </parameter>
      </parameters>
    </function>
    <function name="nvme_disconnect"
              c:identifier="bd_nvme_disconnect"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/nvme.h"
           line="960">Disconnects and removes one or more existing NVMe over Fabrics controllers.
This may disconnect multiple controllers with matching @subsysnqn and %TRUE
is only returned when all controllers were disconnected successfully.</doc>
      <source-position filename="lib/plugin_apis/nvme.h" line="974"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="969">%TRUE if all matching controllers were disconnected successfully, %FALSE with @error
         set in case of a disconnect error or when no matching controllers were found.

Tech category: %BD_NVME_TECH_FABRICS-%BD_NVME_TECH_MODE_INITIATOR</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="subsysnqn" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="962">The name of the NVMe subsystem to disconnect.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="nvme_disconnect_by_path"
              c:identifier="bd_nvme_disconnect_by_path"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/nvme.h"
           line="977">Disconnects and removes a NVMe over Fabrics controller represented
by a block device path.</doc>
      <source-position filename="lib/plugin_apis/nvme.h" line="990"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="985">%TRUE if the controller was disconnected successfully,
         %FALSE otherwise with @error set.

Tech category: %BD_NVME_TECH_FABRICS-%BD_NVME_TECH_MODE_INITIATOR</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="path" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="979">NVMe controller device to disconnect (e.g. `/dev/nvme0`).</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="nvme_error_quark" c:identifier="bd_nvme_error_quark">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="nvme_find_ctrls_for_ns"
              c:identifier="bd_nvme_find_ctrls_for_ns"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/nvme.h"
           line="993">A convenient utility function to look up all controllers associated
 with a NVMe subsystem the specified namespace is part of.</doc>
      <source-position filename="lib/plugin_apis/nvme.h" line="1009"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="1004">list of controller sysfs paths
         or %NULL in case of an error (with @error set).

Tech category: %BD_NVME_TECH_FABRICS-%BD_NVME_TECH_MODE_INITIATOR</doc>
        <array c:type="gchar**">
          <type name="utf8"/>
        </array>
      </return-value>
      <parameters>
        <parameter name="ns_sysfs_path" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="995">NVMe namespace device file.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="subsysnqn"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="996">Limit matching to the specified subsystem NQN.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="host_nqn"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="997">Limit matching to the specified host NQN.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="host_id"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="998">Limit matching to the specified host ID.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="nvme_format" c:identifier="bd_nvme_format" throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/nvme.h"
           line="740">Performs low level format of the NVM media, destroying all data and metadata for either
a specific namespace or all attached namespaces to the controller. Use this command
to change LBA sector size. Optional secure erase method can be specified as well.

Supported LBA data sizes for a given namespace can be listed using the bd_nvme_get_namespace_info()
call. In case of a special value `0` the current LBA format for a given namespace will be
retained. When called on a controller device the first namespace is used as a reference.

Note that the NVMe controller may define a Format NVM attribute indicating that the format
operation would apply to all namespaces and a format (excluding secure erase) of any
namespace results in a format of all namespaces in the NVM subsystem. In such case and
when @device is a namespace block device the #BD_NVME_ERROR_WOULD_FORMAT_ALL_NS error
is returned to prevent further damage. This is then supposed to be handled by the caller
and bd_nvme_format() is supposed to be called on a controller device instead.

This call blocks until the format operation has finished. To retrieve progress
of a current running operation, check the namespace info using bd_nvme_get_namespace_info().</doc>
      <source-position filename="lib/plugin_apis/nvme.h" line="770"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="766">%TRUE if the format command finished successfully, %FALSE otherwise with @error set.

Tech category: %BD_NVME_TECH_NVME-%BD_NVME_TECH_MODE_MANAGE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="742">NVMe namespace or controller device to format (e.g. `/dev/nvme0n1`)</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="lba_data_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="743">desired LBA data size (i.e. a sector size) in bytes or `0` to keep current. See #BDNVMELBAFormat and bd_nvme_get_namespace_info().</doc>
          <type name="guint16" c:type="guint16"/>
        </parameter>
        <parameter name="metadata_size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="744">desired metadata size in bytes or `0` for default. See #BDNVMELBAFormat and bd_nvme_get_namespace_info().</doc>
          <type name="guint16" c:type="guint16"/>
        </parameter>
        <parameter name="secure_erase" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="745">optional secure erase action to take.</doc>
          <type name="NVMEFormatSecureErase" c:type="BDNVMEFormatSecureErase"/>
        </parameter>
      </parameters>
    </function>
    <function name="nvme_generate_host_nqn"
              c:identifier="bd_nvme_generate_host_nqn"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/nvme.h"
           line="834">Compute new Host NQN (NVM Qualified Name) value for the current system. This
takes in account various system identifiers (DMI, device tree) with the goal
of a stable unique identifier whenever feasible.</doc>
      <source-position filename="lib/plugin_apis/nvme.h" line="846"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="842">the Host NQN string or %NULL with @error set.

Tech category: %BD_NVME_TECH_FABRICS-%BD_NVME_TECH_MODE_INITIATOR</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
    </function>
    <function name="nvme_get_controller_info"
              c:identifier="bd_nvme_get_controller_info"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/nvme.h"
           line="617">Retrieves information about the NVMe controller (the Identify Controller command)
as specified by the @device block device path.</doc>
      <source-position filename="lib/plugin_apis/nvme.h" line="629"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="625">information about given controller or %NULL in case of an error (with @error set).

Tech category: %BD_NVME_TECH_NVME-%BD_NVME_TECH_MODE_INFO</doc>
        <type name="NVMEControllerInfo" c:type="BDNVMEControllerInfo*"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="619">a NVMe controller device (e.g. `/dev/nvme0`)</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="nvme_get_error_log_entries"
              c:identifier="bd_nvme_get_error_log_entries"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/nvme.h"
           line="662">Retrieves Error Information Log (Log Identifier `01h`) entries, used to describe
extended error information for a command that completed with error or to report
an error that is not specific to a particular command. This log is global to the
controller. The ordering of the entries is based on the time when the error
occurred, with the most recent error being returned as the first log entry.
As the number of entries is typically limited by the drive implementation, only
most recent entries are provided.</doc>
      <source-position filename="lib/plugin_apis/nvme.h" line="680"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="675">null-terminated list
         of error entries or %NULL in case of an error (with @error set).

Tech category: %BD_NVME_TECH_NVME-%BD_NVME_TECH_MODE_INFO</doc>
        <array c:type="BDNVMEErrorLogEntry**">
          <type name="NVMEErrorLogEntry" c:type="BDNVMEErrorLogEntry*"/>
        </array>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="664">a NVMe controller device (e.g. `/dev/nvme0`)</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="nvme_get_host_id"
              c:identifier="bd_nvme_get_host_id"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/nvme.h"
           line="849">Reads the Host ID value from the global `/etc/nvme/hostid` file. An empty
string is an indication that no Host ID has been set.</doc>
      <source-position filename="lib/plugin_apis/nvme.h" line="860"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="856">the Host ID string or an empty string if none set.

Tech category: %BD_NVME_TECH_FABRICS-%BD_NVME_TECH_MODE_INITIATOR</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
    </function>
    <function name="nvme_get_host_nqn"
              c:identifier="bd_nvme_get_host_nqn"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/nvme.h"
           line="820">Reads the Host NQN (NVM Qualified Name) value from the global `/etc/nvme/hostnqn`
file. An empty string is an indication that no Host NQN has been set.</doc>
      <source-position filename="lib/plugin_apis/nvme.h" line="831"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="827">the Host NQN string or an empty string if none set.

Tech category: %BD_NVME_TECH_FABRICS-%BD_NVME_TECH_MODE_INITIATOR</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
    </function>
    <function name="nvme_get_namespace_info"
              c:identifier="bd_nvme_get_namespace_info"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/nvme.h"
           line="632">Retrieves information about the NVMe namespace (the Identify Namespace command)
as specified by the @device block device path.</doc>
      <source-position filename="lib/plugin_apis/nvme.h" line="644"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="640">information about given namespace or %NULL in case of an error (with @error set).

Tech category: %BD_NVME_TECH_NVME-%BD_NVME_TECH_MODE_INFO</doc>
        <type name="NVMENamespaceInfo" c:type="BDNVMENamespaceInfo*"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="634">a NVMe namespace device (e.g. `/dev/nvme0n1`)</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="nvme_get_sanitize_log"
              c:identifier="bd_nvme_get_sanitize_log"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/nvme.h"
           line="699">Retrieves the drive sanitize status log (Log Identifier `81h`) that includes information
about the most recent sanitize operation and the sanitize operation time estimates.

As advised in the NVMe specification whitepaper the host should limit polling
to retrieve progress of a running sanitize operations (e.g. to at most once every
several minutes) to avoid interfering with the progress of the sanitize operation itself.</doc>
      <source-position filename="lib/plugin_apis/nvme.h" line="715"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="711">sanitize log data or %NULL in case of an error (with @error set).

Tech category: %BD_NVME_TECH_NVME-%BD_NVME_TECH_MODE_INFO</doc>
        <type name="NVMESanitizeLog" c:type="BDNVMESanitizeLog*"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="701">a NVMe controller device (e.g. `/dev/nvme0`)</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="nvme_get_self_test_log"
              c:identifier="bd_nvme_get_self_test_log"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/nvme.h"
           line="683">Retrieves drive self-test log (Log Identifier `06h`). Provides the status of a self-test operation
in progress and the percentage complete of that operation, along with the results of the last
20 device self-test operations.</doc>
      <source-position filename="lib/plugin_apis/nvme.h" line="696"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="692">self-test log data or %NULL in case of an error (with @error set).

Tech category: %BD_NVME_TECH_NVME-%BD_NVME_TECH_MODE_INFO</doc>
        <type name="NVMESelfTestLog" c:type="BDNVMESelfTestLog*"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="685">a NVMe controller device (e.g. `/dev/nvme0`)</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="nvme_get_smart_log"
              c:identifier="bd_nvme_get_smart_log"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/nvme.h"
           line="647">Retrieves drive SMART and general health information (Log Identifier `02h`).
The information provided is over the life of the controller and is retained across power cycles.</doc>
      <source-position filename="lib/plugin_apis/nvme.h" line="659"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="655">health log data or %NULL in case of an error (with @error set).

Tech category: %BD_NVME_TECH_NVME-%BD_NVME_TECH_MODE_INFO</doc>
        <type name="NVMESmartLog" c:type="BDNVMESmartLog*"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="649">a NVMe controller device (e.g. `/dev/nvme0`)</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="nvme_is_tech_avail"
              c:identifier="bd_nvme_is_tech_avail"
              throws="1">
      <source-position filename="lib/plugin_apis/nvme.h" line="55"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="52">whether the @tech-@mode combination is available -- supported by the
         plugin implementation and having all the runtime dependencies available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="tech" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="48">the queried tech</doc>
          <type name="NVMETech" c:type="BDNVMETech"/>
        </parameter>
        <parameter name="mode" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="49">a bit mask of queried modes of operation (#BDNVMETechMode) for @tech</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
      </parameters>
    </function>
    <function name="nvme_sanitize" c:identifier="bd_nvme_sanitize" throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/nvme.h"
           line="773">Starts a sanitize operation or recovers from a previously failed sanitize operation.
By definition, a sanitize operation alters all user data in the NVM subsystem such
that recovery of any previous user data from any cache, the non-volatile media,
or any Controller Memory Buffer is not possible. The scope of a sanitize operation
is all locations in the NVM subsystem that are able to contain user data, including
caches, Persistent Memory Regions, and unallocated or deallocated areas of the media.

Once started, a sanitize operation is not able to be aborted and continues after
a Controller Level Reset including across power cycles. Once the sanitize operation
has run the media affected may not be immediately ready for use unless additional
media modification mechanism is run. This is often vendor specific and also depends
on the sanitize method (@action) used. Callers to this sanitize operation should
set @no_dealloc to %TRUE for the added convenience.

The controller also ignores Critical Warning(s) in the SMART / Health Information
log page (e.g., read only mode) and attempts to complete the sanitize operation requested.

This call returns immediately and the actual sanitize operation is performed
in the background. Use bd_nvme_get_sanitize_log() to retrieve status and progress
of a running sanitize operation. In case a sanitize operation fails the controller
may restrict its operation until a subsequent sanitize operation is started
(i.e. retried) or an #BD_NVME_SANITIZE_ACTION_EXIT_FAILURE action is used
to acknowledge the failure explicitly.

The @overwrite_pass_count, @overwrite_pattern and @overwrite_invert_pattern
arguments are only valid when @action is #BD_NVME_SANITIZE_ACTION_OVERWRITE.

The sanitize operation is set to run under the Allow Unrestricted Sanitize Exit
mode.</doc>
      <source-position filename="lib/plugin_apis/nvme.h" line="817"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="813">%TRUE if the format command finished successfully, %FALSE otherwise with @error set.

Tech category: %BD_NVME_TECH_NVME-%BD_NVME_TECH_MODE_MANAGE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="775">NVMe namespace or controller device to format (e.g. `/dev/nvme0n1`)</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="action" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="776">the sanitize action to perform.</doc>
          <type name="NVMESanitizeAction" c:type="BDNVMESanitizeAction"/>
        </parameter>
        <parameter name="no_dealloc" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="777">instruct the controller to not deallocate the affected media area.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="overwrite_pass_count" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="778">number of overwrite passes [1-15] or 0 for the default (16 passes).</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="overwrite_pattern" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="779">a 32-bit pattern used for the Overwrite sanitize operation.</doc>
          <type name="guint32" c:type="guint32"/>
        </parameter>
        <parameter name="overwrite_invert_pattern" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="780">invert the overwrite pattern between passes.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="nvme_self_test_result_to_string"
              c:identifier="bd_nvme_self_test_result_to_string"
              throws="1">
      <source-position filename="lib/plugin_apis/nvme.h" line="447"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="444">A string representation of @result for use as an identifier string
                          or %NULL when the code is unknown.</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="result" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="441">A %BDNVMESelfTestResult.</doc>
          <type name="NVMESelfTestResult" c:type="BDNVMESelfTestResult"/>
        </parameter>
      </parameters>
    </function>
    <function name="nvme_set_host_id"
              c:identifier="bd_nvme_set_host_id"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/nvme.h"
           line="878">Writes the Host ID value to the system `/etc/nvme/hostid` file.
No validation of the string is performed.</doc>
      <source-position filename="lib/plugin_apis/nvme.h" line="890"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="886">%TRUE if the value was set successfully or %FALSE otherwise with @error set.

Tech category: %BD_NVME_TECH_FABRICS-%BD_NVME_TECH_MODE_INITIATOR</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="host_id" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="880">The Host ID.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="nvme_set_host_nqn"
              c:identifier="bd_nvme_set_host_nqn"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/nvme.h"
           line="863">Writes the Host NQN (NVM Qualified Name) value to the system `/etc/nvme/hostnqn` file.
No validation of the string is performed.</doc>
      <source-position filename="lib/plugin_apis/nvme.h" line="875"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/nvme.h"
             line="871">%TRUE if the value was set successfully or %FALSE otherwise with @error set.

Tech category: %BD_NVME_TECH_FABRICS-%BD_NVME_TECH_MODE_INITIATOR</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="host_nqn" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/nvme.h"
               line="865">The Host NVM Qualified Name.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="part_create_part"
              c:identifier="bd_part_create_part"
              throws="1">
      <source-position filename="lib/plugin_apis/part.h" line="254"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="247">specification of the created partition or %NULL in case of error

NOTE: The resulting partition may start at a different position than given by
      @start and can have different size than @size due to alignment.

Tech category: %BD_PART_TECH_MODE_MODIFY_TABLE + the tech according to the partition table type</doc>
        <type name="PartSpec" c:type="BDPartSpec*"/>
      </return-value>
      <parameters>
        <parameter name="disk" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="238">disk to create partition on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="type" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="239">type of the partition to create (if %BD_PART_TYPE_REQ_NEXT, the
       partition type will be determined automatically based on the existing
       partitions)</doc>
          <type name="PartTypeReq" c:type="BDPartTypeReq"/>
        </parameter>
        <parameter name="start" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="242">where the partition should start (i.e. offset from the disk start)</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="243">desired size of the partition (if 0, a max-sized partition is created)</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="align" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="244">alignment to use for the partition</doc>
          <type name="PartAlign" c:type="BDPartAlign"/>
        </parameter>
      </parameters>
    </function>
    <function name="part_create_table"
              c:identifier="bd_part_create_table"
              throws="1">
      <source-position filename="lib/plugin_apis/part.h" line="149"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="145">whether the partition table was successfully created or not

Tech category: %BD_PART_TECH_MODE_CREATE_TABLE + the tech according to @type</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="disk" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="139">path of the disk block device to create partition table on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="type" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="140">type of the partition table to create</doc>
          <type name="PartTableType" c:type="BDPartTableType"/>
        </parameter>
        <parameter name="ignore_existing" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="141">whether to ignore/overwrite the existing table or not
                  (reports an error if %FALSE and there's some table on @disk)</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="part_delete_part"
              c:identifier="bd_part_delete_part"
              throws="1">
      <source-position filename="lib/plugin_apis/part.h" line="267"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="263">whether the @part partition was successfully deleted from @disk

Tech category: %BD_PART_TECH_MODE_MODIFY_TABLE + the tech according to the partition table type</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="disk" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="259">disk to remove the partition from</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="part" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="260">partition to remove</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="part_error_quark" c:identifier="bd_part_error_quark">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="part_get_best_free_region"
              c:identifier="bd_part_get_best_free_region"
              throws="1">
      <source-position filename="lib/plugin_apis/part.h" line="233"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="222">spec of the best free region on @disk for a new partition of type @type
                          with the size of @size or %NULL if there is none such region or if
                          there was an error (@error gets populated)

Note: For the @type %BD_PART_TYPE_NORMAL, the smallest possible space that *is not* in an extended partition
      is found. For the @type %BD_PART_TYPE_LOGICAL, the smallest possible space that *is* in an extended
      partition is found. For %BD_PART_TYPE_EXTENDED, the biggest possible space is found as long as there
      is no other extended partition (there can only be one).

Tech category: %BD_PART_TECH_MODE_QUERY_TABLE + the tech according to the partition table type</doc>
        <type name="PartSpec" c:type="BDPartSpec*"/>
      </return-value>
      <parameters>
        <parameter name="disk" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="217">disk to get the best free region for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="type" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="218">type of the partition that is planned to be added</doc>
          <type name="PartType" c:type="BDPartType"/>
        </parameter>
        <parameter name="size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="219">size of the partition to be added</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
      </parameters>
    </function>
    <function name="part_get_disk_free_regions"
              c:identifier="bd_part_get_disk_free_regions"
              throws="1">
      <source-position filename="lib/plugin_apis/part.h" line="212"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="208">specs of the free regions from @disk or %NULL in case of error

Tech category: %BD_PART_TECH_MODE_QUERY_TABLE + the tech according to the partition table type</doc>
        <array c:type="BDPartSpec**">
          <type name="PartSpec" c:type="BDPartSpec*"/>
        </array>
      </return-value>
      <parameters>
        <parameter name="disk" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="205">disk to get free regions for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="part_get_disk_parts"
              c:identifier="bd_part_get_disk_parts"
              throws="1">
      <source-position filename="lib/plugin_apis/part.h" line="200"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="196">specs of the partitions from @disk or %NULL in case of error

Tech category: %BD_PART_TECH_MODE_QUERY_TABLE + the tech according to the partition table type</doc>
        <array c:type="BDPartSpec**">
          <type name="PartSpec" c:type="BDPartSpec*"/>
        </array>
      </return-value>
      <parameters>
        <parameter name="disk" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="193">disk to get information about partitions for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="part_get_disk_spec"
              c:identifier="bd_part_get_disk_spec"
              throws="1">
      <source-position filename="lib/plugin_apis/part.h" line="188"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="184">information about the given @disk or %NULL (in case of error)

Tech category: %BD_PART_TECH_MODE_QUERY_TABLE + the tech according to the partition table type</doc>
        <type name="PartDiskSpec" c:type="BDPartDiskSpec*"/>
      </return-value>
      <parameters>
        <parameter name="disk" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="181">disk to get information about</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="part_get_part_by_pos"
              c:identifier="bd_part_get_part_by_pos"
              throws="1">
      <source-position filename="lib/plugin_apis/part.h" line="176"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="171">spec of the partition from @disk spanning over the @position or %NULL if no such
         partition exists or in case of error (@error is set)

Tech category: %BD_PART_TECH_MODE_QUERY_PART + the tech according to the partition table type</doc>
        <type name="PartSpec" c:type="BDPartSpec*"/>
      </return-value>
      <parameters>
        <parameter name="disk" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="167">disk to remove the partition from</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="position" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="168">position (in bytes) determining the partition</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
      </parameters>
    </function>
    <function name="part_get_part_spec"
              c:identifier="bd_part_get_part_spec"
              throws="1">
      <source-position filename="lib/plugin_apis/part.h" line="162"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="158">spec of the @part partition from @disk or %NULL in case of error

Tech category: %BD_PART_TECH_MODE_QUERY_PART + the tech according to the partition table type</doc>
        <type name="PartSpec" c:type="BDPartSpec*"/>
      </return-value>
      <parameters>
        <parameter name="disk" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="154">disk to remove the partition from</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="part" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="155">partition to get spec for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="part_get_part_table_type_str"
              c:identifier="bd_part_get_part_table_type_str"
              throws="1">
      <source-position filename="lib/plugin_apis/part.h" line="380"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="376">string representation of @table_type

Tech category: the tech according to @type</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="type" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="373">table type to get string representation for</doc>
          <type name="PartTableType" c:type="BDPartTableType"/>
        </parameter>
      </parameters>
    </function>
    <function name="part_get_type_str"
              c:identifier="bd_part_get_type_str"
              throws="1">
      <source-position filename="lib/plugin_apis/part.h" line="392"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="388">string representation of @type

Tech category: always available</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="type" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="385">type to get string representation for</doc>
          <type name="PartType" c:type="BDPartType"/>
        </parameter>
      </parameters>
    </function>
    <function name="part_is_tech_avail"
              c:identifier="bd_part_is_tech_avail"
              throws="1">
      <source-position filename="lib/plugin_apis/part.h" line="134"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="131">whether the @tech-@mode combination is available -- supported by the
         plugin implementation and having all the runtime dependencies available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="tech" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="127">the queried tech</doc>
          <type name="PartTech" c:type="BDPartTech"/>
        </parameter>
        <parameter name="mode" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="128">a bit mask of queried modes of operation (#BDPartTechMode) for @tech</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
      </parameters>
    </function>
    <function name="part_resize_part"
              c:identifier="bd_part_resize_part"
              throws="1">
      <source-position filename="lib/plugin_apis/part.h" line="284"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="278">whether the @part partition was successfully resized on @disk to @size

NOTE: The resulting partition may be slightly bigger than requested due to alignment.

Tech category: %BD_PART_TECH_MODE_MODIFY_TABLE + the tech according to the partition table type</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="disk" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="272">disk containing the partition</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="part" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="273">partition to resize</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="274">new partition size, 0 for maximal size</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="align" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="275">alignment to use for the partition end</doc>
          <type name="PartAlign" c:type="BDPartAlign"/>
        </parameter>
      </parameters>
    </function>
    <function name="part_set_part_attributes"
              c:identifier="bd_part_set_part_attributes"
              throws="1">
      <source-position filename="lib/plugin_apis/part.h" line="368"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="364">whether the @attrs GPT attributes were successfully set for @part or not

Tech category: %BD_PART_TECH_GPT-%BD_PART_TECH_MODE_MODIFY_PART</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="disk" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="359">device the partition belongs to</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="part" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="360">partition the attributes should be set for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="attrs" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="361">GPT attributes to set on @part</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
      </parameters>
    </function>
    <function name="part_set_part_bootable"
              c:identifier="bd_part_set_part_bootable"
              throws="1">
      <source-position filename="lib/plugin_apis/part.h" line="354"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="350">whether the @bootable flag was successfully set for @part or not

Tech category: %BD_PART_TECH_MBR-%BD_PART_TECH_MODE_MODIFY_PART</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="disk" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="345">device the partition belongs to</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="part" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="346">partition the bootable flag should be set for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="bootable" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="347">whether to set or unset the bootable flag</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="part_set_part_id"
              c:identifier="bd_part_set_part_id"
              throws="1">
      <source-position filename="lib/plugin_apis/part.h" line="326"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="322">whether the @part_id type was successfully set for @part or not

Tech category: %BD_PART_TECH_MBR-%BD_PART_TECH_MODE_MODIFY_PART</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="disk" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="317">device the partition belongs to</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="part" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="318">partition the ID should be set for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="part_id" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="319">partition Id</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="part_set_part_name"
              c:identifier="bd_part_set_part_name"
              throws="1">
      <source-position filename="lib/plugin_apis/part.h" line="298"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="294">whether the name was successfully set or not

Tech category: %BD_PART_TECH_GPT-%BD_PART_TECH_MODE_MODIFY_PART</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="disk" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="289">device the partition belongs to</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="part" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="290">partition the name should be set for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="291">name to set</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="part_set_part_type"
              c:identifier="bd_part_set_part_type"
              throws="1">
      <source-position filename="lib/plugin_apis/part.h" line="312"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="308">whether the @type_guid type was successfully set for @part or not

Tech category: %BD_PART_TECH_GPT-%BD_PART_TECH_MODE_MODIFY_PART</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="disk" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="303">device the partition belongs to</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="part" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="304">partition the type should be set for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="type_guid" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="305">GUID of the type</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="part_set_part_uuid"
              c:identifier="bd_part_set_part_uuid"
              throws="1">
      <source-position filename="lib/plugin_apis/part.h" line="340"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/part.h"
             line="336">whether the @uuid type was successfully set for @part or not

Tech category: %BD_PART_TECH_MODE_MODIFY_PART + the tech according to the partition table type</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="disk" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="331">device the partition belongs to</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="part" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="332">partition the UUID should be set for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="uuid" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/part.h"
               line="333">partition UUID to set</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="reinit" c:identifier="bd_reinit" throws="1">
      <source-position filename="lib/blockdev.h" line="22"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/blockdev.c"
             line="602">whether the library was successfully initialized or not

If @reload is %TRUE all the plugins are closed and reloaded otherwise only
the missing plugins are loaded.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="require_plugins"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/blockdev.c"
               line="593">%NULL-terminated list
                of plugins that should be loaded (if no so_name is specified
                for the plugin, the default is used) or %NULL to load all
                plugins</doc>
          <array c:type="BDPluginSpec**">
            <type name="PluginSpec" c:type="BDPluginSpec*"/>
          </array>
        </parameter>
        <parameter name="reload" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/blockdev.c"
               line="597">whether to reload the already loaded plugins or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="log_func"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   scope="notified">
          <doc xml:space="preserve"
               filename="lib/blockdev.c"
               line="598">logging function to use or %NULL
                                          to keep the old one</doc>
          <type name="UtilsLogFunc" c:type="BDUtilsLogFunc"/>
        </parameter>
      </parameters>
    </function>
    <function name="smart_ata_get_info"
              c:identifier="bd_smart_ata_get_info"
              moved-to="SmartATA.get_info"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/smart.h"
           line="376">Retrieve SMART information from the drive.</doc>
      <source-position filename="lib/plugin_apis/smart.h" line="388"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="384">ATA SMART log or %NULL in case of an error (with @error set).

Tech category: %BD_SMART_TECH_ATA-%BD_SMART_TECH_MODE_INFO</doc>
        <type name="SmartATA" c:type="BDSmartATA*"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/smart.h"
               line="378">device to check.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/smart.h"
               line="379">extra options to pass through.</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="smart_ata_get_info_from_data"
              c:identifier="bd_smart_ata_get_info_from_data"
              moved-to="SmartATA.get_info_from_data"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/smart.h"
           line="391">Retrieve SMART information from the supplied data.</doc>
      <source-position filename="lib/plugin_apis/smart.h" line="403"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="399">ATA SMART log or %NULL in case of an error (with @error set).

Tech category: %BD_SMART_TECH_ATA-%BD_SMART_TECH_MODE_INFO</doc>
        <type name="SmartATA" c:type="BDSmartATA*"/>
      </return-value>
      <parameters>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/smart.h"
               line="393">binary data to parse.</doc>
          <array length="1" zero-terminated="0" c:type="const guint8*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="data_len" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/smart.h"
               line="394">length of the data supplied.</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
      </parameters>
    </function>
    <function name="smart_device_self_test"
              c:identifier="bd_smart_device_self_test"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/smart.h"
           line="437">Executes or aborts device self-test.</doc>
      <source-position filename="lib/plugin_apis/smart.h" line="450"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="446">%TRUE when the self-test was triggered successfully or %FALSE in case of an error (with @error set).

Tech category: %BD_SMART_TECH_ATA-%BD_SMART_TECH_MODE_SELFTEST</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/smart.h"
               line="439">device to trigger the test on.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="operation" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/smart.h"
               line="440">#BDSmartSelfTestOp self-test operation.</doc>
          <type name="SmartSelfTestOp" c:type="BDSmartSelfTestOp"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/smart.h"
               line="441">extra options to pass through.</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="smart_error_quark" c:identifier="bd_smart_error_quark">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="smart_is_tech_avail"
              c:identifier="bd_smart_is_tech_avail"
              throws="1">
      <source-position filename="lib/plugin_apis/smart.h" line="37"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="34">whether the @tech-@mode combination is available -- supported by the
         plugin implementation and having all the runtime dependencies available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="tech" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/smart.h"
               line="30">the queried tech</doc>
          <type name="SmartTechMode" c:type="BDSmartTechMode"/>
        </parameter>
        <parameter name="mode" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/smart.h"
               line="31">a bit mask of queried modes of operation (#BDSmartTechMode) for @tech</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
      </parameters>
    </function>
    <function name="smart_scsi_get_info"
              c:identifier="bd_smart_scsi_get_info"
              moved-to="SmartSCSI.get_info"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/smart.h"
           line="406">Retrieve SMART information from SCSI or SAS-compliant drive.</doc>
      <source-position filename="lib/plugin_apis/smart.h" line="418"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="414">SCSI SMART log or %NULL in case of an error (with @error set).

Tech category: %BD_SMART_TECH_SCSI-%BD_SMART_TECH_MODE_INFO</doc>
        <type name="SmartSCSI" c:type="BDSmartSCSI*"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/smart.h"
               line="408">device to check.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/smart.h"
               line="409">extra options to pass through.</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="smart_set_enabled"
              c:identifier="bd_smart_set_enabled"
              throws="1">
      <doc xml:space="preserve"
           filename="lib/plugin_apis/smart.h"
           line="421">Enables or disables SMART functionality on device.</doc>
      <source-position filename="lib/plugin_apis/smart.h" line="434"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/smart.h"
             line="430">%TRUE when the functionality was set successfully or %FALSE in case of an error (with @error set).

Tech category: %BD_SMART_TECH_ATA-%BD_SMART_TECH_MODE_INFO</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/smart.h"
               line="423">SMART-capable device.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="enabled" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/smart.h"
               line="424">whether to enable or disable the SMART functionality</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/smart.h"
               line="425">extra options to pass through.</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="swap_check_label"
              c:identifier="bd_swap_check_label"
              throws="1">
      <source-position filename="lib/plugin_apis/swap.h" line="112"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/swap.h"
             line="107">whether @label is a valid label for swap or not
         (reason is provided in @error)

Tech category: always available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="label" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/swap.h"
               line="104">label to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="swap_check_uuid"
              c:identifier="bd_swap_check_uuid"
              throws="1">
      <source-position filename="lib/plugin_apis/swap.h" line="138"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/swap.h"
             line="133">whether @uuid is a valid UUID for swap or not
         (reason is provided in @error)

Tech category: always available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="uuid" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/swap.h"
               line="130">UUID to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="swap_error_quark" c:identifier="bd_swap_error_quark">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="swap_is_tech_avail"
              c:identifier="bd_swap_is_tech_avail"
              throws="1">
      <source-position filename="lib/plugin_apis/swap.h" line="45"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/swap.h"
             line="42">whether the @tech-@mode combination is available -- supported by the
         plugin implementation and having all the runtime dependencies available</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="tech" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/swap.h"
               line="38">the queried tech</doc>
          <type name="SwapTech" c:type="BDSwapTech"/>
        </parameter>
        <parameter name="mode" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/swap.h"
               line="39">a bit mask of queried modes of operation (#BDSwapTechMode) for @tech</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
      </parameters>
    </function>
    <function name="swap_mkswap" c:identifier="bd_swap_mkswap" throws="1">
      <source-position filename="lib/plugin_apis/swap.h" line="61"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/swap.h"
             line="57">whether the swap space was successfully created or not

Tech category: %BD_SWAP_TECH_SWAP-%BD_SWAP_TECH_MODE_CREATE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/swap.h"
               line="50">a device to create swap space on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="label"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/swap.h"
               line="51">a label for the swap space device</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="uuid"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/swap.h"
               line="52">UUID for the swap space device</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/swap.h"
               line="53">extra options for the creation (right now
                                                passed to the 'mkswap' utility)</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="swap_set_label"
              c:identifier="bd_swap_set_label"
              throws="1">
      <source-position filename="lib/plugin_apis/swap.h" line="125"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/swap.h"
             line="121">whether the label was successfully set or not

Tech category: %BD_SWAP_TECH_SWAP-%BD_SWAP_TECH_MODE_SET_LABEL</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/swap.h"
               line="117">a device to set label on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="label" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/swap.h"
               line="118">label that will be set</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="swap_set_uuid" c:identifier="bd_swap_set_uuid" throws="1">
      <source-position filename="lib/plugin_apis/swap.h" line="151"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/swap.h"
             line="147">whether the UUID was successfully set or not

Tech category: %BD_SWAP_TECH_SWAP-%BD_SWAP_TECH_MODE_SET_UUID</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/swap.h"
               line="143">a device to set UUID on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="uuid" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/swap.h"
               line="144">UUID that will be set</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="swap_swapoff" c:identifier="bd_swap_swapoff" throws="1">
      <source-position filename="lib/plugin_apis/swap.h" line="86"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/swap.h"
             line="82">whether the swap device was successfully deactivated or not

Tech category: %BD_SWAP_TECH_SWAP-%BD_SWAP_TECH_MODE_ACTIVATE_DEACTIVATE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/swap.h"
               line="79">swap device to deactivate</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="swap_swapon" c:identifier="bd_swap_swapon" throws="1">
      <source-position filename="lib/plugin_apis/swap.h" line="74"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/swap.h"
             line="70">whether the swap device was successfully activated or not

Tech category: %BD_SWAP_TECH_SWAP-%BD_SWAP_TECH_MODE_ACTIVATE_DEACTIVATE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/swap.h"
               line="66">swap device to activate</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="priority" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/swap.h"
               line="67">priority of the activated device or -1 to use the default</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
      </parameters>
    </function>
    <function name="swap_swapstatus"
              c:identifier="bd_swap_swapstatus"
              throws="1">
      <source-position filename="lib/plugin_apis/swap.h" line="99"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/plugin_apis/swap.h"
             line="94">%TRUE if the swap device is active, %FALSE if not active or failed
to determine (@error) is set not a non-NULL value in such case)

Tech category: %BD_SWAP_TECH_SWAP-%BD_SWAP_TECH_MODE_QUERY</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/plugin_apis/swap.h"
               line="91">swap device to get status of</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="try_init" c:identifier="bd_try_init" throws="1">
      <source-position filename="lib/blockdev.h" line="23"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/blockdev.c"
             line="546">whether the library was successfully initialized with all the
         required or default (see @require_plugins) plugins or not

*UNLIKE IN CASE OF bd_init() AND bd_ensure_init(), FAILURE TO LOAD A PLUGIN
 IS NOT CONSIDERED ERROR*</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="request_plugins"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/blockdev.c"
               line="537">%NULL-terminated list
                  of plugins that should be loaded (if no so_name is specified
                  for the plugin, the default is used) or %NULL to load all
                  plugins</doc>
          <array c:type="BDPluginSpec**">
            <type name="PluginSpec" c:type="BDPluginSpec*"/>
          </array>
        </parameter>
        <parameter name="log_func"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   scope="notified">
          <doc xml:space="preserve"
               filename="lib/blockdev.c"
               line="541">logging function to use</doc>
          <type name="UtilsLogFunc" c:type="BDUtilsLogFunc"/>
        </parameter>
        <parameter name="loaded_plugin_names"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="container"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/blockdev.c"
               line="542">names
                      of the successfully loaded plugins</doc>
          <array c:type="gchar***">
            <type name="utf8" c:type="gchar**"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="try_reinit" c:identifier="bd_try_reinit" throws="1">
      <source-position filename="lib/blockdev.h" line="25"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="lib/blockdev.c"
             line="654">whether the library was successfully initialized or not

If @reload is %TRUE all the plugins are closed and reloaded otherwise only
the missing plugins are loaded.

*UNLIKE IN CASE OF bd_init() AND bd_ensure_init(), FAILURE TO LOAD A PLUGIN
 IS NOT CONSIDERED ERROR*</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="require_plugins"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/blockdev.c"
               line="643">%NULL-terminated list
                of plugins that should be loaded (if no so_name is specified
                for the plugin, the default is used) or %NULL to load all
                plugins</doc>
          <array c:type="BDPluginSpec**">
            <type name="PluginSpec" c:type="BDPluginSpec*"/>
          </array>
        </parameter>
        <parameter name="reload" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="lib/blockdev.c"
               line="647">whether to reload the already loaded plugins or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="log_func"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   scope="notified">
          <doc xml:space="preserve"
               filename="lib/blockdev.c"
               line="648">logging function to use or %NULL
                                          to keep the old one</doc>
          <type name="UtilsLogFunc" c:type="BDUtilsLogFunc"/>
        </parameter>
        <parameter name="loaded_plugin_names"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="container"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="lib/blockdev.c"
               line="650">names of the successfully
                                                               loaded plugins</doc>
          <array c:type="gchar***">
            <type name="utf8" c:type="gchar**"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="utils_check_linux_version"
              c:identifier="bd_utils_check_linux_version">
      <doc xml:space="preserve"
           filename="utils/module.c"
           line="326">Checks whether the currently running linux kernel version is equal or higher
than the specified required @major.@minor.@micro version.</doc>
      <source-position filename="utils/module.h" line="27"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="utils/module.c"
             line="335">an integer less than, equal to, or greater than zero, if detected version is &lt;, == or &gt; than the specified @major.@minor.@micro version.</doc>
        <type name="gint" c:type="gint"/>
      </return-value>
      <parameters>
        <parameter name="major" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/module.c"
               line="328">Minimal major linux kernel version.</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="minor" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/module.c"
               line="329">Minimal minor linux kernel version.</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="micro" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/module.c"
               line="330">Minimal micro linux kernel version.</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_check_util_version"
              c:identifier="bd_utils_check_util_version"
              throws="1">
      <doc xml:space="preserve"
           filename="utils/exec.c"
           line="719">Note: Both supplied @version and parsed result using @version_regexp must be in format
      `X[.Y[.Z[.Z2[.Z3...[-R]]]]]` where all components are natural numbers, see
      %bd_utils_version_cmp for details.</doc>
      <source-position filename="utils/exec.h" line="73"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="utils/exec.c"
             line="734">whether the @util is available in a version &gt;= @version or not
         (@error is set in such case).</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="util" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="721">name of the utility to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="version"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="722">minimum required version of the utility or %NULL
          if no version is required</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="version_arg"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="724">argument to use with the @util to get version
              info or %NULL to use "--version"</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="version_regexp"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="726">regexp to extract version from the version
                 info or %NULL if only version is printed by "$ @util @version_arg"</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_dbus_error_quark"
              c:identifier="bd_utils_dbus_error_quark"
              introspectable="0">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="utils_dbus_service_available"
              c:identifier="bd_utils_dbus_service_available"
              throws="1">
      <source-position filename="utils/dbus.h" line="14"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="utils/dbus.c"
             line="47">whether the service was found in the system</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="connection"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="utils/dbus.c"
               line="41">existing GDBusConnection or %NULL</doc>
          <type name="Gio.DBusConnection" c:type="GDBusConnection*"/>
        </parameter>
        <parameter name="bus_type" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/dbus.c"
               line="42">bus type (system or session), ignored if @connection is specified</doc>
          <type name="Gio.BusType" c:type="GBusType"/>
        </parameter>
        <parameter name="bus_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/dbus.c"
               line="43">name of the service to check (e.g. "com.redhat.lvmdbus1")</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="obj_prefix" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/dbus.c"
               line="44">object path prefix for the service (e.g. "/com/redhat/lvmdbus1")</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_dev_utils_error_quark"
              c:identifier="bd_utils_dev_utils_error_quark"
              introspectable="0">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="utils_echo_str_to_file"
              c:identifier="bd_utils_echo_str_to_file"
              throws="1">
      <source-position filename="utils/exec.h" line="86"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="utils/exec.c"
             line="950">whether the @str was successfully written to @file_path
or not.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="946">string to write to @file_path</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="file_path" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="947">path to file</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_exec_and_capture_output"
              c:identifier="bd_utils_exec_and_capture_output"
              throws="1">
      <doc xml:space="preserve"
           filename="utils/exec.c"
           line="604">Note that any NULL bytes read from standard output and standard error
output will be discarded.</doc>
      <source-position filename="utils/exec.h" line="68"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="utils/exec.c"
             line="614">whether the @argv was successfully executed capturing the output or not</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="argv" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="606">the argv array for the call</doc>
          <array c:type="const gchar**">
            <type name="utf8" c:type="gchar*"/>
          </array>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="607">extra arguments</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
        <parameter name="output"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="608">variable to store output to</doc>
          <type name="utf8" c:type="gchar**"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_exec_and_capture_output_no_progress"
              c:identifier="bd_utils_exec_and_capture_output_no_progress"
              throws="1">
      <source-position filename="utils/exec.h" line="69"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="utils/exec.c"
             line="207">whether the @argv was successfully executed capturing the output or not</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="argv" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="200">the argv array for the call</doc>
          <array c:type="const gchar**">
            <type name="utf8" c:type="gchar*"/>
          </array>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="201">extra arguments</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
        <parameter name="output"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="202">place to store stdout to</doc>
          <type name="utf8" c:type="gchar**"/>
        </parameter>
        <parameter name="stderr"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="203">place to store stderr to</doc>
          <type name="utf8" c:type="gchar**"/>
        </parameter>
        <parameter name="status"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="204">place to store the process return code</doc>
          <type name="gint" c:type="gint*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_exec_and_report_error"
              c:identifier="bd_utils_exec_and_report_error"
              throws="1">
      <source-position filename="utils/exec.h" line="65"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="utils/exec.c"
             line="175">whether the @argv was successfully executed (no error and exit code 0) or not</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="argv" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="171">the argv array for the call</doc>
          <array c:type="const gchar**">
            <type name="utf8" c:type="gchar*"/>
          </array>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="172">extra arguments</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="utils_exec_and_report_error_no_progress"
              c:identifier="bd_utils_exec_and_report_error_no_progress"
              throws="1">
      <source-position filename="utils/exec.h" line="66"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="utils/exec.c"
             line="190">whether the @argv was successfully executed (no error and exit code 0) or not</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="argv" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="186">the argv array for the call</doc>
          <array c:type="const gchar**">
            <type name="utf8" c:type="gchar*"/>
          </array>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="187">extra arguments</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="utils_exec_and_report_progress"
              c:identifier="bd_utils_exec_and_report_progress"
              throws="1">
      <doc xml:space="preserve"
           filename="utils/exec.c"
           line="570">Note that any NULL bytes read from standard output and standard error
output are treated as separators similar to newlines and @prog_extract
will be called with the respective chunk.</doc>
      <source-position filename="utils/exec.h" line="70"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="utils/exec.c"
             line="582">whether the @argv was successfully executed (no error and exit code 0) or not</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="argv" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="572">the argv array for the call</doc>
          <array c:type="const gchar**">
            <type name="utf8" c:type="gchar*"/>
          </array>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="573">extra arguments</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
        <parameter name="prog_extract"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   scope="notified">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="574">function for extracting progress information</doc>
          <type name="UtilsProgExtract" c:type="BDUtilsProgExtract"/>
        </parameter>
        <parameter name="proc_status"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="575">place to store the process exit status</doc>
          <type name="gint" c:type="gint*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_exec_and_report_status_error"
              c:identifier="bd_utils_exec_and_report_status_error"
              throws="1">
      <source-position filename="utils/exec.h" line="67"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="utils/exec.c"
             line="282">whether the @argv was successfully executed (no error and exit code 0) or not</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="argv" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="277">the argv array for the call</doc>
          <array c:type="const gchar**">
            <type name="utf8" c:type="gchar*"/>
          </array>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="278">extra arguments</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
        <parameter name="status"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="279">place to store the status</doc>
          <type name="gint" c:type="gint*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_exec_error_quark"
              c:identifier="bd_utils_exec_error_quark"
              introspectable="0">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="utils_exec_with_input"
              c:identifier="bd_utils_exec_with_input"
              throws="1">
      <source-position filename="utils/exec.h" line="71"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="utils/exec.c"
             line="595">whether the @argv was successfully executed (no error and exit code 0) or not</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="argv" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="590">the argv array for the call</doc>
          <array c:type="const gchar**">
            <type name="utf8" c:type="gchar*"/>
          </array>
        </parameter>
        <parameter name="input"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="591">input for the executed program</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="extra"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="592">extra arguments</doc>
          <array c:type="const BDExtraArg**">
            <type name="ExtraArg" c:type="BDExtraArg*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="utils_get_device_symlinks"
              c:identifier="bd_utils_get_device_symlinks"
              throws="1">
      <source-position filename="utils/dev_utils.h" line="33"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="utils/dev_utils.c"
             line="84">a list of all symlinks (known to udev) for the
                                                    device specified with @dev_spec or %NULL in
                                                    case of error</doc>
        <array c:type="gchar**">
          <type name="utf8"/>
        </array>
      </return-value>
      <parameters>
        <parameter name="dev_spec" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/dev_utils.c"
               line="80">specification of the device (e.g. "/dev/sda", any symlink, or the name of a file
           under "/dev")</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_get_linux_version"
              c:identifier="bd_utils_get_linux_version"
              throws="1">
      <doc xml:space="preserve"
           filename="utils/module.c"
           line="277">Retrieves version of currently running Linux kernel. Acts also as an initializer for statically cached data.</doc>
      <source-position filename="utils/module.h" line="26"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="utils/module.c"
             line="283">Detected Linux kernel version or %NULL in case of an error. The returned value belongs to the library, do not free.</doc>
        <type name="UtilsLinuxVersion" c:type="BDUtilsLinuxVersion*"/>
      </return-value>
    </function>
    <function name="utils_get_next_task_id"
              c:identifier="bd_utils_get_next_task_id">
      <source-position filename="utils/exec.h" line="83"/>
      <return-value transfer-ownership="none">
        <type name="guint64" c:type="guint64"/>
      </return-value>
    </function>
    <function name="utils_have_kernel_module"
              c:identifier="bd_utils_have_kernel_module"
              throws="1">
      <source-position filename="utils/module.h" line="22"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="utils/module.c"
             line="81">whether the @module_name was found in the system, either as a module
or built-in in the kernel</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="module_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/module.c"
               line="78">name of the kernel module to check</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_init_logging"
              c:identifier="bd_utils_init_logging"
              throws="1">
      <source-position filename="utils/logging.h" line="30"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="utils/logging.c"
             line="42">whether logging was successfully initialized or not</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="new_log_func"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   scope="notified">
          <doc xml:space="preserve"
               filename="utils/logging.c"
               line="36">logging function to use or
                                              %NULL to disable logging; use
                                              #bd_utils_log_stdout to reset to
                                              the default behaviour</doc>
          <type name="UtilsLogFunc" c:type="BDUtilsLogFunc"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_init_prog_reporting"
              c:identifier="bd_utils_init_prog_reporting"
              throws="1">
      <source-position filename="utils/exec.h" line="75"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="utils/exec.c"
             line="829">whether progress reporting was successfully initialized or not</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="new_prog_func"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   scope="notified">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="825">progress reporting function to
                                               use or %NULL to reset to default</doc>
          <type name="UtilsProgFunc" c:type="BDUtilsProgFunc"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_init_prog_reporting_thread"
              c:identifier="bd_utils_init_prog_reporting_thread"
              throws="1">
      <source-position filename="utils/exec.h" line="76"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="utils/exec.c"
             line="847">whether progress reporting was successfully initialized or not</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="new_prog_func"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   scope="notified">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="842">progress reporting function to
                                               use on current thread or %NULL
                                               to reset to default or global</doc>
          <type name="UtilsProgFunc" c:type="BDUtilsProgFunc"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_load_kernel_module"
              c:identifier="bd_utils_load_kernel_module"
              throws="1">
      <source-position filename="utils/module.h" line="23"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="utils/module.c"
             line="140">whether the @module_name was successfully loaded or not</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="module_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/module.c"
               line="136">name of the kernel module to load</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="options"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="utils/module.c"
               line="137">module options</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_log" c:identifier="bd_utils_log">
      <source-position filename="utils/logging.h" line="34"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="level" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/logging.c"
               line="71">log level</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="msg" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/logging.c"
               line="72">log message</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_log_format"
              c:identifier="bd_utils_log_format"
              introspectable="0">
      <source-position filename="utils/logging.h" line="35"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="level" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/logging.c"
               line="81">log level</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="format" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/logging.c"
               line="82">printf-style format for the log message</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="..." transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/logging.c"
               line="83">arguments for @format</doc>
          <varargs/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_log_stdout" c:identifier="bd_utils_log_stdout">
      <doc xml:space="preserve"
           filename="utils/logging.c"
           line="106">Convenient function for logging to stdout. Can be used as #BDUtilsLogFunc.</doc>
      <source-position filename="utils/logging.h" line="36"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="level" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/logging.c"
               line="108">log level</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="msg" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/logging.c"
               line="109">log message</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_log_task_status"
              c:identifier="bd_utils_log_task_status">
      <source-position filename="utils/exec.h" line="84"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="task_id" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="73">ID of the task the status of which is being logged</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="msg" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="74">log message</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_module_error_quark"
              c:identifier="bd_utils_module_error_quark"
              introspectable="0">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="utils_mute_prog_reporting_thread"
              c:identifier="bd_utils_mute_prog_reporting_thread"
              throws="1">
      <source-position filename="utils/exec.h" line="77"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="utils/exec.c"
             line="871">whether progress reporting for the current thread was successfully
muted (deinitialized even in presence of a global reporting function) or not</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="utils_prog_reporting_initialized"
              c:identifier="bd_utils_prog_reporting_initialized">
      <source-position filename="utils/exec.h" line="78"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="utils/exec.c"
             line="886">TRUE if progress reporting has been initialized, i.e. a reporting
function was set up with either bd_utils_init_prog_reporting or
bd_utils_init_prog_reporting_thread (takes precedence). FALSE if
bd_utils_mute_prog_reporting_thread was used to mute the thread.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="utils_report_finished"
              c:identifier="bd_utils_report_finished">
      <source-position filename="utils/exec.h" line="81"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="task_id" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="933">ID of the task/action</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="msg" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="934">message describing the status of the task/action</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_report_progress"
              c:identifier="bd_utils_report_progress">
      <source-position filename="utils/exec.h" line="80"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="task_id" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="919">ID of the task/action</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="completion" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="920">percentage of completion</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="msg" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="921">message describing the status of the task/action</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_report_started"
              c:identifier="bd_utils_report_started">
      <source-position filename="utils/exec.h" line="79"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="utils/exec.c"
             line="899">ID of the started task/action</doc>
        <type name="guint64" c:type="guint64"/>
      </return-value>
      <parameters>
        <parameter name="msg" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="897">message describing the started task/action</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_resolve_device"
              c:identifier="bd_utils_resolve_device"
              throws="1">
      <source-position filename="utils/dev_utils.h" line="32"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="utils/dev_utils.c"
             line="39">the full real path of the device (e.g. "/dev/md126"
                          for "/dev/md/my_raid") or %NULL in case of error</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="dev_spec" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/dev_utils.c"
               line="35">specification of the device (e.g. "/dev/sda", any symlink, or the name of a file
           under "/dev")</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_set_log_level" c:identifier="bd_utils_set_log_level">
      <doc xml:space="preserve"
           filename="utils/logging.c"
           line="53">Level of messages to log. Only messages with level &lt;= @level will be logged.
For example using with #BD_UTILS_LOG_WARNING (default value) only messages
with log levels #BD_UTILS_LOG_WARNING, #BD_UTILS_LOG_ERR, ..., #BD_UTILS_LOG_EMERG
will be logged.

Note: #BD_UTILS_LOG_DEBUG level messages are always skipped unless compiled
      with `--enable-debug` configure option.</doc>
      <source-position filename="utils/logging.h" line="32"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="level" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/logging.c"
               line="55">log level</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_unload_kernel_module"
              c:identifier="bd_utils_unload_kernel_module"
              throws="1">
      <source-position filename="utils/module.h" line="24"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="utils/module.c"
             line="206">whether the @module_name was successfully unloaded or not</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="module_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/module.c"
               line="203">name of the kernel module to unload</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_version_cmp"
              c:identifier="bd_utils_version_cmp"
              throws="1">
      <source-position filename="utils/exec.h" line="72"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="utils/exec.c"
             line="652">-1, 0 or 1 if @ver_string1 is lower, the same or higher version as
         @ver_string2 respectively. If an error occurs, returns -2 and @error
         is set.

**ONLY SUPPORTS VERSION STRINGS OF FORMAT `X[.Y[.Z[.Z2[.Z3...[-R]]]]]` where all components
  are natural numbers!**</doc>
        <type name="gint" c:type="gint"/>
      </return-value>
      <parameters>
        <parameter name="ver_string1" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="648">first version string</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="ver_string2" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="utils/exec.c"
               line="649">second version string</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
