mirror of
git://sourceware.org/git/lvm2.git
synced 2025-03-28 02:50:41 +03:00
lvchange: Accept --cachepolicy.
This commit is contained in:
parent
f67e1fadb0
commit
c164f59631
@ -106,6 +106,7 @@ xx(lvchange,
|
||||
"\t[--addtag Tag]\n"
|
||||
"\t[--alloc AllocationPolicy]\n"
|
||||
"\t[-C|--contiguous y|n]\n"
|
||||
"\t[--cachepolicy policy=type] [--cachepolicy parameter=value]\n"
|
||||
"\t[--commandprofile ProfileName]\n"
|
||||
"\t[-d|--debug]\n"
|
||||
"\t[--deltag Tag]\n"
|
||||
@ -143,7 +144,7 @@ xx(lvchange,
|
||||
|
||||
activationmode_ARG, addtag_ARG, alloc_ARG, autobackup_ARG, activate_ARG,
|
||||
available_ARG,
|
||||
contiguous_ARG, deltag_ARG, discards_ARG, detachprofile_ARG, force_ARG,
|
||||
cachepolicy_ARG, contiguous_ARG, deltag_ARG, discards_ARG, detachprofile_ARG, force_ARG,
|
||||
ignorelockingfailure_ARG, ignoremonitoring_ARG, ignoreactivationskip_ARG,
|
||||
ignoreskippedcluster_ARG, major_ARG, metadataprofile_ARG, minor_ARG,
|
||||
monitor_ARG, minrecoveryrate_ARG, maxrecoveryrate_ARG, noudevsync_ARG,
|
||||
|
@ -605,6 +605,30 @@ static int lvchange_persistent(struct cmd_context *cmd,
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int lvchange_cachepolicy(struct cmd_context *cmd, struct logical_volume *lv)
|
||||
{
|
||||
struct dm_config_tree *policy = NULL;
|
||||
int r = 0;
|
||||
|
||||
if (!lv_is_cache(lv) && !lv_is_cache_pool(lv)) {
|
||||
log_error("LV %s is not a cache LV.", lv->name);
|
||||
log_error("Only cache or cache pool devices can have --cachepolicy set.");
|
||||
goto_out;
|
||||
}
|
||||
|
||||
if (!(policy = get_cachepolicy_params(cmd)))
|
||||
goto_out;
|
||||
if (!lv_cache_setpolicy(lv, policy))
|
||||
goto_out;
|
||||
if (!lv_update_and_reload(lv))
|
||||
goto_out;
|
||||
r = 1;
|
||||
out:
|
||||
if (policy)
|
||||
dm_config_destroy(policy);
|
||||
return r;
|
||||
}
|
||||
|
||||
static int lvchange_tag(struct cmd_context *cmd, struct logical_volume *lv, int arg)
|
||||
{
|
||||
if (!change_tag(cmd, NULL, lv, NULL, arg))
|
||||
@ -990,6 +1014,13 @@ static int _lvchange_single(struct cmd_context *cmd, struct logical_volume *lv,
|
||||
docmds++;
|
||||
}
|
||||
|
||||
if (arg_count(cmd, cachepolicy_ARG)) {
|
||||
if (!archive(lv->vg))
|
||||
return_ECMD_FAILED;
|
||||
doit += lvchange_cachepolicy(cmd, lv);
|
||||
docmds++;
|
||||
}
|
||||
|
||||
if (doit)
|
||||
log_print_unless_silent("Logical volume \"%s\" changed.", lv->name);
|
||||
|
||||
@ -1049,6 +1080,7 @@ int lvchange(struct cmd_context *cmd, int argc, char **argv)
|
||||
arg_count(cmd, maxrecoveryrate_ARG) ||
|
||||
arg_count(cmd, resync_ARG) ||
|
||||
arg_count(cmd, syncaction_ARG) ||
|
||||
arg_count(cmd, cachepolicy_ARG) ||
|
||||
arg_count(cmd, writebehind_ARG) ||
|
||||
arg_count(cmd, writemostly_ARG) ||
|
||||
arg_count(cmd, zero_ARG);
|
||||
|
Loading…
x
Reference in New Issue
Block a user