[lvm-devel] master - thin: do not check of empty pool with messages

Zdenek Kabelac zkabelac at fedoraproject.org
Tue Mar 11 23:34:18 UTC 2014


Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=4d64e91efde5335eeae6f2e0fcdf4992b054644a
Commit:        4d64e91efde5335eeae6f2e0fcdf4992b054644a
Parent:        1850a6e454ebbb54aae80a0ad4d5482ecdffcd28
Author:        Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate:    Tue Mar 11 22:54:33 2014 +0100
Committer:     Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Wed Mar 12 00:15:22 2014 +0100

thin: do not check of empty pool with messages

The empty pool is also the pool which has yet queued list of messages
and transaction_id == 1.

Problem is exposed when pool is created inactive.

lvcreate -L10 -T vg/pool -an
lvcreate -V10 -T vg/pool
---
 WHATS_NEW                  |    1 +
 lib/activate/dev_manager.c |    4 +++-
 2 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/WHATS_NEW b/WHATS_NEW
index 0fd0657..7814826 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
 Version 2.02.106 - 
 ====================================
+  Do not try to check empty pool with scheduled messages.
   Fix return value in pool_has_message() when quering for any message.
   Cleanup all client resources on clvmd exit.
   Use dm_zalloc to clear members of clvmd client struct.
diff --git a/lib/activate/dev_manager.c b/lib/activate/dev_manager.c
index 6b5f8c2..006588c 100644
--- a/lib/activate/dev_manager.c
+++ b/lib/activate/dev_manager.c
@@ -1790,7 +1790,9 @@ static int _thin_pool_register_callback(struct dev_manager *dm,
 	struct thin_cb_data *data;
 
 	/* Skip metadata testing for unused pool. */
-	if (!first_seg(lv)->transaction_id)
+	if (!first_seg(lv)->transaction_id ||
+	    ((first_seg(lv)->transaction_id == 1) &&
+	     pool_has_message(first_seg(lv), NULL, 0)))
 		return 1;
 
 	if (!(data = dm_pool_alloc(dm->mem, sizeof(*data)))) {




More information about the lvm-devel mailing list