[lvm-devel] master - lvmlockd: fix sparse snapshot case
David Teigland
teigland at fedoraproject.org
Tue Feb 23 21:45:27 UTC 2016
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=e79325308454814d968dd3e06cd261a269716675
Commit: e79325308454814d968dd3e06cd261a269716675
Parent: 79809d6cdc3a1e4dfb4466fc0e10040bd069211d
Author: David Teigland <teigland at redhat.com>
AuthorDate: Tue Feb 23 15:44:14 2016 -0600
Committer: David Teigland <teigland at redhat.com>
CommitterDate: Tue Feb 23 15:45:25 2016 -0600
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.
---
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 e78e2cb..c55f2b5 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;
More information about the lvm-devel
mailing list