summaryrefslogtreecommitdiff
path: root/lib/locking/lvmlockd.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/locking/lvmlockd.c')
-rw-r--r--lib/locking/lvmlockd.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/lib/locking/lvmlockd.c b/lib/locking/lvmlockd.c
index a8e5aa184..f76e06c49 100644
--- a/lib/locking/lvmlockd.c
+++ b/lib/locking/lvmlockd.c
@@ -1810,6 +1810,9 @@ int lockd_init_lv_args(struct cmd_context *cmd, struct volume_group *vg,
}
dm_list_iterate_items(lvl, &vg->lvs) {
+ /* An exact match is the lv itself. */
+ if (!strcmp(lvl->lv->name, lv_name))
+ continue;
if (!strncmp(lvl->lv->name, lv_name, maxname)) {
log_error("LV name %s matches existing LV %s within %s character limit %d",
lv_name, lvl->lv->name, vg->lock_type, maxname);
@@ -1842,9 +1845,9 @@ int lockd_init_lv_args(struct cmd_context *cmd, struct volume_group *vg,
*/
int lockd_init_lv(struct cmd_context *cmd, struct volume_group *vg,
- struct lvcreate_params *lp)
+ const char *lv_name, struct lvcreate_params *lp)
{
- const char *lv_name;
+ const char *lv_name_lock;
int lock_type_num = lock_type_to_num(lp->lock_type);
if (cmd->lock_lv_mode && !strcmp(cmd->lock_lv_mode, "na"))
@@ -1923,7 +1926,7 @@ int lockd_init_lv(struct cmd_context *cmd, struct volume_group *vg,
} else if (!seg_is_thin_volume(lp) && lp->create_pool) {
/* Creating a thin pool only. */
- lv_name = lp->pool_name;
+ lv_name_lock = lp->pool_name;
} else {
log_error("Unknown thin options for lock init.");
@@ -1932,10 +1935,10 @@ int lockd_init_lv(struct cmd_context *cmd, struct volume_group *vg,
} else {
/* Creating a normal lv. */
- lv_name = lp->lv_name;
+ lv_name_lock = lv_name;
}
- return lockd_init_lv_args(cmd, vg, lv_name, lp->lock_type, &lp->lock_args);
+ return lockd_init_lv_args(cmd, vg, lv_name_lock, lp->lock_type, &lp->lock_args);
}
/* lvremove */