Commit bfd0b144 by Serge Hallyn Committed by Stéphane Graber

nbd: give paritions some time to show up

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: 's avatarSerge Hallyn <serge.hallyn@ubuntu.com> Acked-by: 's avatarStéphane Graber <stgraber@ubuntu.com>
parent 35120d9c
......@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment