## org.freedesktop.UDisks2.Block

org.freedesktop.UDisks2.Block — Block device

## Methods

    AddConfigurationItem    (IN  (sa{sv})  item,
                             IN  a{sv}     options);
    RemoveConfigurationItem (IN  (sa{sv})  item,
                             IN  a{sv}     options);
    UpdateConfigurationItem (IN  (sa{sv})  old_item,
                             IN  (sa{sv})  new_item,
                             IN  a{sv}     options);
    GetSecretConfiguration  (IN  a{sv}     options,
                             OUT a(sa{sv}) configuration);
    Format                  (IN  s         type,
                             IN  a{sv}     options);
    OpenForBackup           (IN  a{sv}     options,
                             OUT h         fd);
    OpenForRestore          (IN  a{sv}     options,
                             OUT h         fd);
    OpenForBenchmark        (IN  a{sv}     options,
                             OUT h         fd);
    OpenDevice              (IN  s         mode,
                             IN  a{sv}     options,
                             OUT h         fd);
    Rescan                  (IN  a{sv}     options);
    RestoreEncryptedHeader  (IN  s         backup_file,
                             IN  a{sv}     options);

## Properties

    Device                 readable   ay
    PreferredDevice        readable   ay
    Symlinks               readable   aay
    DeviceNumber           readable   t
    Id                     readable   s
    Size                   readable   t
    ReadOnly               readable   b
    Drive                  readable   o
    MDRaid                 readable   o
    MDRaidMember           readable   o
    IdUsage                readable   s
    IdType                 readable   s
    IdVersion              readable   s
    IdLabel                readable   s
    IdUUID                 readable   s
    Configuration          readable   a(sa{sv})
    CryptoBackingDevice    readable   o
    HintPartitionable      readable   b
    HintSystem             readable   b
    HintIgnore             readable   b
    HintAuto               readable   b
    HintName               readable   s
    HintIconName           readable   s
    HintSymbolicIconName   readable   s
    UserspaceMountOptions  readable   as

## Description

This interface represents a block device.

This should not be confused with the org.freedesktop.UDisks2.Drive interface that is used to represent disk drives. For example, the org.freedesktop.UDisks2.Block interface is also used for block devices that do not correspond to drives at all (e.g. Loop Devices).

## Method Details

### The AddConfigurationItem() method

    AddConfigurationItem (IN  (sa{sv}) item,
                          IN  a{sv}    options);

Adds a new configuration item.

See the "Configuration" property for details about valid configuration items.

Some fields can be omitted and will then receive default values. This is useful when passing configuration items to Format, for example, because the proper values are not known before the formatting is done.

If 'fsname' is omitted in a 'fstab' entry, or 'device' is omitted in a 'crypttab' entry, it defaults to "UUID=..." when the block device has a filesystem UUID, or to the name of the device in the filesystem.

If 'name' is omitted in a 'crypttab' entry, it defaults to "luks-<UUID>".

If 'passphrase-path' is omitted, it defaults to "/etc/luks-keys/<NAME>".

If 'track-parents' is set to true in `item`, then the 'opts' and 'options' fields will be augmented with "x-parent" elements, as appropriate. This will make `item` appear in the ChildConfiguration properties, and will allow the 'tear-down' option of Format, DeletePartition, and other methods to remove this item reliably.

`IN (sa{sv}) `item``: | The configuration item to add.
`IN a{sv} `options``: | Options (currently unused except for standard options).

### The RemoveConfigurationItem() method

    RemoveConfigurationItem (IN  (sa{sv}) item,
                             IN  a{sv}    options);

Removes an existing configuration item.

See the "Configuration" property for details about valid configuration items.

`IN (sa{sv}) `item``: | The configuration item to remove.
`IN a{sv} `options``: | Options (currently unused except for standard options).

### The UpdateConfigurationItem() method

    UpdateConfigurationItem (IN  (sa{sv}) old_item,
                             IN  (sa{sv}) new_item,
                             IN  a{sv}    options);

Removes a configuration item and adds a new one. This is equivalent to calling RemoveConfigurationItem() followed by AddConfigurationItem() with the change that only one PolicyKit check is made and that `new_item` can be validated against `old_item`.

