[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