[buildd-tools-devel] [PATCH 04/11] [block-device-base] Don't lock union block devices

Jan-Marek Glogowski glogow at fbihome.de
Mon Aug 10 18:12:13 UTC 2009


Don't lock the device, if it's used for a union mount, otherwise
it's impossible to start multiple parallel sessions.
---
 sbuild/sbuild-chroot-block-device-base.cc |   14 ++++++++++++++
 1 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/sbuild/sbuild-chroot-block-device-base.cc b/sbuild/sbuild-chroot-block-device-base.cc
index f960fa4..4fcc5f2 100644
--- a/sbuild/sbuild-chroot-block-device-base.cc
+++ b/sbuild/sbuild-chroot-block-device-base.cc
@@ -21,6 +21,9 @@
 #include "sbuild-chroot-block-device.h"
 #include "sbuild-chroot-lvm-snapshot.h"
 #include "sbuild-chroot-facet-mountable.h"
+#ifdef SBUILD_FEATURE_UNION
+#include "sbuild-chroot-facet-union.h"
+#endif // SBUILD_FEATURE_UNION
 #include "sbuild-format-detail.h"
 #include "sbuild-lock.h"
 #include "sbuild-util.h"
@@ -130,6 +133,17 @@ chroot_block_device_base::setup_lock (chroot::setup_type type,
 	}
       else
 	{
+#ifdef SBUILD_FEATURE_UNION
+	  /* We don't lock the device if union is configured. */
+	  const chroot *base = dynamic_cast<const chroot *>(this);
+	  assert(base);
+	  chroot_facet_union::const_ptr puni
+	    (base->get_facet<chroot_facet_union>());
+	  assert(puni);
+	  if (puni->get_union_configured())
+	    return;
+#endif
+
 	  sbuild::device_lock dlock(this->device);
 	  if (lock)
 	    {
-- 
1.6.4




More information about the Buildd-tools-devel mailing list