[lvm-devel] [PATCH 1 of 3] Handle failures of mirror devices while under snapshot origin (bug 613829)

Jonathan Brassow jbrassow at redhat.com
Sun Aug 15 22:28:45 UTC 2010


This patch makes it possible to monitor mirrors which may
be under a snapshot origin.

Signed-off-by: Jonathan Brassow <jbrassow at redhat.com>

Index: LVM2/lib/activate/activate.c
===================================================================
--- LVM2.orig/lib/activate/activate.c
+++ LVM2/lib/activate/activate.c
@@ -772,7 +772,8 @@ int monitor_dev_for_events(struct cmd_co
 			if (!monitor_dev_for_events(cmd, dm_list_struct_base(snh,
 				    struct lv_segment, origin_list)->cow, monitor))
 				r = 0;
-		return r;
+		if (!lv_is_mirrored(lv))
+			return r;
 	}
 
 	/*
Index: LVM2/lib/mirror/mirrored.c
===================================================================
--- LVM2.orig/lib/mirror/mirrored.c
+++ LVM2/lib/mirror/mirrored.c
@@ -631,18 +631,16 @@ static int _target_set_events(struct lv_
 			      int evmask __attribute__((unused)), int set)
 {
 	char *dso, *uuid;
-	struct logical_volume *lv;
-	struct volume_group *vg;
+	struct logical_volume *lv = seg->lv;
+	struct volume_group *vg = lv->vg;
+	char *suffix = lv_is_origin(lv) ? "real" : NULL;
 	struct dm_event_handler *dmevh;
 	int r;
 
-	lv = seg->lv;
-	vg = lv->vg;
-
 	if (!_get_mirror_dso_path(vg->cmd, &dso))
 		return_0;
 
-	if (!(uuid = build_dm_uuid(vg->cmd->mem, lv->lvid.s, NULL)))
+	if (!(uuid = build_dm_uuid(vg->cmd->mem, lv->lvid.s, suffix)))
 		return_0;
 
 	if (!(dmevh = _create_dm_event_handler(uuid, dso, DM_EVENT_ALL_ERRORS)))





More information about the lvm-devel mailing list