Top | ![]() |
![]() |
![]() |
![]() |
#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 | |
enum | BDPartTech |
enum | BDPartTechMode |
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 libfdisk for manipulations of both the MBR and GPT disk label types.
gboolean
bd_part_init (void
);
Initializes the plugin. **This function is called automatically by the library's initialization functions.**
void
bd_part_close (void
);
Cleans up after the plugin. **This function is called automatically by the library's functions that unload it.**
gboolean bd_part_create_table (const gchar *disk
,BDPartTableType type
,gboolean ignore_existing
,GError **error
);
disk |
path of the disk block device to create partition table on |
|
type |
type of the partition table to create |
|
ignore_existing |
whether to ignore/overwrite the existing table or not
(reports an error if |
|
error |
place to store error (if any). |
[out] |
whether the partition table was successfully created or not
Tech category: BD_PART_TECH_MODE_CREATE_TABLE
+ the tech according to type
BDPartSpec * bd_part_create_part (const gchar *disk
,BDPartTypeReq type
,guint64 start
,guint64 size
,BDPartAlign align
,GError **error
);
disk |
disk to create partition on |
|
type |
type of the partition to create (if |
|
start |
where the partition should start (i.e. offset from the disk start) |
|
size |
desired size of the partition (if 0, a max-sized partition is created) |
|
align |
alignment to use for the partition |
|
error |
place to store error (if any). |
[out] |
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.
[transfer full]
gboolean bd_part_delete_part (const gchar *disk
,const gchar *part
,GError **error
);
disk |
disk to remove the partition from |
|
part |
partition to remove |
|
error |
place to store error (if any). |
[out] |
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
gboolean bd_part_resize_part (const gchar *disk
,const gchar *part
,guint64 size
,BDPartAlign align
,GError **error
);
disk |
disk containing the partition |
|
part |
partition to resize |
|
size |
new partition size, 0 for maximal size |
|
align |
alignment to use for the partition end |
|
error |
place to store error (if any). |
[out] |
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
BDPartSpec ** bd_part_get_disk_parts (const gchar *disk
,GError **error
);
disk |
disk to get information about partitions for |
|
error |
place to store error (if any). |
[out] |
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.
[transfer full][array zero-terminated=1]
BDPartSpec * bd_part_get_part_spec (const gchar *disk
,const gchar *part
,GError **error
);
disk |
disk to remove the partition from |
|
part |
partition to get spec for |
|
error |
place to store error (if any). |
[out] |
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.
[transfer full]
gboolean bd_part_set_part_flag (const gchar *disk
,const gchar *part
,BDPartFlag flag
,gboolean state
,GError **error
);
disk |
disk the partition belongs to |
|
part |
partition to set the flag on |
|
flag |
flag to set |
|
state |
state to set for the |
|
error |
place to store error (if any). |
[out] |
whether the flag flag
was successfully set on the part
partition
or not.
Tech category: BD_PART_TECH_MODE_MODIFY_PART
+ the tech according to the partition table type
const gchar * bd_part_get_part_table_type_str (BDPartTableType type
,GError **error
);
BDPartSpec * bd_part_get_best_free_region (const gchar *disk
,BDPartType type
,guint64 size
,GError **error
);
disk |
disk to get the best free region for |
|
type |
type of the partition that is planned to be added |
|
size |
size of the partition to be added |
|
error |
place to store error (if any). |
[out] |
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.
[transfer full]
BDPartSpec ** bd_part_get_disk_free_regions (const gchar *disk
,GError **error
);
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.
[transfer full][array zero-terminated=1]
BDPartDiskSpec * bd_part_get_disk_spec (const gchar *disk
,GError **error
);
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.
[transfer full]
BDPartSpec * bd_part_get_part_by_pos (const gchar *disk
,guint64 position
,GError **error
);
disk |
disk to remove the partition from |
|
position |
position (in bytes) determining the partition |
|
error |
place to store error (if any). |
[out] |
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.
[transfer full]
gboolean bd_part_set_disk_flag (const gchar *disk
,BDPartDiskFlag flag
,gboolean state
,GError **error
);
disk |
disk the partition belongs to |
|
flag |
flag to set |
|
state |
state to set for the |
|
error |
place to store error (if any). |
[out] |
whether the flag flag
was successfully set on the disk
or not
Tech category: BD_PART_TECH_MODE_MODIFY_TABLE
+ the tech according to the partition table type
gboolean bd_part_set_part_flags (const gchar *disk
,const gchar *part
,guint64 flags
,GError **error
);
disk |
disk the partition belongs to |
|
part |
partition to set the flag on |
|
flags |
flags to set (mask combined from BDPartFlag numbers) |
|
error |
place to store error (if any). |
[out] |
whether the flags
were successfully set on the part
partition or
not
Note: Unsets all the other flags on the partition. Only GPT-specific flags and the legacy boot flag are supported on GPT partition tables.
Tech category: BD_PART_TECH_MODE_MODIFY_PART
+ the tech according to the partition table type
gboolean bd_part_set_part_name (const gchar *disk
,const gchar *part
,const gchar *name
,GError **error
);
disk |
device the partition belongs to |
|
part |
partition the should be set for |
|
name |
name to set |
|
error |
place to store error (if any). |
[out] |
whether the name was successfully set or not
Tech category: BD_PART_TECH_GPT
-BD_PART_TECH_MODE_MODIFY_PART
gboolean bd_part_set_part_type (const gchar *disk
,const gchar *part
,const gchar *type_guid
,GError **error
);
disk |
device the partition belongs to |
|
part |
partition the should be set for |
|
type_guid |
GUID of the type |
|
error |
place to store error (if any). |
[out] |
whether the type_guid
type was successfully set for part
or not
Tech category: BD_PART_TECH_GPT
-BD_PART_TECH_MODE_MODIFY_PART
gboolean bd_part_set_part_id (const gchar *disk
,const gchar *part
,const gchar *part_id
,GError **error
);
disk |
device the partition belongs to |
|
part |
partition the should be set for |
|
part_id |
partition Id |
|
error |
place to store error (if any). |
[out] |
whether the part_id
type was successfully set for part
or not
Tech category: BD_PART_TECH_MODE_MODIFY_PART
+ the tech according to the partition table type
gchar * bd_part_get_part_id (const gchar *disk
,const gchar *part
,GError **error
);
Returns (transfer full): partition id type or NULL
in case of error
Tech category: BD_PART_TECH_MODE_QUERY_PART
+ the tech according to the partition table type
gboolean bd_part_is_tech_avail (BDPartTech tech
,guint64 mode
,GError **error
);
tech |
the queried tech |
|
mode |
a bit mask of queried modes of operation (BDPartTechMode) for |
|
error |
place to store error (details about why the |
[out] |
Partition flags supported by libblockdev. First part of the flags (up to
BD_PART_FLAG_BASIC_LAST
) corresponds to the flags supported by libparted
(see https://www.gnu.org/software/parted/manual/parted.htmlset). Second
part corresponds to the flags supported by sgdisk (GPT, see sgdisk -A=list
).
The only exception from the above is BD_PART_FLAG_LEGACY_BOOT
which is
supported by libparted too but is GPT specific.
typedef struct { gchar *path; gchar *name; gchar *type_guid; guint64 type; guint64 start; guint64 size; guint64 flags; } BDPartSpec;
gchar * |
path of the partition (block device) |
|
gchar * |
name of the partition (for GPT partitions) |
|
gchar * |
GUID of the partition's type (GPT) |
|
guint64 |
bit combination of partition's types (BDPartType) |
|
guint64 |
start of the partition |
|
guint64 |
size of the partition |
|
guint64 |
bit combination of partition's flags (BDPartFlag) |
typedef struct { gchar *path; BDPartTableType table_type; guint64 size; guint64 sector_size; guint64 flags; } BDPartDiskSpec;
gchar * |
path of the disk (block device) |
|
BDPartTableType |
type of the disk's partition table |
|
guint64 |
size of the disk |
|
guint64 |
disk's sector size |
|
guint64 |
bit combination of the disk's flags (BDPartDiskFlag) |