summaryrefslogtreecommitdiffstats
path: root/tools/lvchange.c
diff options
context:
space:
mode:
authorAlasdair Kergon <agk@redhat.com>2004-03-26 21:24:03 +0000
committerAlasdair Kergon <agk@redhat.com>2004-03-26 21:24:03 +0000
commit71b9fadf6534db6ac64bca62a69fa68105dd0a78 (patch)
treea805a0e62c6bf6f0d3a4c181f902c6f23cca162b /tools/lvchange.c
parentf22969328bf1d4354fba1bdeb2c28067e92f5f56 (diff)
downloadlvm2-71b9fadf6534db6ac64bca62a69fa68105dd0a78.tar.gz
lvm2-71b9fadf6534db6ac64bca62a69fa68105dd0a78.tar.xz
lvm2-71b9fadf6534db6ac64bca62a69fa68105dd0a78.zip
lvchange --refresh
Diffstat (limited to 'tools/lvchange.c')
-rw-r--r--tools/lvchange.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/tools/lvchange.c b/tools/lvchange.c
index 75cfa219..3ee88e76 100644
--- a/tools/lvchange.c
+++ b/tools/lvchange.c
@@ -105,6 +105,16 @@ static int lvchange_availability(struct cmd_context *cmd,
return 1;
}
+static int lvchange_refresh(struct cmd_context *cmd, struct logical_volume *lv)
+{
+ log_verbose("Refreshing logical volume \"%s\" (if active)", lv->name);
+ if (!lock_vol(cmd, lv->lvid.s, LCK_LV_SUSPEND | LCK_LV_HOLD) ||
+ !unlock_vol(cmd, lv->lvid.s))
+ return 0;
+
+ return 1;
+}
+
static int lvchange_contiguous(struct cmd_context *cmd,
struct logical_volume *lv)
{
@@ -428,6 +438,10 @@ static int lvchange_single(struct cmd_context *cmd, struct logical_volume *lv,
if (!lvchange_availability(cmd, lv))
return ECMD_FAILED;
+ if (arg_count(cmd, refresh_ARG))
+ if (!lvchange_refresh(cmd, lv))
+ return ECMD_FAILED;
+
return ECMD_PROCESSED;
}
@@ -437,16 +451,17 @@ int lvchange(struct cmd_context *cmd, int argc, char **argv)
&& !arg_count(cmd, permission_ARG) && !arg_count(cmd, readahead_ARG)
&& !arg_count(cmd, minor_ARG) && !arg_count(cmd, major_ARG)
&& !arg_count(cmd, persistent_ARG) && !arg_count(cmd, addtag_ARG)
- && !arg_count(cmd, deltag_ARG)) {
+ && !arg_count(cmd, deltag_ARG) && !arg_count(cmd, refresh_ARG)) {
log_error("One or more of -a, -C, -j, -m, -M, -p, -r, "
- "--addtag or --deltag required");
+ "--refresh, --addtag or --deltag required");
return EINVALID_CMD_LINE;
}
if (arg_count(cmd, ignorelockingfailure_ARG) &&
(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, addtag_ARG) || arg_count(cmd, deltag_ARG) ||
+ arg_count(cmd, refresh_ARG))) {
log_error("Only -a permitted with --ignorelockingfailure");
return EINVALID_CMD_LINE;
}