All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/4]: Remove unnecessary flags from new vg_read() APIs and tools
@ 2009-07-07  4:24 Dave Wysochanski
  2009-07-07  4:24 ` [PATCH] Remove LOCK_KEEP and READ_CHECK_EXISTENCE from vgsplit Dave Wysochanski
  2009-07-07 21:17 ` [PATCH 0/4]: Remove unnecessary flags from new vg_read() APIs and tools Alasdair G Kergon
  0 siblings, 2 replies; 8+ messages in thread
From: Dave Wysochanski @ 2009-07-07  4:24 UTC (permalink / raw)
  To: lvm-devel


The following 4 patches remove various flags from the new vg_read() interface.
Many of these flags provided a useful stepping stone from where we were,
but now it would be good to simplify the API as much as possible.



^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH] Remove LOCK_KEEP and READ_CHECK_EXISTENCE from vgsplit.
  2009-07-07  4:24 [PATCH 0/4]: Remove unnecessary flags from new vg_read() APIs and tools Dave Wysochanski
@ 2009-07-07  4:24 ` Dave Wysochanski
  2009-07-07  4:24   ` [PATCH] Remove unneeded LOCK_KEEP from vg_read() interface Dave Wysochanski
  2009-07-07  9:01   ` [PATCH] Remove LOCK_KEEP and READ_CHECK_EXISTENCE from vgsplit Milan Broz
  2009-07-07 21:17 ` [PATCH 0/4]: Remove unnecessary flags from new vg_read() APIs and tools Alasdair G Kergon
  1 sibling, 2 replies; 8+ messages in thread
From: Dave Wysochanski @ 2009-07-07  4:24 UTC (permalink / raw)
  To: lvm-devel

Remove LOCK_KEEP and READ_CHECK_EXISTENCE from vgsplit.
These flags are no longer necessary.  We now check for existence
in a differnet function, and it is not necessary to keep the lock.
Removing these flags simplifies the new vg_read() interface.
After this patch, we can fully remove LOCK_KEEP.
READ_CHECK_EXISTENCE needs a bit more work before full removal.

Signed-off-by: Dave Wysochanski <dwysocha@redhat.com>
---
 tools/vgsplit.c |   12 +++++++-----
 1 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/tools/vgsplit.c b/tools/vgsplit.c
index 9cd90b8..0dc5bc4 100644
--- a/tools/vgsplit.c
+++ b/tools/vgsplit.c
@@ -342,11 +342,12 @@ int vgsplit(struct cmd_context *cmd, int argc, char **argv)
 		existing_vg = 1;
 		vg_to = vg_read_for_update(cmd, vg_name_to, NULL,
 					   READ_REQUIRE_RESIZEABLE |
-					   LOCK_NONBLOCKING | LOCK_KEEP |
-					   READ_CHECK_EXISTENCE);
+					   LOCK_NONBLOCKING);
 
-		if (vg_read_error(vg_to))
-			goto_bad;
+		if (vg_read_error(vg_to)) {
+			vg_release(vg_to);
+			goto bad2;
+		}
 
 		if (new_vg_option_specified(cmd)) {
 			log_error("Volume group \"%s\" exists, but new VG "
@@ -483,7 +484,8 @@ int vgsplit(struct cmd_context *cmd, int argc, char **argv)
 	r = ECMD_PROCESSED;
 
 bad:
-	unlock_and_release_vg(cmd, vg_from, vg_name_from);
 	unlock_and_release_vg(cmd, vg_to, vg_name_to);
+bad2:
+	unlock_and_release_vg(cmd, vg_from, vg_name_from);
 	return r;
 }
-- 
1.6.0.6



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH] Remove unneeded LOCK_KEEP from vg_read() interface.
  2009-07-07  4:24 ` [PATCH] Remove LOCK_KEEP and READ_CHECK_EXISTENCE from vgsplit Dave Wysochanski
@ 2009-07-07  4:24   ` Dave Wysochanski
  2009-07-07  4:24     ` [PATCH] Remove READ_CHECK_EXISTENCE and vg_might_exist() Dave Wysochanski
  2009-07-07  9:01   ` [PATCH] Remove LOCK_KEEP and READ_CHECK_EXISTENCE from vgsplit Milan Broz
  1 sibling, 1 reply; 8+ messages in thread
From: Dave Wysochanski @ 2009-07-07  4:24 UTC (permalink / raw)
  To: lvm-devel

