summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Teigland <teigland@redhat.com>2015-06-16 10:18:16 -0500
committerDavid Teigland <teigland@redhat.com>2015-06-16 10:18:16 -0500
commitd5adec105626c39ffd6295c832dfda9189a1d85d (patch)
treef5d36459a00b0c5e52b1ff98d340a9ac778df836
parent1f318dbcee07a309a2b2e8f391897a744e68c477 (diff)
downloadlvm2-d5adec105626c39ffd6295c832dfda9189a1d85d.tar.gz
Add the 's' activation mode
Just as 'e' means activation with an exclusive lock, add an 's' to mean activation with a shared lock. This allows the existing but implicit behavior of '-ay' of clvm LVs to be specified explicitly. For local VGs, asy simply means ay, just like aey means ay. For local VGs, ay == aey == asy For clvm VGs, ay == asy, aey == aey, asy == asy
-rw-r--r--lib/metadata/lv.c4
-rw-r--r--lib/metadata/metadata-exported.h3
-rw-r--r--tools/lvmcmdline.c6
3 files changed, 11 insertions, 2 deletions
diff --git a/lib/metadata/lv.c b/lib/metadata/lv.c
index 10ce9063f..9a99c8d1c 100644
--- a/lib/metadata/lv.c
+++ b/lib/metadata/lv.c
@@ -953,7 +953,9 @@ exclusive:
if (!activate_lv_excl(cmd, lv))
return_0;
break;
- default: /* CHANGE_AY */
+ case CHANGE_ASY:
+ case CHANGE_AY:
+ default:
if (needs_exclusive || _lv_is_exclusive(lv))
goto exclusive;
log_verbose("Activating logical volume \"%s\".", lv->name);
diff --git a/lib/metadata/metadata-exported.h b/lib/metadata/metadata-exported.h
index 0e52153e6..b673af3d3 100644
--- a/lib/metadata/metadata-exported.h
+++ b/lib/metadata/metadata-exported.h
@@ -828,7 +828,8 @@ typedef enum activation_change {
CHANGE_AEY = 2, /* activate exclusively */
CHANGE_ALY = 3, /* activate locally */
CHANGE_ALN = 4, /* deactivate locally */
- CHANGE_AAY = 5 /* automatic activation */
+ CHANGE_AAY = 5, /* automatic activation */
+ CHANGE_ASY = 6 /* activate shared */
} activation_change_t;
/* Returns true, when change activates device */
diff --git a/tools/lvmcmdline.c b/tools/lvmcmdline.c
index 29fffb311..792dc41f8 100644
--- a/tools/lvmcmdline.c
+++ b/tools/lvmcmdline.c
@@ -286,6 +286,12 @@ int activation_arg(struct cmd_context *cmd __attribute__((unused)), struct arg_v
av->ui_value = CHANGE_AEY;
}
+ else if (!strcmp(av->value, "s") || !strcmp(av->value, "sy") ||
+ !strcmp(av->value, "ys")) {
+ av->i_value = CHANGE_ASY;
+ av->ui_value = CHANGE_ASY;
+ }
+
else if (!strcmp(av->value, "y")) {
av->i_value = CHANGE_AY;
av->ui_value = CHANGE_AY;