Skip to content

Commit

Permalink
nbd: give paritions some time to show up
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
hallyn authored and stgraber committed May 25, 2014
1 parent 35120d9 commit bfd0b14
Showing 1 changed file with 19 additions and 0 deletions.
19 changes: 19 additions & 0 deletions src/lxc/bdev.c
Expand Up @@ -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;
Expand All @@ -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);
Expand Down

0 comments on commit bfd0b14

Please sign in to comment.