Remove unneeded LOCK_KEEP from vg_read() interface.
Update comment to clarify cases where _vg_lock_and_read() may return
with an error but the lock held.  Would be nice to make the vg_read()
interface consistent with regards to lock held and error behavior.

Signed-off-by: Dave Wysochanski <dwysocha@redhat.com>
---
 lib/metadata/metadata-exported.h |    1 -
 lib/metadata/metadata.c          |    9 ++++++---
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/lib/metadata/metadata-exported.h b/lib/metadata/metadata-exported.h
index b9e9591..6e45698 100644
--- a/lib/metadata/metadata-exported.h
+++ b/lib/metadata/metadata-exported.h
@@ -113,7 +113,6 @@ struct pv_segment;
 
 /* FIXME Deduce these next requirements internally instead of having caller specify. */
 #define LOCK_NONBLOCKING	0x00000100U	/* Fail if not available immediately. */
-#define LOCK_KEEP		0x00000200U	/* Do not unlock upon read failure. */
 
 /* A meta-flag, useful with toollib for_each_* functions. */
 #define READ_FOR_UPDATE 	0x00100000U
diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c
index fda07be..3c25847 100644
--- a/lib/metadata/metadata.c
+++ b/lib/metadata/metadata.c
@@ -2793,7 +2793,6 @@ static vg_t *_vg_lock_and_read(struct cmd_context *cmd, const char *vg_name,
 			goto_bad;
 		}
 	}
-	
 
 	failure |= _vg_bad_status_bits(vg, status_flags);
 	if (failure)
@@ -2803,7 +2802,7 @@ static vg_t *_vg_lock_and_read(struct cmd_context *cmd, const char *vg_name,
 
 bad:
 	if (failure != (FAILED_NOTFOUND | READ_CHECK_EXISTENCE) &&
-	    !(misc_flags & LOCK_KEEP) && !already_locked)
+	    !already_locked)
 		unlock_vg(cmd, lock_name);
 
 	return _vg_make_handle(cmd, vg, failure);
@@ -2821,7 +2820,11 @@ bad:
  *    FAILED_RESIZEABLE
  *  - locking failed: FAILED_LOCKING
  *
- * On failures, all locks are released, unless LOCK_KEEP has been supplied.
+ * On failures, all locks are released, unless one of the following applies:
+ *  - failure == (FAILED_NOTFOUND | READ_CHECK_EXISTENCE)
+ *  - vgname_is_locked(lock_name) is true
+ * FIXME: remove the above 2 conditions if possible and make an error always
+ * release the lock.
  *
  * Volume groups are opened read-only unless flags contains READ_FOR_UPDATE.
  *
