diff options
author | Alasdair Kergon <agk@redhat.com> | 2004-03-26 21:24:03 +0000 |
---|---|---|
committer | Alasdair Kergon <agk@redhat.com> | 2004-03-26 21:24:03 +0000 |
commit | 71b9fadf6534db6ac64bca62a69fa68105dd0a78 (patch) | |
tree | a805a0e62c6bf6f0d3a4c181f902c6f23cca162b /tools/lvchange.c | |
parent | f22969328bf1d4354fba1bdeb2c28067e92f5f56 (diff) | |
download | lvm2-71b9fadf6534db6ac64bca62a69fa68105dd0a78.tar.gz lvm2-71b9fadf6534db6ac64bca62a69fa68105dd0a78.tar.xz lvm2-71b9fadf6534db6ac64bca62a69fa68105dd0a78.zip |
lvchange --refresh
Diffstat (limited to 'tools/lvchange.c')
-rw-r--r-- | tools/lvchange.c | 21 |
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; } |