See the "Configuration" property for details about valid configuration items.

`IN (sa{sv}) `old_item``: | The configuration item to remove.
`IN (sa{sv}) `new_item``: | The configuration item to add. Must be of the same type as `old_item`.
`IN a{sv} `options``: | Options (currently unused except for standard options).

### The GetSecretConfiguration() method

    GetSecretConfiguration (IN  a{sv}     options,
                            OUT a(sa{sv}) configuration);

Returns the same value as in the "Configuration" property but without secret information filtered out.

`IN a{sv} `options``: | Options (currently unused except for standard options).
`OUT a(sa{sv}) `configuration``: | The resulting configuration.

### The Format() method

    Format (IN  s     type,
            IN  a{sv} options);

Formats the device with a file system, partition table or other well-known content.

Known values for `type` includes `empty` (to just zero out areas of the device known to host file system signatures) and `swap` (Linux swap space) and most file systems supported by the mkfs(8) program through its `-t` option.

Known partition table formats includes `dos` and `gpt`.

If `type` supports it, you can specify a label with the `label` option in the `options` parameter; however, note that this may not be supported on all file systems and, if supported, the maximum allowed length may vary. Similarly, you can specify filesystem UUID with the `uuid` option in the `options` parameter given that the particular filesystem type supports this feature. The format of the UUID string should match the "IdUUID" property.

If the file system in question supports owners and the option `take-ownership` is set to `TRUE` then the root directory of the created file system will be owned by the caller of this method.

If the option `encrypt.passphrase` is given then a LUKS device is created with the given passphrase and the file system is created on the unlocked device. The unlocked device will be left open. This parameter can be used to supply the binary contents of an arbitrary keyfile by passing a value of type “ay”. Option `encrypt.type` can be used to specify encryption "technology" that will be used. Currently only “luks1” and “luks2” are supported. Option `encrypt.label` can be used to specify label for the LUKS format. Following additional options for LUKS key derivation function can be used:

encrypt.pbkdf | key derivation function, one of "pbkdf2", "argon2i", "argon2id"
encrypt.iterations | number of iterations for PBKDF
encrypt.memory | memory cost in KiB for Argon2
encrypt.time | time cost for PBKDF in ms
encrypt.threads | parallel cost for PBKDF (number of threads, up to 4)

If the option `erase` is used then the underlying device will be erased. Valid values include “zero” to write zeroes over the entire device before formatting, “ata-secure-erase” to perform a secure erase or “ata-secure-erase-enhanced” to perform an enhanced secure erase.

If the option `update-partition-type` is set to `TRUE` and the object in question is a partition, then its type (cf. the "Type" property) will be set to the natural partition type matching `type`, if any. For example, if formatting a GPT partition with a FAT filesystem, the “Microsoft Basic Data” partition type will be chosen; similar, if formatting a DOS partition with a Ext4 filesystem then partition type 0x83 is chosen.

If the option `no-block` is set to `TRUE` then the method returns just before the actual formatting takes place but after authorization and other checks are done. This is useful for applications that want to format several devices in parallel.

If the option `dry-run-first` is set to `TRUE` then a dry run of the formatting command is performed first, if UDisks knows how to do that. The idea is that this allows a deeper check of the parameters even when `no-block` is `TRUE`. Note that the block device has already been modified (wiped) when the dry run check is called.

If the option `mkfs-args` is set then the caller can provide a list of additional command-line arguments that will be passed to the mkfs program. The arguments specified in this way are not validated by UDisks, and the user is responsible for making sure that the available mkfs program for that filesystem supports them and that they work for the intended purpose. Note that UDisks can also pass its own additional arguments to mkfs, and they may vary between releases, with no guarantees of stability in this regard. The position in which the user-provided arguments are appended to the final mkfs command line is also not defined. Because of all this, `mkfs-args` should only be used as a last resort when no other dedicated option is available.

If the option `no-discard` is set to `TRUE` then Udisks tells the formatting utility not to issue BLKDISCARD ioctls.

If the option `config-items` is set, it should be an array of configuration items suitable for org.freedesktop.UDisks2.Block.AddConfigurationItem. They will all be added after the formatting is done.