-- 
1.6.0.6



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH] Remove READ_CHECK_EXISTENCE and vg_might_exist().
  2009-07-07  4:24   ` [PATCH] Remove unneeded LOCK_KEEP from vg_read() interface Dave Wysochanski
@ 2009-07-07  4:24     ` Dave Wysochanski
  2009-07-07  4:24       ` [PATCH] Remove unneeded LOCK_NONBLOCKING from vg_read() API Dave Wysochanski
  0 siblings, 1 reply; 8+ messages in thread
From: Dave Wysochanski @ 2009-07-07  4:24 UTC (permalink / raw)
  To: lvm-devel

Remove READ_CHECK_EXISTENCE and vg_might_exist().
This flag and API is no longer used now that we have a separate
API to check for existence.

Signed-off-by: Dave Wysochanski <dwysocha@redhat.com>
---
 lib/metadata/metadata-exported.h |    2 -
 lib/metadata/metadata.c          |   47 +------------------------------------
 2 files changed, 2 insertions(+), 47 deletions(-)

diff --git a/lib/metadata/metadata-exported.h b/lib/metadata/metadata-exported.h
index 6e45698..33eeae0 100644
--- a/lib/metadata/metadata-exported.h
+++ b/lib/metadata/metadata-exported.h
@@ -109,7 +109,6 @@ struct pv_segment;
 #define READ_ALLOW_INCONSISTENT	0x00010000U
 #define READ_ALLOW_EXPORTED	0x00020000U
 #define READ_REQUIRE_RESIZEABLE	0x00040000U
-#define READ_CHECK_EXISTENCE	0x00080000U	/* Also used in vg->read_status */
 
 /* FIXME Deduce these next requirements internally instead of having caller specify. */
 #define LOCK_NONBLOCKING	0x00000100U	/* Fail if not available immediately. */
@@ -406,7 +405,6 @@ vg_t *vg_read_for_update(struct cmd_context *cmd, const char *vg_name,
  * Test validity of a VG handle.
  */
 uint32_t vg_read_error(vg_t *vg_handle);
-uint32_t vg_might_exist(vg_t *vg_handle);
 
 /* pe_start and pe_end relate to any existing data so that new metadata
 * areas can avoid overlap */
diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c
index 3c25847..25c2795 100644
--- a/lib/metadata/metadata.c
+++ b/lib/metadata/metadata.c
@@ -2754,9 +2754,6 @@ static vg_t *_vg_lock_and_read(struct cmd_context *cmd, const char *vg_name,
 	if (is_orphan_vg(vg_name))
 		status_flags &= ~LVM_WRITE;
 
-	if (misc_flags & READ_CHECK_EXISTENCE)
-		consistent = 0;
-
 	consistent_in = consistent;
 
 	/* If consistent == 1, we get NULL here if correction fails. */
@@ -2767,10 +2764,7 @@ static vg_t *_vg_lock_and_read(struct cmd_context *cmd, const char *vg_name,
 			goto_bad;
 		}
 
-		if (!(misc_flags & READ_CHECK_EXISTENCE))
-			log_error("Volume group \"%s\" not found", vg_name);
-		else
-			failure |= READ_CHECK_EXISTENCE;
+		log_error("Volume group \"%s\" not found", vg_name);
 
 		failure |= FAILED_NOTFOUND;
 		goto_bad;
@@ -2801,8 +2795,7 @@ static vg_t *_vg_lock_and_read(struct cmd_context *cmd, const char *vg_name,
 	return _vg_make_handle(cmd, vg, failure);
 
 bad:
-	if (failure != (FAILED_NOTFOUND | READ_CHECK_EXISTENCE) &&
-	    !already_locked)
+	if (!already_locked)
 		unlock_vg(cmd, lock_name);
 
 	return _vg_make_handle(cmd, vg, failure);
@@ -2821,7 +2814,6 @@ bad:
  *  - locking failed: FAILED_LOCKING
  *
  * On failures, all locks are released, unless one of the following applies:
- *  - failure == (FAILED_NOTFOUND | READ_CHECK_EXISTENCE)
  *  - vgname_is_locked(lock_name) is true
  * FIXME: remove the above 2 conditions if possible and make an error always
  * release the lock.
@@ -2830,12 +2822,6 @@ bad:
  *
  * Checking for VG existence:
  *
- * If READ_CHECK_EXISTENCE is set in flags, if the VG exists, a non-NULL struct
- * volume_group will be returned every time, but if it has INCONSISTENT_VG set,
- * the other fields will be uninitialized.  You must check for INCONSISTENT_VG
- * if passing READ_CHECK_EXISTENCE.  You also must not use it if it has
- * INCONSISTENT_VG set.
- *
  * FIXME: We want vg_read to attempt automatic recovery after acquiring a
  * temporary write lock: if that fails, we bail out as usual, with failed &
  * FAILED_INCONSISTENT. If it works, we are good to go. Code that's been in
@@ -2878,45 +2864,16 @@ vg_t *vg_read_for_update(struct cmd_context *cmd, const char *vg_name,
 
 /*
  * Test the validity of a VG handle returned by vg_read() or vg_read_for_update().
- *
- * If READ_CHECK_EXISTENCE was supplied the non-existence of the volume group
- * is not considered an error.
- *
- * !vg_read_error() && vg_might_exist() => valid handle to VG.
- * vg_read_error() && vg_might_exist() => handle invalid, but VG might
- *					  exist but cannot be read.
- * !vg_read_error() && !vg_might_exist() => the VG does not exist
- * vg_read_error() && !vg_might_exist() is impossible.
  */
 uint32_t vg_read_error(vg_t *vg_handle)
 {
 	if (!vg_handle)
 		return FAILED_ALLOCATION;
 
-	if (vg_handle->read_status & READ_CHECK_EXISTENCE)
-		return vg_handle->read_status &
-		       ~(READ_CHECK_EXISTENCE | FAILED_NOTFOUND);
-
 	return vg_handle->read_status;
 }
 
 /*
- * Returns true if the volume group already exists.
- * If unsure, it will return true. It might exist but the read failed
- * for some other reason.
- */
-uint32_t vg_might_exist(vg_t *vg_handle)
-{
-	if (!vg_handle)
-		return 1;
-
-	if (vg_handle->read_status == (FAILED_NOTFOUND | READ_CHECK_EXISTENCE))
-		return 0;
-
-	return 1;
-}
-
-/*
  * Lock a vgname and/or check for existence.
  * Takes a WRITE lock on the vgname before scanning.
  * If scanning fails or vgname found, release the lock.
-- 
1.6.0.6



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH] Remove unneeded LOCK_NONBLOCKING from vg_read() API.
  2009-07-07  4:24     ` [PATCH] Remove READ_CHECK_EXISTENCE and vg_might_exist() Dave Wysochanski
