1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-03-24 14:50:34 +03:00

device_mapper: add new _dm_task_create_device_status

Introduce new function _dm_task_create_device_status for grabbing
status of device for better code sharing.
This commit is contained in:
Zdenek Kabelac 2018-06-23 23:02:24 +02:00
parent 739a213d2e
commit 4194fc9bbd

View File

@ -1382,20 +1382,14 @@ out:
return r;
}
static int _thin_pool_get_status(struct dm_tree_node *dnode,
struct dm_status_thin_pool *s)
static struct dm_task *_dm_task_create_device_status(uint32_t major, uint32_t minor)
{
struct dm_task *dmt;
int r = 0;
uint64_t start, length;
char *type = NULL;
char *params = NULL;
if (!(dmt = dm_task_create(DM_DEVICE_STATUS)))
return_0;
return_NULL;
if (!dm_task_set_major(dmt, dnode->info.major) ||
!dm_task_set_minor(dmt, dnode->info.minor)) {
if (!dm_task_set_major(dmt, major) || !dm_task_set_minor(dmt, minor)) {
log_error("Failed to set major minor.");
goto out;
}
@ -1406,6 +1400,26 @@ static int _thin_pool_get_status(struct dm_tree_node *dnode,
if (!dm_task_run(dmt))
goto_out;
return dmt;
out:
dm_task_destroy(dmt);
return NULL;
}
static int _thin_pool_get_status(struct dm_tree_node *dnode,
struct dm_status_thin_pool *s)
{
struct dm_task *dmt;
int r = 0;
uint64_t start, length;
char *type = NULL;
char *params = NULL;
if (!(dmt = _dm_task_create_device_status(dnode->info.major,
dnode->info.minor)))
return_0;
dm_get_next_target(dmt, NULL, &start, &length, &type, &params);
if (!type || (strcmp(type, "thin-pool") != 0)) {