[lxc-devel] [PATCH 2/2] nbd: give paritions some time to show up
Serge Hallyn
serge.hallyn at ubuntu.com
Thu May 22 20:50:08 UTC 2014
If you attach a file to /dev/nbd0, it may take some time for /dev/nbd0p1
to show up. Allow up to 5 seconds in that case, then bail.
Signed-off-by: Serge Hallyn <serge.hallyn at ubuntu.com>
---
src/lxc/bdev.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/src/lxc/bdev.c b/src/lxc/bdev.c
index 20c4b55..c0051e6 100644
--- a/src/lxc/bdev.c
+++ b/src/lxc/bdev.c
@@ -2631,6 +2631,19 @@ static int nbd_get_partition(const char *src)
return *p - '0';
}
+static bool wait_for_partition(const char *path)
+{
+ int count = 0;
+ while (count < 5) {
+ if (file_exists(path))
+ return true;
+ sleep(1);
+ count++;
+ }
+ ERROR("Device %s did not show up after 5 seconds", path);
+ return false;
+}
+
static int nbd_mount(struct bdev *bdev)
{
int ret = -1, partition;
@@ -2654,6 +2667,12 @@ static int nbd_mount(struct bdev *bdev)
ERROR("Error setting up nbd device path");
return ret;
}
+
+ /* It might take awhile for the partition files to show up */
+ if (partition) {
+ if (!wait_for_partition(path))
+ return -2;
+ }
ret = mount_unknown_fs(path, bdev->dest, bdev->mntopts);
if (ret < 0)
ERROR("Error mounting %s", bdev->src);
--
2.0.0.rc0
More information about the lxc-devel
mailing list