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@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
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;
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);