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 |
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_create_table (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] |
BDPartSpec * bd_part_create_part (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.
[transfer full]
gboolean bd_part_delete_part (gchar *disk
,gchar *part
,GError **error
);
BDPartSpec ** bd_part_get_disk_parts (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.
[transfer full][array zero-terminated=1]
BDPartSpec * bd_part_get_part_spec (gchar *disk
,gchar *part
,GError **error
);
gboolean bd_part_set_part_flag (gchar *disk
,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] |
const gchar * bd_part_get_part_table_type_str (BDPartTableType type
,GError **error
);
BDPartSpec * bd_part_get_best_free_region (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).
[transfer full]
BDPartSpec ** bd_part_get_disk_free_regions (gchar *disk
,GError **error
);
specs of the free regions from disk
or NULL
in case of error.
[transfer full][array zero-terminated=1]
BDPartSpec * bd_part_get_part_by_pos (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).
[transfer full]
gboolean bd_part_set_disk_flag (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] |
gboolean bd_part_set_part_flags (gchar *disk
,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] |
gboolean bd_part_set_part_name (gchar *disk
,gchar *part
,gchar *name
,GError **error
);
gboolean bd_part_set_part_type (gchar *disk
,gchar *part
,gchar *type_guid
,GError **error
);
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) |