API changes in libblockdev 3.0

This is a list of API changes in libblockdev 3.0 with suggested replacements.

Library

bd_switch_init_checks() has been removed. Checks for runtime dependencies during libblockdev initialization are now disabled and plugins will be loaded even if a runtime dependency is missing.

bd_"plugin"_check_deps functions have been removed from all plugins. Use bd_"plugin"_is_tech_avail to check for plugin dependencies.

LVM plugin

bd_lvm_data_lv_name() has been removed, use data_lv from BDLVMLVdata instead.

bd_lvm_metadadata_lv_name() has been removed, use metadata_lv from BDLVMLVdata instead.

BD_LVM_MAX_LV_SIZE constant has been removed, use bd_lvm_get_max_lv_size() instead.

Multiple thinpool and cache metadata size related constants have been removed without replacement. We recommend using functions like bd_lvm_get_thpool_meta_size instead. Removed constants: BD_LVM_MIN_THPOOL_MD_SIZE, BD_LVM_MAX_THPOOL_MD_SIZE, BD_LVM_MIN_THPOOL_CHUNK_SIZE, BD_LVM_MIN_CACHE_MD_SIZE, BD_LVM_DEFAULT_CHUNK_SIZE, BD_LVM_MAX_PE_SIZE, BD_LVM_MIN_PE_SIZE, BD_LVM_DEFAULT_PE_START and BD_LVM_DEFAULT_PE_SIZE.

bd_lvm_lvactivate() has a new parameter shared, use FALSE to preserve the original behaviour.

VDO plugin

VDO plugin has been removed.

Crypto plugin

bd_crypto_luks_uuid() has been removed, use uuid from BDCryptoLUKSInfo instead.

bd_crypto_luks_get_metadata_size() has been removed, use metadata_size from BDCryptoLUKSInfo instead.

LUKS2-specific functions were removed. The "generic" LUKS functions which now support both LUKSv1 and LUKSv2 should be used instead. Affected functions: bd_crypto_luks_format_luks2 and bd_crypto_luks_resize_luks2.

bd_crypto_luks_open_keyring has been removed, bd_crypto_luks_open with the keyring context (see below) can be used instead.

bd_crypto_tc_open_full has been removed, bd_crypto_tc_open can be used instead. bd_crypto_tc_open arguments have been changed to match the "full" function.

Functions that allowed using arbitrary binary data for passphrases were removed. The "generic" functions should be used instead, see the key slot context information below. Affected functions: bd_crypto_luks_format_blob, bd_crypto_luks_format_luks2_blob, bd_crypto_luks_open_blob, bd_crypto_luks_add_key_blob, bd_crypto_luks_remove_key_blob, bd_crypto_luks_change_key_blob, and bd_crypto_luks_resume_blob.

All functions that require some type of passphrase or key as an input now expect BDCryptoKeyslotContext instead. This is a private opaque context that needs to be set by one of the bd_crypto_keyslot_context_new_* functions based on the type of the context required.

NVDIMM plugin

bd_nvdimm_namepace_get_supported_sector_sizes has been removed, use bd_nvdimm_namespace_get_supported_sector_sizes instead.

FS plugin

bd_fs_clean and bd_fs_wipe have new parameter force that allows controlling whether the signatures will be removed from a mounted device or not. Use TRUE to preserve the original behaviour.

Following functions have a new parameter fstype that allows to skip scanning the device for signature. Use NULL to preserve the original behaviour. Affected functions: bd_fs_resize, bd_fs_repair, bd_fs_check, bd_fs_set_label, bd_fs_set_uuid, bd_fs_get_size and bd_fs_get_free_space

Type-specific bd_fs_..._wipe functions have been removed. Use bd_fs_wipe or bd_fs_clean instead. Affected functions: bd_fs_btrfs_wipe, bd_fs_ext2_wipe, bd_fs_ext3_wipe, bd_fs_ext4_wipe, bd_fs_exfat_wipe, bd_fs_f2fs_wipe, bd_fs_nilfs2_wipe, bd_fs_ntfs_wipe, bd_fs_vfat_wipe, bd_fs_udf_wipe, bd_fs_xfs_wipe

bd_fs_ntfs_check, bd_fs_ntfs_repair and bd_fs_xfs_check have a new parameter extra that allows specifying extra options for the fsck tools. This makes the functionality consistent with the other filesystems.

BDFsResizeFlags enum was renamed to BDFSResizeFlags.

BDFsError enum was renamed to BDFSError.

Part plugin

The part plugin has been rewritten to use libfdisk library instead of libparted. The following functions, enums and definitions related to partition and disk flags have been removed. bd_part_set_part_flag, bd_part_get_flag_str, bd_part_set_disk_flag, bd_part_set_part_flags, BDPartFlag and BDPartDiskFlag.

We recommend using the bd_part_set_part_type and bd_part_set_part_id functions to set partition GUID (GPT) or ID (MSDOS) to set the required type/id instead.

New functions bd_part_set_part_bootable and bd_part_set_part_attributes have been added to allow controlling the bootable flag (MSDOS) and partition attributes (GPT).

The bd_part_get_part_id function has been removed. The partition id parameter is now available in BDPartSpec.

KBD plugin

KBD plugin (providing support for bcache and zRAM devices) has been removed.

Loop plugin

bd_loop_setup and bd_loop_setup_from_fd has a new parameter sector_size. Use 0 to preserve the original behaviour.

bd_loop_get_backing_file and bd_loop_get_autoclear have been removed. Use bd_loop_info instead.

DM plugin

Support for DM RAID (BD_DM_TECH_RAID technology) was removed from the plugin. Following functions were removed without replacement: bd_dm_get_member_raid_sets, bd_dm_activate_raid_set, bd_dm_deactivate_raid_set and bd_dm_get_raid_set_type.

MDRAID plugin

The bitmap argument of the bd_md_create function now accepts arbitrary string instead of a boolean value. Previous value of FALSE is now represented by NULL, i.e. letting mdadm decide itself whether to create an internal bitmap or not.

Swap plugin

bd_swap_mkswap has a new optional parameter uuid.