public inbox for lvm2-cvs@sourceware.org
help / color / mirror / Atom feed
From: zkabelac@sourceware.org
To: lvm-devel@redhat.com, lvm2-cvs@sourceware.org
Subject: LVM2/lib/metadata metadata-exported.h thin_manip.c
Date: Thu, 03 Nov 2011 14:54:00 -0000	[thread overview]
Message-ID: <20111103145403.30173.qmail@sourceware.org> (raw)

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	zkabelac@sourceware.org	2011-11-03 14:53:58

Modified files:
	lib/metadata   : metadata-exported.h thin_manip.c 

Log message:
	Thin genering update_pool_lv function
	
	Function to trigger pool message passing via resume,
	or resize of the pool itself independently on other thins.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata-exported.h.diff?cvsroot=lvm2&r1=1.219&r2=1.220
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/thin_manip.c.diff?cvsroot=lvm2&r1=1.19&r2=1.20

--- LVM2/lib/metadata/metadata-exported.h	2011/10/30 22:01:39	1.219
+++ LVM2/lib/metadata/metadata-exported.h	2011/11/03 14:53:58	1.220
@@ -560,6 +560,8 @@
 
 int detach_pool_messages(struct logical_volume *pool_lv);
 
+int update_pool_lv(struct logical_volume *lv, int activate);
+
 /*
  * Activation options
  */
--- LVM2/lib/metadata/thin_manip.c	2011/11/03 14:38:36	1.19
+++ LVM2/lib/metadata/thin_manip.c	2011/11/03 14:53:58	1.20
@@ -317,3 +317,43 @@
 
 	return 1;
 }
+
+int update_pool_lv(struct logical_volume *lv, int activate)
+{
+	if (!lv_is_thin_pool(lv)) {
+		log_error(INTERNAL_ERROR "Updated LV %s is not pool.", lv->name);
+		return 0;
+	}
+
+	if (activate) {
+		/* If the pool was not yet activated, do it */
+		if (!lv_is_active(lv) &&
+		    !activate_lv_excl(lv->vg->cmd, lv)) {
+			log_error("Failed to activate %s.", lv->name);
+			return 0;
+		}
+		/* If already active, do suspend resume
+		 *
+		 * TODO: Support pool resume without suspend,
+		 * since the real suspend is not needed here
+		 */
+		else if (!suspend_lv(lv->vg->cmd, lv)) {
+			log_error("Failed to suspend %s.", lv->name);
+			return 0;
+		} else if (!resume_lv(lv->vg->cmd, lv)) {
+			log_error("Failed to resume %s.", lv->name);
+			return 0;
+		}
+	}
+
+	if (!dm_list_empty(&first_seg(lv)->thin_messages)) {
+		dm_list_init(&first_seg(lv)->thin_messages);
+
+		if (!vg_write(lv->vg) || !vg_commit(lv->vg))
+			return_0;
+
+		backup(lv->vg);
+	}
+
+	return 1;
+}


             reply	other threads:[~2011-11-03 14:54 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-03 14:54 zkabelac [this message]
2011-11-03 14:57 zkabelac

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=20111103145403.30173.qmail@sourceware.org \
    --to=zkabelac@sourceware.org \
    --cc=lvm-devel@redhat.com \
    --cc=lvm2-cvs@sourceware.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).