Crate devicemapper [] [src]

Low-level devicemapper configuration of the running kernel.

Overview

Linux's devicemapper allows the creation of block devices whose storage is mapped to other block devices in useful ways, either by changing the location of its data blocks, or performing some operation on the data itself. This is a low-level facility that is used by higher-level volume managers such as LVM2. Uses may include:

  • Dividing a large block device into smaller logical volumes (dm-linear)
  • Combining several separate block devices into a single block device with better performance and/or redundancy (dm-raid)
  • Encrypting a block device (dm-crypt)
  • Performing Copy-on-Write (COW) allocation of a volume's blocks enabling fast volume cloning and snapshots (dm-thin)
  • Configuring a smaller, faster block device to act as a cache for a larger, slower one (dm-cache)
  • Verifying the contents of a read-only volume (dm-verity)

Usage

Before they can be used, DM devices must be created using DM::device_create(), have a mapping table loaded using DM::table_load(), and then activated with DM::device_suspend(). (This function is used for both suspending and activating a device.) Once activated, they can be used as a regular block device, including having other DM devices map to them.

Devices have "active" and "inactive" mapping tables. See function descriptions for which table they affect.

Modules

consts

shared constants

Structs

Bytes

Structure to represent bytes

DM

Context needed for communicating with devicemapper.

DataBlocks

A type for Data Blocks as used by the thin pool.

Device

A struct containing the device's major and minor numbers

DmName

A devicemapper name. Really just a string, but also the argument type of DevId::Name. Used in function arguments to indicate that the function takes only a name, not a devicemapper uuid.

DmNameBuf

The owned version of DmName.

DmUuid

A devicemapper uuid. A devicemapper uuid has a devicemapper specific format.

DmUuidBuf

The owned version of DmUuid.

LinearDev

A DM construct of combined Segments

MetaBlocks

A type for Meta Data blocks as used by the thin pool. MetaBlocks have a kernel defined constant size of META_BLOCK_SIZE

Sectors

A separate type to store counts and offsets expressed in 512-byte sectors.

Segment

struct to represent a continuous set of sectors on a disk

ThinDev

DM construct for a thin block device

ThinDevId

A thindev id is a 24 bit number, i.e., its bit width is not a power of 2.

ThinPoolBlockUsage

Contains values indicating the thinpool's used vs total allocations for metadata and data blocks.

ThinPoolDev

DM construct to contain thin provisioned devices

Enums

DevId

Used as a parameter for functions that take either a Device name or a Device UUID.

DmError

Define a common error enum. See http://blog.burntsushi.net/rust-error-handling/

ErrorEnum
ThinPoolStatus

Top-level thinpool status that indicates if it is working or failed.

ThinPoolWorkingStatus

Indicates if a working thinpool is working optimally, or is experiencing a non-fatal error condition.

ThinStatus

Thin device status.

Type Definitions

DmResult

return result for DM functions