![]() |
![]() |
![]() |
libblockdev Reference Manual | ![]() |
---|---|---|---|---|
Top | Description |
#include <part.h> gboolean bd_part_check_deps (); gboolean bd_part_init (); void bd_part_close (); #define BD_PART_ERROR #define BD_PART_TYPE_SPEC enum BDPartAlign; enum BDPartFlag; BDPartSpec; enum BDPartType; enum BDPartTypeReq; enum BDPartError; enum BDPartTableType; enum BDPartDiskFlag; BDPartDiskSpec; gboolean bd_part_create_table (const gchar *disk
,BDPartTableType type
,gboolean ignore_existing
,GError **error
); BDPartSpec * bd_part_create_part (const gchar *disk
,BDPartTypeReq type
,guint64 start
,guint64 size
,BDPartAlign align
,GError **error
); gboolean bd_part_delete_part (const gchar *disk
,const gchar *part
,GError **error
); gboolean bd_part_resize_part (const gchar *disk
,const gchar *part
,guint64 size
,BDPartAlign align
,GError **error
); BDPartSpec ** bd_part_get_disk_parts (const gchar *disk
,GError **error
); BDPartSpec * bd_part_get_part_spec (const gchar *disk
,const gchar *part
,GError **error
); gboolean bd_part_set_part_flag (const gchar *disk
,const gchar *part
,BDPartFlag flag
,gboolean state
,GError **error
); BDPartSpec * bd_part_spec_copy (BDPartSpec *data
); void bd_part_spec_free (BDPartSpec *data
); GType bd_part_spec_get_type (); const gchar * bd_part_get_flag_str (BDPartFlag flag
,GError **error
); const gchar * bd_part_get_part_table_type_str (BDPartTableType type
,GError **error
); const gchar * bd_part_get_type_str (BDPartType type
,GError **error
); BDPartSpec * bd_part_get_best_free_region (const gchar *disk
,BDPartType type
,guint64 size
,GError **error
); BDPartSpec ** bd_part_get_disk_free_regions (const gchar *disk
,GError **error
); BDPartDiskSpec * bd_part_get_disk_spec (const gchar *disk
,GError **error
); BDPartSpec * bd_part_get_part_by_pos (const gchar *disk
,guint64 position
,GError **error
); gboolean bd_part_set_disk_flag (const gchar *disk
,BDPartDiskFlag flag
,gboolean state
,GError **error
); gboolean bd_part_set_part_flags (const gchar *disk
,const gchar *part
,guint64 flags
,GError **error
); gboolean bd_part_set_part_name (const gchar *disk
,const gchar *part
,const gchar *name
,GError **error
); gboolean bd_part_set_part_type (const gchar *disk
,const gchar *part
,const gchar *type_guid
,GError **error
); gboolean bd_part_set_part_id (const gchar *disk
,const gchar *part
,const gchar *part_id
,GError **error
); gchar * bd_part_get_part_id (const gchar *disk
,const gchar *part
,GError **error
); GQuark bd_part_error_quark (void
);
A plugin for operations with partition tables. Currently supported table (disk label) types are MBR and GPT. See the functions below to get an overview of which operations are supported. If there's anything missing, please don't hesitate to report it as this plugin (just like all the others) is subject to future development and enhancements.
This particular implementation of the part plugin uses libparted for manipulations of both the MBR and GPT disk label types together with the sgdisk utility for some extra GPT-specific features libparted doesn't support. In the future, there's likely to be another implementation of this plugin based on libfdisk which provides full support for both MBR and GPT tables (and possibly some others).
gboolean bd_part_check_deps ();
Returns : |
whether the plugin's runtime dependencies are satisfied or not Function checking plugin's runtime dependencies. |
gboolean bd_part_init ();
Initializes the plugin. **This function is called automatically by the library's initialization functions.**
void bd_part_close ();
Cleans up after the plugin. **This function is called automatically by the library's functions that unload it.**
typedef enum { BD_PART_ALIGN_MINIMAL, BD_PART_ALIGN_OPTIMAL, BD_PART_ALIGN_NONE } BDPartAlign;
typedef enum { BD_PART_FLAG_BOOT = 1 << 1, BD_PART_FLAG_ROOT = 1 << 2, BD_PART_FLAG_SWAP = 1 << 3, BD_PART_FLAG_HIDDEN = 1 << 4, BD_PART_FLAG_RAID = 1 << 5, BD_PART_FLAG_LVM = 1 << 6, BD_PART_FLAG_LBA = 1 << 7, BD_PART_FLAG_HPSERVICE = 1 << 8, BD_PART_FLAG_CPALO = 1 << 9, BD_PART_FLAG_PREP = 1 << 10, BD_PART_FLAG_MSFT_RESERVED = 1 << 11, BD_PART_FLAG_BIOS_GRUB = 1 << 12, BD_PART_FLAG_APPLE_TV_RECOVERY = 1 << 13, BD_PART_FLAG_DIAG = 1 << 14, BD_PART_FLAG_LEGACY_BOOT = 1 << 15, BD_PART_FLAG_MSFT_DATA = 1 << 16, BD_PART_FLAG_IRST = 1 << 17, BD_PART_FLAG_ESP = 1 << 18, BD_PART_FLAG_BASIC_LAST = 1 << 19, BD_PART_FLAG_GPT_SYSTEM_PART = 1 << 25, BD_PART_FLAG_GPT_READ_ONLY = 1 << 26, BD_PART_FLAG_GPT_HIDDEN = 1 << 27, BD_PART_FLAG_GPT_NO_AUTOMOUNT = 1 << 28 } BDPartFlag;
typedef struct { gchar *path; gchar *name; gchar *type_guid; guint64 type; guint64 start; guint64 size; guint64 flags; } BDPartSpec;
path of the partition (block device) | |
name of the partition (for GPT partitions) | |
GUID of the partition's type (GPT) | |
bit combination of partition's types (BDPartType) | |
start of the partition | |
size of the partition | |
bit combination of partition's flags (BDPartFlag) |
typedef enum { BD_PART_TYPE_NORMAL = 0x00, BD_PART_TYPE_LOGICAL = 0x01, BD_PART_TYPE_EXTENDED = 0x02, BD_PART_TYPE_FREESPACE = 0x04, BD_PART_TYPE_METADATA = 0x08, BD_PART_TYPE_PROTECTED = 0x10 } BDPartType;
typedef enum { BD_PART_TYPE_REQ_NORMAL = 0x00, BD_PART_TYPE_REQ_LOGICAL = 0x01, BD_PART_TYPE_REQ_EXTENDED = 0x02, BD_PART_TYPE_REQ_NEXT = 0x04 } BDPartTypeReq;
typedef enum { BD_PART_ERROR_EXISTS, BD_PART_ERROR_INVAL, BD_PART_ERROR_FAIL, } BDPartError;
typedef enum { BD_PART_TABLE_MSDOS = 0, BD_PART_TABLE_GPT, BD_PART_TABLE_UNDEF } BDPartTableType;
typedef struct { gchar *path; BDPartTableType table_type; guint64 size; guint64 sector_size; guint64 flags; } BDPartDiskSpec;
path of the disk (block device) | |
BDPartTableType |
type of the disk's partition table |
size of the disk | |
disk's sector size | |
bit combination of the disk's flags (BDPartDiskFlag) |
gboolean bd_part_create_table (const gchar *disk
,BDPartTableType type
,gboolean ignore_existing
,GError **error
);
|
path of the disk block device to create partition table on |
|
type of the partition table to create |
|
whether to ignore/overwrite the existing table or not
(reports an error if FALSE and there's some table on disk ) |
|
place to store error (if any). [out] |
Returns : |
whether the partition table was successfully created or not |
BDPartSpec * bd_part_create_part (const gchar *disk
,BDPartTypeReq type
,guint64 start
,guint64 size
,BDPartAlign align
,GError **error
);
|
disk to create partition on |
|
type of the partition to create (if BD_PART_TYPE_REQ_NEXT , the
partition type will be determined automatically based on the existing
partitions) |
|
where the partition should start (i.e. offset from the disk start) |
|
desired size of the partition (if 0, a max-sized partition is created) |
|
alignment to use for the partition |
|
place to store error (if any). [out] |
Returns : |
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. [transfer full]
|
gboolean bd_part_delete_part (const gchar *disk
,const gchar *part
,GError **error
);
|
disk to remove the partition from |
|
partition to remove |
|
place to store error (if any). [out] |
Returns : |
whether the part partition was successfully deleted from disk
|
gboolean bd_part_resize_part (const gchar *disk
,const gchar *part
,guint64 size
,BDPartAlign align
,GError **error
);
|
disk containing the paritition |
|
partition to resize |
|
new partition size, 0 for maximal size |
|
alignment to use for the partition end |
|
place to store error (if any). [out] |
Returns : |
whether the part partition was successfully resized on disk to size
NOTE: The resulting partition may be slightly bigger than requested due to alignment. |
BDPartSpec ** bd_part_get_disk_parts (const gchar *disk
,GError **error
);
|
disk to get information about partitions for |
|
place to store error (if any). [out] |
Returns : |
specs of the partitions from disk or NULL in case of error. [transfer full][array zero-terminated=1]
|
BDPartSpec * bd_part_get_part_spec (const gchar *disk
,const gchar *part
,GError **error
);
|
disk to remove the partition from |
|
partition to get spec for |
|
place to store error (if any). [out] |
Returns : |
spec of the part partition from disk or NULL in case of error. [transfer full]
|
gboolean bd_part_set_part_flag (const gchar *disk
,const gchar *part
,BDPartFlag flag
,gboolean state
,GError **error
);
|
disk the partition belongs to |
|
partition to set the flag on |
|
flag to set |
|
state to set for the flag (TRUE = enabled) |
|
place to store error (if any). [out] |
Returns : |
whether the flag flag was successfully set on the part partition
or not. |
const gchar * bd_part_get_flag_str (BDPartFlag flag
,GError **error
);
|
flag to get string representation for |
|
place to store error (if any). [out] |
Returns : |
string representation of flag . [transfer none]
|
const gchar * bd_part_get_part_table_type_str (BDPartTableType type
,GError **error
);
|
table type to get string representation for |
|
place to store error (if any). [out] |
Returns : |
string representation of table_type . [transfer none]
|
const gchar * bd_part_get_type_str (BDPartType type
,GError **error
);
|
type to get string representation for |
|
place to store error (if any). [out] |
Returns : |
string representation of type . [transfer none]
|
BDPartSpec * bd_part_get_best_free_region (const gchar *disk
,BDPartType type
,guint64 size
,GError **error
);
|
disk to get the best free region for |
|
type of the partition that is planned to be added |
|
size of the partition to be added |
|
place to store error (if any). [out] |
Returns : |
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). [transfer full]
|
BDPartSpec ** bd_part_get_disk_free_regions (const gchar *disk
,GError **error
);
|
disk to get free regions for |
|
place to store error (if any). [out] |
Returns : |
specs of the free regions from disk or NULL in case of error. [transfer full][array zero-terminated=1]
|
BDPartDiskSpec * bd_part_get_disk_spec (const gchar *disk
,GError **error
);
|
disk to get information about |
|
place to store error (if any). [out] |
Returns : |
information about the given disk or NULL (in case of error). [transfer full]
|
BDPartSpec * bd_part_get_part_by_pos (const gchar *disk
,guint64 position
,GError **error
);
|
disk to remove the partition from |
|
position (in bytes) determining the partition |
|
place to store error (if any). [out] |
Returns : |
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). [transfer full]
|
gboolean bd_part_set_disk_flag (const gchar *disk
,BDPartDiskFlag flag
,gboolean state
,GError **error
);
|
disk the partition belongs to |
|
flag to set |
|
state to set for the flag (TRUE = enabled) |
|
place to store error (if any). [out] |
Returns : |
whether the flag flag was successfully set on the disk or not |
gboolean bd_part_set_part_flags (const gchar *disk
,const gchar *part
,guint64 flags
,GError **error
);
|
disk the partition belongs to |
|
partition to set the flag on |
|
flags to set (mask combined from BDPartFlag numbers) |
|
place to store error (if any). [out] |
Returns : |
whether the flags were successfully set on the part partition or
not
Note: Unsets all the other flags on the partition. |
gboolean bd_part_set_part_name (const gchar *disk
,const gchar *part
,const gchar *name
,GError **error
);
|
device the partition belongs to |
|
partition the should be set for |
|
name to set |
|
place to store error (if any). [out] |
Returns : |
whether the name was successfully set or not |
gboolean bd_part_set_part_type (const gchar *disk
,const gchar *part
,const gchar *type_guid
,GError **error
);
|
device the partition belongs to |
|
partition the should be set for |
|
GUID of the type |
|
place to store error (if any). [out] |
Returns : |
whether the type_guid type was successfully set for part or not |
gboolean bd_part_set_part_id (const gchar *disk
,const gchar *part
,const gchar *part_id
,GError **error
);
|
device the partition belongs to |
|
partition the should be set for |
|
partition Id |
|
place to store error (if any). [out] |
Returns : |
whether the part_id type was successfully set for part or not |
gchar * bd_part_get_part_id (const gchar *disk
,const gchar *part
,GError **error
);
|
device the partition belongs to |
|
partition the should be set for |
|
place to store error (if any). [out] |
Returns : |
partition id type or NULL in case of error. [transfer full]
|