@ 2009-07-07  4:24       ` Dave Wysochanski
  0 siblings, 0 replies; 8+ messages in thread
From: Dave Wysochanski @ 2009-07-07  4:24 UTC (permalink / raw)
  To: lvm-devel

Remove unneeded LOCK_NONBLOCKING from vg_read() API and tools that
use it.  We no longer need this flag anywhere since we now automatically
set LCK_NONBLOCK inside lock_vol() if vgs_locked().
For further details, see:
commit d52b3fd3fe2006e2d13e42f8518b6512bff03710
Author: Dave Wysochanski <dwysocha@redhat.com>
Date:   Wed May 13 13:02:52 2009 +0000

    Remove NON_BLOCKING lock flag from tools and set a policy to auto-set.

    As a simplification to the tools and further liblvm, this patch pushes
    the setting of NON_BLOCKING lock flag inside the lock_vol() call.
    The policy we set is if any existing VGs are currently locked, we
    set the NON_BLOCKING flag.

At some point it may make sense to add this flag back if we get an
RFE from a liblvm user, but for now let's keep it as simple as
possible.

Signed-off-by: Dave Wysochanski <dwysocha@redhat.com>
---
 lib/metadata/metadata-exported.h |    3 ---
 lib/metadata/metadata.c          |    3 ---
 tools/vgextend.c                 |    2 +-
 tools/vgmerge.c                  |    3 +--
 tools/vgreduce.c                 |    2 +-
 tools/vgremove.c                 |    2 +-
 tools/vgsplit.c                  |    3 +--
 7 files changed, 5 insertions(+), 13 deletions(-)

diff --git a/lib/metadata/metadata-exported.h b/lib/metadata/metadata-exported.h
index 33eeae0..e49aa9c 100644
--- a/lib/metadata/metadata-exported.h
+++ b/lib/metadata/metadata-exported.h
@@ -110,9 +110,6 @@ struct pv_segment;
 #define READ_ALLOW_EXPORTED	0x00020000U
 #define READ_REQUIRE_RESIZEABLE	0x00040000U
 
-/* FIXME Deduce these next requirements internally instead of having caller specify. */
-#define LOCK_NONBLOCKING	0x00000100U	/* Fail if not available immediately. */
-
 /* A meta-flag, useful with toollib for_each_* functions. */
 #define READ_FOR_UPDATE 	0x00100000U
 
diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c
index 25c2795..449ac4c 100644
--- a/lib/metadata/metadata.c
+++ b/lib/metadata/metadata.c
@@ -2845,9 +2845,6 @@ vg_t *vg_read(struct cmd_context *cmd, const char *vg_name,
 	if (flags & READ_REQUIRE_RESIZEABLE)
 		status |= RESIZEABLE_VG;
 
-	if (flags & LOCK_NONBLOCKING)
-		lock_flags |= LCK_NONBLOCK;
-
 	return _vg_lock_and_read(cmd, vg_name, vgid, lock_flags, status, flags);
 }
 
diff --git a/tools/vgextend.c b/tools/vgextend.c
index 1000dc2..a08d4db 100644
--- a/tools/vgextend.c
+++ b/tools/vgextend.c
@@ -43,7 +43,7 @@ int vgextend(struct cmd_context *cmd, int argc, char **argv)
 
 	log_verbose("Checking for volume group \"%s\"", vg_name);
 	vg = vg_read_for_update(cmd, vg_name, NULL,
-				READ_REQUIRE_RESIZEABLE | LOCK_NONBLOCKING);
+				READ_REQUIRE_RESIZEABLE);
 	if (vg_read_error(vg)) {
 		vg_release(vg);
 		unlock_vg(cmd, VG_ORPHANS);
diff --git a/tools/vgmerge.c b/tools/vgmerge.c
index 4a9e377..37f6bd7 100644
--- a/tools/vgmerge.c
+++ b/tools/vgmerge.c
@@ -35,8 +35,7 @@ static int _vgmerge_single(struct cmd_context *cmd, const char *vg_name_to,
 	}
 
 	log_verbose("Checking for volume group \"%s\"", vg_name_from);
-	vg_from = vg_read_for_update(cmd, vg_name_from, NULL,
-				     LOCK_NONBLOCKING);
+	vg_from = vg_read_for_update(cmd, vg_name_from, NULL, 0);
 	if (vg_read_error(vg_from)) {
 		vg_release(vg_from);
 		unlock_and_release_vg(cmd, vg_to, vg_name_to);
diff --git a/tools/vgreduce.c b/tools/vgreduce.c
index 44010e3..b3b6dba 100644
--- a/tools/vgreduce.c
+++ b/tools/vgreduce.c
@@ -424,7 +424,7 @@ static int _vgreduce_single(struct cmd_context *cmd, struct volume_group *vg,
 	vg->extent_count -= pv_pe_count(pv);
 
 	orphan_vg = vg_read_for_update(cmd, vg->fid->fmt->orphan_vg_name,
-				       NULL, LOCK_NONBLOCKING);
+				       NULL, 0);
 
 	if (vg_read_error(orphan_vg))
 		goto bad;
diff --git a/tools/vgremove.c b/tools/vgremove.c
index 5956075..ff35720 100644
--- a/tools/vgremove.c
+++ b/tools/vgremove.c
@@ -41,7 +41,7 @@ int vgremove(struct cmd_context *cmd, int argc, char **argv)
 	}
 
 	ret = process_each_vg(cmd, argc, argv,
-			      READ_FOR_UPDATE | LOCK_NONBLOCKING,
+			      READ_FOR_UPDATE,
 			      NULL, &vgremove_single);
 
 	unlock_vg(cmd, VG_ORPHANS);
diff --git a/tools/vgsplit.c b/tools/vgsplit.c
index 0dc5bc4..6d6090b 100644
--- a/tools/vgsplit.c
+++ b/tools/vgsplit.c
@@ -341,8 +341,7 @@ int vgsplit(struct cmd_context *cmd, int argc, char **argv)
 	if (rc == FAILED_EXIST) {
 		existing_vg = 1;
 		vg_to = vg_read_for_update(cmd, vg_name_to, NULL,
-					   READ_REQUIRE_RESIZEABLE |
-					   LOCK_NONBLOCKING);
+					   READ_REQUIRE_RESIZEABLE);
 
 		if (vg_read_error(vg_to)) {
 			vg_release(vg_to);
-- 
1.6.0.6



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH] Remove LOCK_KEEP and READ_CHECK_EXISTENCE from vgsplit.
  2009-07-07  4:24 ` [PATCH] Remove LOCK_KEEP and READ_CHECK_EXISTENCE from vgsplit Dave Wysochanski
  2009-07-07  4:24   ` [PATCH] Remove unneeded LOCK_KEEP from vg_read() interface Dave Wysochanski
@ 2009-07-07  9:01   ` Milan Broz
  2009-07-07 13:11     ` Dave Wysochanski
  1 sibling, 1 reply; 8+ messages in thread
From: Milan Broz @ 2009-07-07  9:01 UTC (permalink / raw)
  To: lvm-devel

Dave Wysochanski wrote:
> diff --git a/tools/vgsplit.c b/tools/vgsplit.c
> index 9cd90b8..0dc5bc4 100644
> --- a/tools/vgsplit.c
> +++ b/tools/vgsplit.c
> @@ -342,11 +342,12 @@ int vgsplit(struct cmd_context *cmd, int argc, char **argv)
>  		existing_vg = 1;
>  		vg_to = vg_read_for_update(cmd, vg_name_to, NULL,
>  					   READ_REQUIRE_RESIZEABLE |
> -					   LOCK_NONBLOCKING | LOCK_KEEP |
> -					   READ_CHECK_EXISTENCE);
> +					   LOCK_NONBLOCKING);
>  
> -		if (vg_read_error(vg_to))
> -			goto_bad;
> +		if (vg_read_error(vg_to)) {

	but vg_name_to is locked by vg_lock_newname() previously?
	so unlock_and_release here?

	also now code missing stack; (note goto_bad before)

> +			vg_release(vg_to);
> +			goto bad2;
> +		}
>  


Milan



^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH] Remove LOCK_KEEP and READ_CHECK_EXISTENCE from vgsplit.
  2009-07-07  9:01   ` [PATCH] Remove LOCK_KEEP and READ_CHECK_EXISTENCE from vgsplit Milan Broz
