diff options
author | David Teigland <teigland@redhat.com> | 2016-02-23 15:44:14 -0600 |
---|---|---|
committer | David Teigland <teigland@redhat.com> | 2016-02-23 15:45:25 -0600 |
commit | e79325308454814d968dd3e06cd261a269716675 (patch) | |
tree | 45c6d88b0f9135389e24856dd700e7883d05f3e2 | |
parent | 79809d6cdc3a1e4dfb4466fc0e10040bd069211d (diff) | |
download | lvm2-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.c | 6 |
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; |