summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Teigland <teigland@redhat.com>2016-02-23 15:44:14 -0600
committerDavid Teigland <teigland@redhat.com>2016-02-23 15:45:25 -0600
commite79325308454814d968dd3e06cd261a269716675 (patch)
tree45c6d88b0f9135389e24856dd700e7883d05f3e2
parent79809d6cdc3a1e4dfb4466fc0e10040bd069211d (diff)
downloadlvm2-e79325308454814d968dd3e06cd261a269716675.tar.gz
lvmlockd: fix sparse snapshot case
A snapshot can be created without a real origin LV in this case, so there's no lock to use.
-rw-r--r--lib/locking/lvmlockd.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/locking/lvmlockd.c b/lib/locking/lvmlockd.c
index e78e2cb46..c55f2b50d 100644
--- a/lib/locking/lvmlockd.c
+++ b/lib/locking/lvmlockd.c
@@ -2331,6 +2331,12 @@ int lockd_init_lv(struct cmd_context *cmd, struct volume_group *vg, struct logic
* represents itself and all associated cow snapshots.
*/
+ if (!lp->origin_name) {
+ /* Sparse LV case. We require a lock from the origin LV. */
+ log_error("Cannot create snapshot without origin LV in shared VG.");
+ return 0;
+ }
+
if (!(origin_lv = find_lv(vg, lp->origin_name))) {
log_error("Failed to find origin LV %s/%s", vg->name, lp->origin_name);
return 0;