@ 2009-07-07 13:11     ` Dave Wysochanski
  0 siblings, 0 replies; 8+ messages in thread
From: Dave Wysochanski @ 2009-07-07 13:11 UTC (permalink / raw)
  To: lvm-devel

On Tue, 2009-07-07 at 11:01 +0200, Milan Broz wrote:
> Dave Wysochanski wrote:
> > diff --git a/tools/vgsplit.c b/tools/vgsplit.c
> > index 9cd90b8..0dc5bc4 100644
> > --- a/tools/vgsplit.c
> > +++ b/tools/vgsplit.c
> > @@ -342,11 +342,12 @@ int vgsplit(struct cmd_context *cmd, int argc, char **argv)
> >  		existing_vg = 1;
> >  		vg_to = vg_read_for_update(cmd, vg_name_to, NULL,
> >  					   READ_REQUIRE_RESIZEABLE |
> > -					   LOCK_NONBLOCKING | LOCK_KEEP |
> > -					   READ_CHECK_EXISTENCE);
> > +					   LOCK_NONBLOCKING);
> >  
> > -		if (vg_read_error(vg_to))
> > -			goto_bad;
> > +		if (vg_read_error(vg_to)) {
> 
> 	but vg_name_to is locked by vg_lock_newname() previously?
> 	so unlock_and_release here?
> 

No - if vg_lock_newname() returns any failure code, it releases the
lock.  In this case it is FAILED_EXIST.


> 	also now code missing stack; (note goto_bad before)
> 

Right - good catch.


> > +			vg_release(vg_to);
> > +			goto bad2;
> > +		}
> >  
> 
> 
> Milan
> 
> --
> lvm-devel mailing list
> lvm-devel at redhat.com
> https://www.redhat.com/mailman/listinfo/lvm-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Remove-LOCK_KEEP-and-READ_CHECK_EXISTENCE-from-vgspl.patch
Type: text/x-patch
Size: 1676 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/lvm-devel/attachments/20090707/261d7dbd/attachment.bin>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 0/4]: Remove unnecessary flags from new vg_read() APIs and tools
  2009-07-07  4:24 [PATCH 0/4]: Remove unnecessary flags from new vg_read() APIs and tools Dave Wysochanski
  2009-07-07  4:24 ` [PATCH] Remove LOCK_KEEP and READ_CHECK_EXISTENCE from vgsplit Dave Wysochanski
