diff --git a/tools/lvconvert.c b/tools/lvconvert.c index 357a3ce97..5f5b55147 100644 --- a/tools/lvconvert.c +++ b/tools/lvconvert.c @@ -734,6 +734,7 @@ int lvconvert_poll(struct cmd_context *cmd, struct logical_volume *lv, */ char uuid[sizeof(lv->lvid)]; char lv_full_name[NAME_LEN]; + int is_thin, r; if (dm_snprintf(lv_full_name, sizeof(lv_full_name), "%s/%s", lv->vg->name, lv->name) < 0) { log_error(INTERNAL_ERROR "Name \"%s/%s\" is too long.", lv->vg->name, lv->name); @@ -742,14 +743,16 @@ int lvconvert_poll(struct cmd_context *cmd, struct logical_volume *lv, memcpy(uuid, &lv->lvid, sizeof(lv->lvid)); - if (lv_is_merging_origin(lv)) - return poll_daemon(cmd, lv_full_name, uuid, background, 0, - seg_is_thin_volume(find_snapshot(lv)) ? - &_lvconvert_thin_merge_fns : &_lvconvert_merge_fns, - "Merged"); + if (lv_is_merging_origin(lv)) { + is_thin = seg_is_thin_volume(find_snapshot(lv)); + r = poll_daemon(cmd, lv_full_name, uuid, background, 0, + is_thin ? &_lvconvert_thin_merge_fns : &_lvconvert_merge_fns, + "Merged"); + } else + r = poll_daemon(cmd, lv_full_name, uuid, background, 0, + &_lvconvert_mirror_fns, "Converted"); - return poll_daemon(cmd, lv_full_name, uuid, background, 0, - &_lvconvert_mirror_fns, "Converted"); + return r; } static int _insert_lvconvert_layer(struct cmd_context *cmd,