If the option `tear-down` is set to `TRUE`, then the block device and all its children will be cleaned up before formatting. This cleanup consists of removing entries from /etc/fstab and /etc/crypttab, and locking of encrypted block devices. Entries in /etc/fstab and /etc/crypttab that have been created with the 'track-parents' options to AddConfigurationItem will be removed even if their block device is currently unavailable.

Note that if the operation fails the block device may be left in an inconsistent state. In cases of removing partition table and failed operation it's advised to validate the device e.g. by re-reading the partition table or force-wiping it before performing further operations.

In case the `tear-down` option is not set and the block device being formatted is partitioned and contains mounted filesystem or an active layered structure inside then the Format operation may not fail, yet could still overwrite nested foreign data regions. It is the caller responsibility to ensure the device is ready for destructive operations. This may be subject to further restrictions in the future.

`IN s `type``: | The type of file system, partition table or other content to format the device with.

`IN a{sv} `options``:

Options - known options (in addition to standard options) includes `label` (of type 's'), `uuid` (of type 's'), `take-ownership` (of type 'b'), `encrypt.passphrase` (of type 's' or 'ay'), `encrypt.type` (of type 's'), `encrypt.label` (of type 's'), `encrypt.pbkdf` (of type 's'), `encrypt.memory` (of type 'u'), `encrypt.iterations` (of type 'u'), `encrypt.time` (of type 'u'), `encrypt.threads` (of type 'u'), `erase` (of type 's'), `mkfs-args` (of type 'as'), `no-block` (of type 'b') and `update-partition-type` (of type 'b').

### The OpenForBackup() method

    OpenForBackup (IN  a{sv} options,
                   OUT h     fd);

Gets a read-only file descriptor for the device intended for a byte-by-byte imaging of the device. This can only be done if the device is not already in use.

This method is deprecated since 2.7.3. Use OpenDevice() with `O_EXCL` and `O_CLOEXEC` flags instead.

`IN a{sv} `options``: | Options (currently unused except for standard options).
`OUT h `fd``: | An index for the returned file descriptor.

### The OpenForRestore() method

    OpenForRestore (IN  a{sv} options,
                    OUT h     fd);

Gets a writable file descriptor for the device intended for a byte-by-byte restore of a disk image onto the device. This can only be done if the device is not already in use.

This method is deprecated since 2.7.3. Use OpenDevice() with `O_EXCL`, `O_SYNC` and `O_CLOEXEC` flags instead.

`IN a{sv} `options``: | Options (currently unused except for standard options).
`OUT h `fd``: | An index for the returned file descriptor.

### The OpenForBenchmark() method

    OpenForBenchmark (IN  a{sv} options,
                      OUT h     fd);

Gets a file descriptor for the device that is suitable to be used for benchmarking the device (transfer rate, access time etc.). Note that the file descriptor may be opened with the `O_DIRECT` and `O_SYNC` flags so care must be taken to only perform block-aligned I/O.

If the `writable` in `options` is `TRUE` then the returned file descriptor will be writable. This only works if the device is not already in use.

This method is deprecated since 2.7.3. Use OpenDevice() with `O_DIRECT`, `O_SYNC` and `O_CLOEXEC` flags instead.

`IN a{sv} `options``: | Options (currently unused except for standard options).
`OUT h `fd``: | An index for the returned file descriptor.

### The OpenDevice() method

    OpenDevice (IN  s     mode,
                IN  a{sv} options,
                OUT h     fd);

Option `flags` can be used to specify additional flags. See `man 2 open` for list of supported flags. `O_RDONLY`, `O_WRONLY` and `O_RDWR` are not allowed, use `mode` instead.

Gets a file descriptor for the device.

`IN s `mode``: | Mode: "r" for read-only, "w" for write-only or "rw" for read-write
`IN a{sv} `options``: | Options - known options (in addition to standard options) includes `flags` (of type 'i')
`OUT h `fd``: | An index for the returned file descriptor.

Since 2.7.3

### The Rescan() method

    Rescan (IN  a{sv} options);

Request that the kernel and core OS rescans the contents of the device and update their state to reflect this (including things such as the `/dev/disk/` hierarchy of symlinks). This includes requesting that the kernel re-reads the partition table, if appropriate.

