All of lore.kernel.org
 help / color / mirror / Atom feed
From: zkabelac@sourceware.org <zkabelac@sourceware.org>
To: lvm-devel@redhat.com
Subject: LVM2 ./WHATS_NEW lib/activate/dev_manager.c
Date: 21 May 2010 14:47:59 -0000	[thread overview]
Message-ID: <20100521144759.3751.qmail@sourceware.org> (raw)

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	zkabelac at sourceware.org	2010-05-21 14:47:59

Modified files:
	.              : WHATS_NEW 
	lib/activate   : dev_manager.c 

Log message:
	Replicator: update _create_partial_dtree()
	
	Adding function _add_partial_replicator_to_dtree() to create
	partial tree for Replicator target.
	
	Using dm_tree_node_set_presuspend_node() for Replicator.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.1589&r2=1.1590
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/activate/dev_manager.c.diff?cvsroot=lvm2&r1=1.191&r2=1.192

--- LVM2/WHATS_NEW	2010/05/21 14:34:01	1.1589
+++ LVM2/WHATS_NEW	2010/05/21 14:47:58	1.1590
@@ -1,5 +1,6 @@
 Version 2.02.67 -
 ===============================
+  Add _add_partial_replicator_to_dtree().
   Activation code read and releases also remote VGs (Replicator).
   Check for missing VGs before taking lock_vol (Replicator).
   Update process_each_lv_in_vg() to use cmd_vg structure.
--- LVM2/lib/activate/dev_manager.c	2010/05/14 12:39:52	1.191
+++ LVM2/lib/activate/dev_manager.c	2010/05/21 14:47:59	1.192
@@ -865,6 +865,84 @@
 }
 
 /*
+ * Add replicator devices
+ *
+ * Using _add_dev_to_dtree() directly instead of _add_lv_to_dtree()
+ * to avoid extra checks with extensions.
+ */
+static int _add_partial_replicator_to_dtree(struct dev_manager *dm,
+					    struct dm_tree *dtree,
+					    struct logical_volume *lv)
+{
+	struct logical_volume *rlv = first_seg(lv)->replicator;
+	struct replicator_device *rdev;
+	struct replicator_site *rsite;
+	struct dm_tree_node *rep_node, *rdev_node;
+	const char *uuid;
+
+	if (!lv_is_active_replicator_dev(lv)) {
+		if (!_add_dev_to_dtree(dm, dtree, lv->rdevice->lv,
+				      NULL))
+			return_0;
+		return 1;
+	}
+
+	/* Add _rlog and replicator device */
+	if (!_add_dev_to_dtree(dm, dtree, first_seg(rlv)->rlog_lv, NULL))
+		return_0;
+
+	if (!_add_dev_to_dtree(dm, dtree, rlv, NULL))
+		return_0;
+
+	if (!(uuid = build_dm_uuid(dm->mem, rlv->lvid.s, NULL)))
+		return_0;
+
+	rep_node = dm_tree_find_node_by_uuid(dtree, uuid);
+
+	/* Add all related devices for replicator */
+	dm_list_iterate_items(rsite, &rlv->rsites)
+		dm_list_iterate_items(rdev, &rsite->rdevices) {
+			if (rsite->state == REPLICATOR_STATE_ACTIVE) {
+				/* Add _rimage LV */
+				if (!_add_dev_to_dtree(dm, dtree, rdev->lv, NULL))
+					return_0;
+
+				/* Add replicator-dev LV, except of the already added one */
+				if ((lv != rdev->replicator_dev->lv) &&
+				    !_add_dev_to_dtree(dm, dtree,
+						       rdev->replicator_dev->lv, NULL))
+					return_0;
+
+				/* If replicator exists - try connect existing heads */
+				if (rep_node) {
+					uuid = build_dm_uuid(dm->mem,
+							     rdev->replicator_dev->lv->lvid.s,
+							     NULL);
+					if (!uuid)
+						return_0;
+
+					rdev_node = dm_tree_find_node_by_uuid(dtree, uuid);
+					if (rdev_node)
+						dm_tree_node_set_presuspend_node(rdev_node,
+										 rep_node);
+				}
+			}
+
+			if (!rdev->rsite->vg_name)
+				continue;
+
+			if (!_add_dev_to_dtree(dm, dtree, rdev->lv, NULL))
+				return_0;
+
+			if (rdev->slog &&
+			    !_add_dev_to_dtree(dm, dtree, rdev->slog, NULL))
+				return_0;
+		}
+
+	return 1;
+}
+
+/*
  * Add LV and any known dependencies
  */
 static int _add_lv_to_dtree(struct dev_manager *dm, struct dm_tree *dtree, struct logical_volume *lv)
@@ -883,6 +961,11 @@
 	    !_add_dev_to_dtree(dm, dtree, first_seg(lv)->log_lv, NULL))
 		return_0;
 
+	/* Adding LV head of replicator adds all other related devs */
+	if (lv_is_replicator_dev(lv) &&
+	    !_add_partial_replicator_to_dtree(dm, dtree, lv))
+		return_0;
+
 	return 1;
 }
 



             reply	other threads:[~2010-05-21 14:47 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-05-21 14:47 zkabelac [this message]
  -- strict thread matches above, loose matches on Subject: below --
2012-05-16 12:50 LVM2 ./WHATS_NEW lib/activate/dev_manager.c agk
2012-04-20 14:17 jbrassow
2012-03-05 14:15 zkabelac
2012-02-01 13:47 zkabelac
2012-01-28 20:12 zkabelac
2012-01-23 20:56 jbrassow
2012-01-20 21:56 snitzer
2011-12-21 12:59 zkabelac
2011-11-18 19:42 zkabelac
2011-10-11  8:59 zkabelac
2011-10-11  8:57 zkabelac
2011-08-11  4:18 jbrassow
2011-07-06  0:29 agk
2011-07-05 23:10 agk
2011-01-05 14:03 zkabelac
2010-12-08 19:26 agk
2010-10-25 10:37 agk
2010-10-24 17:36 snitzer
2010-08-26 14:21 jbrassow
2010-08-17  1:51 agk
2010-08-03 13:13 zkabelac
2010-05-24  9:01 zkabelac
2010-02-08 23:28 snitzer
2010-01-26  7:58 mbroz
2010-01-22 15:40 snitzer
2009-08-03 18:09 agk
2009-05-28  1:11 agk
2009-05-13 14:13 zkabelac
2008-12-19 15:23 mbroz
2008-06-05 12:45 agk
2007-05-14 11:27 mbroz
2007-03-08 19:58 agk
2006-11-20 16:45 agk

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100521144759.3751.qmail@sourceware.org \
    --to=zkabelac@sourceware.org \
    --cc=lvm-devel@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.