if (!lv_is_cow(cow)) {
log_error("%s/%s is not a snapshot.", vg->name, cow->name);
- return ECMD_FAILED;
+ return 0;
}
if (lv_is_origin(cow) || lv_is_external_origin(cow)) {
log_error("Unable to split LV %s/%s that is a snapshot origin.", vg->name, cow->name);
- return ECMD_FAILED;
+ return 0;
}
if (lv_is_merging_cow(cow)) {
log_error("Unable to split off snapshot %s/%s being merged into its origin.", vg->name, cow->name);
- return ECMD_FAILED;
+ return 0;
}
if (lv_is_virtual_origin(origin_from_cow(cow))) {
log_error("Unable to split off snapshot %s/%s with virtual origin.", vg->name, cow->name);
- return ECMD_FAILED;
+ return 0;
}
if (lv_is_thin_pool(cow) || lv_is_pool_metadata_spare(cow)) {
log_error("Unable to split off LV %s/%s needed by thin volume(s).", vg->name, cow->name);
- return ECMD_FAILED;
+ return 0;
}
if (!(vg->fid->fmt->features & FMT_MDAS)) {
log_error("Unable to split off snapshot %s/%s using old LVM1-style metadata.", vg->name, cow->name);
- return ECMD_FAILED;
+ return 0;
}
if (!vg_check_status(vg, LVM_WRITE))
- return_ECMD_FAILED;
+ return_0;
if (lv_is_pvmove(cow) || lv_is_mirror_type(cow) || lv_is_raid_type(cow) || lv_is_thin_type(cow)) {
log_error("LV %s/%s type is unsupported with --splitsnapshot.", vg->name, cow->name);
- return ECMD_FAILED;
+ return 0;
}
if (lv_is_active_locally(cow)) {
if (!lv_check_not_in_use(cow))
- return_ECMD_FAILED;
+ return_0;
if ((lp->force == PROMPT) && !lp->yes &&
lv_is_visible(cow) &&
if (yes_no_prompt("Do you really want to split off active "
"logical volume %s? [y/n]: ", cow->name) == 'n') {
log_error("Logical volume %s not split.", cow->name);
- return ECMD_FAILED;
+ return 0;
}
}
}
if (!archive(vg))
- return_ECMD_FAILED;
+ return_0;
log_verbose("Splitting snapshot %s/%s from its origin.", vg->name, cow->name);
if (!vg_remove_snapshot(cow))
- return_ECMD_FAILED;
+ return_0;
backup(vg);
log_print_unless_silent("Logical Volume %s/%s split from its origin.", vg->name, cow->name);
- return ECMD_PROCESSED;
+ return 1;
}
return ECMD_FAILED;
}
- if (lp->splitsnapshot)
- return _lvconvert_splitsnapshot(cmd, lv, lp);
+ if (lp->splitsnapshot) {
+ if (!_lvconvert_splitsnapshot(cmd, lv, lp))
+ return_ECMD_FAILED;
+ return ECMD_PROCESSED;
+ }
if (lp->splitcache) {
if (!_lvconvert_splitcache(cmd, lv, lp))