This is usually not needed since the OS automatically does this when the last process with a writable file descriptor for the device closes it.

`IN a{sv} `options``: | Options (currently unused except for standard options).

### The RestoreEncryptedHeader() method

    RestoreEncryptedHeader (IN  s     backup_file,
                            IN  a{sv} options);

Writes header and keyslots from the specified file to the specified device. The specified file must exist.

`IN s `backup_file``: | Path from where to backup header and keyslots.
`IN a{sv} `options``: | Options (currently unused except for standard options).

Since 2.11.0

## Property Details

### The "Device" property

    Device  readable   ay

The special device file for the block device e.g. `/dev/sda2`.

### The "PreferredDevice" property

    PreferredDevice  readable   ay

The special device file to present in the UI instead of the value of the "Device" property.

For example this could be e.g. `/dev/mapper/mpathk` for a multipath device with special device file `/dev/dm-9`.

### The "Symlinks" property

    Symlinks  readable   aay

Known symlinks in `/dev` that points to the device file in the "Device" property.

For example, this array could include symlinks such as `/dev/disk/by-id/ata-INTEL_SSDSA2MH080G1GC_CVEM842101HD080DGN` and `/dev/disk/by-id/wwn-0x5001517387d61905`.

### The "DeviceNumber" property

    DeviceNumber  readable   t

The dev_t of the block device.

### The "Id" property

    Id  readable   s

`since`: 2.0.0 A unique and persistent identifier for the device or blank if no such identifier is available.

For devices with fixed media, this identifier is derived from vital product data / UUIDs / serial numbers of the drive or construct (e.g. LVM or MD-RAID) the block device is part of. For devices with removable media, this identifier is derived from the medium currently inserted.

This identifier is guaranteed to not include the slash character '/' (U+002F SOLIDUS) which means it can be used as a filename.

Examples: “by-id-ata-INTEL_SSDSA2MH080G1GC_CVEM842101HD080DGN”, “by-id-ata-ST1000LM024_HN-M101MBB_S2TBJA0C230233-part3”, “by-id-usb-Kingston_DataTraveler_2.0_0013729940C4F9A166250D3E-0:0”, “by-id-dm-name-luks-6d81fe85-26b1-4f8b-b834-405454c1cd46”, “by-id-dm-name-vg_thinkpad-lv_swap”, “by-label-HARRY_POTTER_SORCERERS_STONE-”, “by-uuid-D22D-08B8”.

### The "Size" property

    Size  readable   t

The size of the block device.

### The "ReadOnly" property

    ReadOnly  readable   b

If `TRUE`, the device can not be written to, only read from.

### The "Drive" property

    Drive  readable   o

The org.freedesktop.UDisks2.Drive object that the block device belongs to, or '/' if no such object exists.

### The "MDRaid" property

    MDRaid  readable   o

`since`: 2.0.0 If the block device is a running MD-RAID array, this is set to the org.freedesktop.UDisks2.MDRaid object that it correspond to. Is '/' if no such object exists.

### The "MDRaidMember" property

    MDRaidMember  readable   o

`since`: 2.0.0 If the block device is a member of a MD-RAID array, this is set to the org.freedesktop.UDisks2.MDRaid object that it correspond to. Is '/' if no such object exists.

### The "IdUsage" property

    IdUsage  readable   s

A result of probing for signatures on the block device. Known values include:

filesystem | Used for mountable filesystems
crypto | Used for e.g. LUKS devices
raid | Used for e.g. RAID members and LVM PVs
other | Something else was detected.

If blank, no known signature was detected. This doesn't necessarily mean the device contains no structured data; it only means that no signature known to the probing code was detected.

Applications should not rely on the value in this or the "IdType" property - instead, applications should check for whether the object in question implements interfaces such as e.g. org.freedesktop.UDisks2.Filesystem, org.freedesktop.UDisks2.Swapspace or org.freedesktop.UDisks2.Encrypted.

### The "IdType" property

    IdType  readable   s

This property contains more information about the result of probing the block device. Its value depends of the value the "IdUsage" property:

filesystem | The mountable file system that was detected (e.g. `vfat`).
crypto | Encrypted data. Known values include `crypto_LUKS`.
raid | RAID or similar. Known values include `LVM2_member` (for LVM2 components), `linux_raid_member` (for MD-RAID components.)
other | Something else. Known values include `swap` (for swap space), `suspend` (data used when resuming from suspend-to-disk).

