Skip to content

Commit

Permalink
storage: prefix all rbd paths
Browse files Browse the repository at this point in the history
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
  • Loading branch information
Christian Brauner committed Jul 2, 2017
1 parent 094c190 commit 43bd0eb
Showing 1 changed file with 15 additions and 8 deletions.
23 changes: 15 additions & 8 deletions src/lxc/bdev/lxcrbd.c
Expand Up @@ -66,12 +66,12 @@ int rbd_create(struct bdev *bdev, const char *dest, const char *n,
rbdname = specs->rbd.rbdname;

/* source device /dev/rbd/lxc/ctn */
len = strlen(rbdpool) + strlen(rbdname) + 11;
len = strlen(rbdpool) + strlen(rbdname) + 4 + 11;
bdev->src = malloc(len);
if (!bdev->src)
return -1;

ret = snprintf(bdev->src, len, "/dev/rbd/%s/%s", rbdpool, rbdname);
ret = snprintf(bdev->src, len, "rbd:/dev/rbd/%s/%s", rbdpool, rbdname);
if (ret < 0 || ret >= len)
return -1;

Expand Down Expand Up @@ -108,7 +108,7 @@ int rbd_create(struct bdev *bdev, const char *dest, const char *n,
fstype = DEFAULT_FSTYPE;

cmd_args[0] = fstype;
cmd_args[1] = bdev->src;
cmd_args[1] = bdev->src + 4;
ret = run_command(cmd_output, sizeof(cmd_output), do_mkfs_exec_wrapper,
(void *)cmd_args);
if (ret < 0)
Expand All @@ -127,14 +127,16 @@ int rbd_create(struct bdev *bdev, const char *dest, const char *n,

int rbd_destroy(struct bdev *orig)
{
char *src;
pid_t pid;
char *rbdfullname;

if ( file_exists(orig->src) ) {
src = lxc_storage_get_path(orig->src, orig->type);
if (file_exists(src)) {
if ((pid = fork()) < 0)
return -1;
if (!pid) {
execlp("rbd", "rbd", "unmap" , orig->src, (char *)NULL);
execlp("rbd", "rbd", "unmap" , src, (char *)NULL);
exit(1);
}
if (wait_for_pid(pid) < 0)
Expand All @@ -144,8 +146,8 @@ int rbd_destroy(struct bdev *orig)
if ((pid = fork()) < 0)
return -1;
if (!pid) {
rbdfullname = alloca(strlen(orig->src) - 8);
strcpy( rbdfullname, &orig->src[9] );
rbdfullname = alloca(strlen(src) - 8);
strcpy( rbdfullname, &src[9] );
execlp("rbd", "rbd", "rm" , rbdfullname, (char *)NULL);
exit(1);
}
Expand All @@ -166,12 +168,15 @@ int rbd_detect(const char *path)

int rbd_mount(struct bdev *bdev)
{
char *src;
if (strcmp(bdev->type, "rbd"))
return -22;

if (!bdev->src || !bdev->dest)
return -22;

if ( !file_exists(bdev->src) ) {
src = lxc_storage_get_path(bdev->src, bdev->type);
if (!file_exists(src)) {
// if blkdev does not exist it should be mapped, because it is not persistent on reboot
ERROR("Block device %s is not mapped.", bdev->src);
return -1;
Expand All @@ -184,7 +189,9 @@ int rbd_umount(struct bdev *bdev)
{
if (strcmp(bdev->type, "rbd"))
return -22;

if (!bdev->src || !bdev->dest)
return -22;

return umount(bdev->dest);
}

0 comments on commit 43bd0eb

Please sign in to comment.