@ 2009-07-07 21:17 ` Alasdair G Kergon
  1 sibling, 0 replies; 8+ messages in thread
From: Alasdair G Kergon @ 2009-07-07 21:17 UTC (permalink / raw)
  To: lvm-devel

On Tue, Jul 07, 2009 at 12:24:20AM -0400, Dave Wysochanski wrote:
> The following 4 patches remove various flags from the new vg_read() interface.
> Many of these flags provided a useful stepping stone from where we were,
> but now it would be good to simplify the API as much as possible.
 
Ack.

Alasdair.



^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2009-07-07 21:17 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-07  4:24 [PATCH 0/4]: Remove unnecessary flags from new vg_read() APIs and tools Dave Wysochanski
2009-07-07  4:24 ` [PATCH] Remove LOCK_KEEP and READ_CHECK_EXISTENCE from vgsplit Dave Wysochanski
2009-07-07  4:24   ` [PATCH] Remove unneeded LOCK_KEEP from vg_read() interface Dave Wysochanski
2009-07-07  4:24     ` [PATCH] Remove READ_CHECK_EXISTENCE and vg_might_exist() Dave Wysochanski
2009-07-07  4:24       ` [PATCH] Remove unneeded LOCK_NONBLOCKING from vg_read() API Dave Wysochanski
2009-07-07  9:01   ` [PATCH] Remove LOCK_KEEP and READ_CHECK_EXISTENCE from vgsplit Milan Broz
2009-07-07 13:11     ` Dave Wysochanski
2009-07-07 21:17 ` [PATCH 0/4]: Remove unnecessary flags from new vg_read() APIs and tools Alasdair G Kergon

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.