See the note for the "IdUsage" property about usage.

### The "IdVersion" property

    IdVersion  readable   s

The version of the filesystem or other structured data on the block device. Do not make any assumptions about the format.

This property is blank if there is no version or the version is unknown.

### The "IdLabel" property

    IdLabel  readable   s

The label of the filesystem or other structured data on the block device.

This property is blank if there is no label or the label is unknown.

### The "IdUUID" property

    IdUUID  readable   s

The UUID of the filesystem or other structured data on the block device. Do not make any assumptions about the UUID as its format depends on what kind of data is on the device.

This property is blank if there is no UUID or the UUID is unknown.

### The "Configuration" property

    Configuration  readable   a(sa{sv})

The configuration for the device.

This is an array of pairs of (`type`, `details`) where `type` is a string identifying the configuration source (e.g. `fstab`) and `details` contains the actual configuration data.

Use the AddConfigurationItem(), RemoveConfigurationItem() and UpdateConfigurationItem() methods to add, remove and update configuration items.

Use GetSecretConfiguration() to get the secrets (e.g. passphrases) that may be part of the configuration but isn't exported in this property for security reasons.

For entries of type `fstab`, it means that the block device is referenced in the system-wide `/etc/fstab` file. Known configuration items for type `fstab` are

fsname (type `'ay'`) | The special device
dir (type `'ay'`) | The mount point
type (type `'ay'`) | The filesystem type
opts (type `'ay'`) | Options
freq (type `'i'`) | Dump frequency in days
passno (type `'i'`) | Pass number of parallel fsck

For entries of type `crypttab`, it means that the block device is referenced in the system-wide `/etc/crypttab` file. Known configuration items for type `crypttab` are

name (type `'ay'`) | The name to set the device up as
device (type `'ay'`) | The special device
passphrase-path (type `'ay'`) | Either empty to specify that no password is set, otherwise a path to a file containing the encryption password. This may also point to a special device file in `/dev` such as `/dev/random`.
passphrase-contents (type `'ay'`) | The contents of the file containing the encryption password, if applicable. This is only available via the GetSecretConfiguration() method.
options (type `'ay'`) | Options

For security reasons, when creating a new `crypttab` entry (via the AddConfigurationItem() method), then the `passphrase-path` must reference an unexisting file in the `/etc/luks-keys` directory.

### The "CryptoBackingDevice" property

    CryptoBackingDevice  readable   o

The org.freedesktop.UDisks2.Block object that is backing the device or `/` if unknown or if the block device is not the cleartext device for an encrypted device.

### The "HintPartitionable" property

    HintPartitionable  readable   b

If `TRUE`, the device is normally expected to be partitionable. Devices for which this is not the case include floppy drives, optical drives and LVM logical volumes.

### The "HintSystem" property

    HintSystem  readable   b

If `TRUE`, the device is considered a system device.

System devices are devices that require additional permissions to access.

See udisks(8) for how to influence the value of this property.

### The "HintIgnore" property

    HintIgnore  readable   b

If `TRUE`, the device should be hidden from users. See udisks(8) for how to influence the value of this property.

### The "HintAuto" property

    HintAuto  readable   b

If `TRUE`, the device should be automatically started (e.g. mounted, unlocked etc.). See udisks(8) for how to influence the value of this property.

### The "HintName" property

    HintName  readable   s

If not blank, the name to use when presenting the device. See udisks(8) for how to influence the value of this property.

### The "HintIconName" property

    HintIconName  readable   s

If not blank, the icon name to use when presenting the device.

The name must adhere to the freedesktop.org icon theme specification.

See udisks(8) for how to influence the value of this property.

### The "HintSymbolicIconName" property

    HintSymbolicIconName  readable   s

`since`: 2.0.0 If not blank, the icon name to use when presenting the device using a symbolic icon.

The name must adhere to the freedesktop.org icon theme specification.

See udisks(8) for how to influence the value of this property.

### The "UserspaceMountOptions" property

    UserspaceMountOptions  readable   as

List of userspace mount options.