struct dm_task;
struct dm_info {
int exists;
int suspended;
int live_table;
int inactive_table;
int read_only;
int32_t open_count;
int32_t target_count;
uint32_t event_nr;
uint32_t major;
uint32_t minor;
};
struct dm_names {
const char *name;
uint64_t dev;
uint32_t next;
};
struct dm_deps {
uint32_t count;
uint64_t deps[1];
};
struct dm_versions {
const char *name;
uint32_t version[3];
uint32_t next;
};
enum {
DM_DEVICE_REMOVE,
DM_DEVICE_REMOVE_ALL,
DM_DEVICE_CREATE,
DM_DEVICE_RELOAD,
DM_DEVICE_RESUME,
DM_DEVICE_SUSPEND,
DM_DEVICE_CLEAR,
DM_DEVICE_LIST_VERSIONS,
DM_DEVICE_STATUS,
DM_DEVICE_TABLE,
DM_DEVICE_INFO,
DM_DEVICE_DEPS,
DM_DEVICE_VERSION,
DM_DEVICE_TARGET_MSG,
DM_DEVICE_RENAME,
DM_DEVICE_LIST
};
typedef void (*dm_error_func_t)(int, const char *, int, const char *, ...);
struct dm_task *dm_task_create(int task_type);
void dm_task_destroy(struct dm_task *dmt);
int dm_task_run(struct dm_task *dmt);
int dm_task_set_name(struct dm_task *dmt, const char *name);
const char *dm_task_get_name(struct dm_task *dmt);
int dm_task_set_newname(struct dm_task *dmt, const char *newname);
int dm_task_set_major(struct dm_task *dmt, int major);
int dm_task_set_minor(struct dm_task *dmt, int minor);
int dm_task_get_minor(struct dm_task *dmt);
int dm_task_set_uuid(struct dm_task *dmt, const char *uuid);
const char *dm_task_get_uuid(struct dm_task *dmt);
int dm_task_add_target(struct dm_task *dmt, uint64_t start, size_t size,
const char *target, const char *params);
int dm_task_set_sector(struct dm_task *dmt, uint64_t sector);
int dm_task_set_message(struct dm_task *dmt, const char *msg);
int dm_task_set_ro(struct dm_task *dmt);
int dm_task_no_open_count(struct dm_task *dmt);
int dm_task_query_inactive_table(struct dm_task *dmt);
int dm_task_set_read_ahead(struct dm_task *dmt, uint32_t read_ahead);
int dm_task_get_read_ahead(struct dm_task *dmt, uint32_t *read_ahead);
int dm_task_secure_data(struct dm_task *dmt);
int dm_task_get_info(struct dm_task *dmt, struct dm_info *dmi);
int dm_task_get_driver_version(struct dm_task *dmt, char *ver, size_t ver_sz);
struct dm_deps *dm_task_get_deps(struct dm_task *dmt);
struct dm_versions *dm_task_get_versions(struct dm_task *dmt);
struct dm_names *dm_task_get_names(struct dm_task *dmt);
int dm_task_update_nodes(void);
void *dm_get_next_target(struct dm_task *dmt, void *cur, uint64_t *startp,
uint64_t *lengthp, char **target_type, char **params);
uint32_t dm_get_major(void);
int dm_is_dm_major(uint32_t major);
const char *dm_dir(void);
void dm_udev_set_sync_support(int sync_udev);
int dm_task_set_cookie(struct dm_task *dmt, uint32_t *cookie,
uint16_t udev_flags);
int dm_udev_wait(uint32_t cookie);
void dm_lib_release(void);
int dm_log_init(dm_error_func_t fn);
int dm_log_init_verbose(int verbose);
int dm_task_set_uid(struct dm_task *dmt, uid_t uid);
int dm_task_set_gid(struct dm_task *dmt, gid_t gid);
int dm_task_set_mode(struct dm_task *dmt, mode_t mode);
int dm_task_no_flush(struct dm_task *dmt);
int dm_task_skip_lockfs(struct dm_task *dmt);
int dm_task_set_geometry(struct dm_task *dmt, const char *cylinders,
const char *heads, const char *sectors, const char *start);
void *dm_get_next_version(struct dm_task *dmt, void *cur,
const char **target_type, uint32_t *target_ver);
void *dm_get_next_dep(struct dm_task *dmt, void *cur, uint64_t *dep);
void *dm_get_next_name(struct dm_task *dmt, void *cur, const char **name,
uint64_t *dev);