mirror of
git://sourceware.org/git/lvm2.git
synced 2025-01-03 05:18:29 +03:00
Refactor the handles_missing_pv logic in lvchange.
This commit is contained in:
parent
68c31a2a36
commit
0da9500f13
@ -714,32 +714,31 @@ static int lvchange_single(struct cmd_context *cmd, struct logical_volume *lv,
|
|||||||
|
|
||||||
int lvchange(struct cmd_context *cmd, int argc, char **argv)
|
int lvchange(struct cmd_context *cmd, int argc, char **argv)
|
||||||
{
|
{
|
||||||
if (!arg_count(cmd, available_ARG) && !arg_count(cmd, contiguous_ARG)
|
int update = /* options other than -a, --refresh or --monitor */
|
||||||
&& !arg_count(cmd, permission_ARG) && !arg_count(cmd, readahead_ARG)
|
arg_count(cmd, contiguous_ARG) || arg_count(cmd, permission_ARG) ||
|
||||||
&& !arg_count(cmd, minor_ARG) && !arg_count(cmd, major_ARG)
|
arg_count(cmd, readahead_ARG) || arg_count(cmd, persistent_ARG) ||
|
||||||
&& !arg_count(cmd, persistent_ARG) && !arg_count(cmd, addtag_ARG)
|
arg_count(cmd, addtag_ARG) || arg_count(cmd, deltag_ARG) ||
|
||||||
&& !arg_count(cmd, deltag_ARG) && !arg_count(cmd, refresh_ARG)
|
arg_count(cmd, resync_ARG) || arg_count(cmd, alloc_ARG);
|
||||||
&& !arg_count(cmd, alloc_ARG) && !arg_count(cmd, monitor_ARG)
|
|
||||||
&& !arg_count(cmd, poll_ARG) && !arg_count(cmd, resync_ARG)) {
|
if (!update &&
|
||||||
|
!arg_count(cmd, available_ARG) && !arg_count(cmd, refresh_ARG) &&
|
||||||
|
!arg_count(cmd, monitor_ARG) && !arg_count(cmd, poll_ARG) &&
|
||||||
|
/* for persistent_ARG */
|
||||||
|
!arg_count(cmd, minor_ARG) && !arg_count(cmd, major_ARG)) {
|
||||||
log_error("Need 1 or more of -a, -C, -j, -m, -M, -p, -r, "
|
log_error("Need 1 or more of -a, -C, -j, -m, -M, -p, -r, "
|
||||||
"--resync, --refresh, --alloc, --addtag, --deltag, "
|
"--resync, --refresh, --alloc, --addtag, --deltag, "
|
||||||
"--monitor or --poll");
|
"--monitor or --poll");
|
||||||
return EINVALID_CMD_LINE;
|
return EINVALID_CMD_LINE;
|
||||||
}
|
}
|
||||||
|
|
||||||
int avail_only = /* i.e. only one of -a or --refresh is given */
|
|
||||||
!(arg_count(cmd, contiguous_ARG) || arg_count(cmd, permission_ARG) ||
|
|
||||||
arg_count(cmd, readahead_ARG) || arg_count(cmd, persistent_ARG) ||
|
|
||||||
arg_count(cmd, addtag_ARG) || arg_count(cmd, deltag_ARG) ||
|
|
||||||
arg_count(cmd, resync_ARG) || arg_count(cmd, alloc_ARG));
|
|
||||||
|
|
||||||
if ((arg_count(cmd, ignorelockingfailure_ARG) ||
|
if ((arg_count(cmd, ignorelockingfailure_ARG) ||
|
||||||
arg_count(cmd, sysinit_ARG)) && !avail_only) {
|
arg_count(cmd, sysinit_ARG)) && update) {
|
||||||
log_error("Only -a permitted with --ignorelockingfailure and --sysinit");
|
log_error("Only -a permitted with --ignorelockingfailure and --sysinit");
|
||||||
return EINVALID_CMD_LINE;
|
return EINVALID_CMD_LINE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (avail_only)
|
if (!update)
|
||||||
cmd->handles_missing_pvs = 1;
|
cmd->handles_missing_pvs = 1;
|
||||||
|
|
||||||
if (!argc) {
|
if (!argc) {
|
||||||
@ -769,6 +768,6 @@ int lvchange(struct cmd_context *cmd, int argc, char **argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
return process_each_lv(cmd, argc, argv,
|
return process_each_lv(cmd, argc, argv,
|
||||||
avail_only ? 0 : READ_FOR_UPDATE, NULL,
|
update ? READ_FOR_UPDATE : 0, NULL,
|
||||||
&lvchange_single);
|
&lvchange_single);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user