int lvm_mount(struct bdev *bdev)
{
- char *src;
-
if (strcmp(bdev->type, "lvm"))
return -22;
-
if (!bdev->src || !bdev->dest)
return -22;
-
- src = lxc_storage_get_path(bdev->src, bdev->type);
-
- /* If we might pass in data sometime, then we'll have to enrich
- * mount_unknown_fs().
- */
- return mount_unknown_fs(src, bdev->dest, bdev->mntopts);
+ /* if we might pass in data sometime, then we'll have to enrich
+ * mount_unknown_fs */
+ return mount_unknown_fs(bdev->src, bdev->dest, bdev->mntopts);
}
int lvm_umount(struct bdev *bdev)
{
if (strcmp(bdev->type, "lvm"))
return -22;
-
if (!bdev->src || !bdev->dest)
return -22;
-
return umount(bdev->dest);
}
return -1;
}
vg = lxc_global_config_value("lxc.bdev.lvm.vg");
- len = strlen("/dev/") + strlen(vg) + strlen(cname) + 4 + 2;
- new->src = malloc(len);
- if (new->src)
+ len = strlen("/dev/") + strlen(vg) + strlen(cname) + 2;
+ if ((new->src = malloc(len)) == NULL)
return -1;
-
- ret = snprintf(new->src, len, "lvm:/dev/%s/%s", vg, cname);
+ ret = snprintf(new->src, len, "/dev/%s/%s", vg, cname);
if (ret < 0 || ret >= len)
return -1;
} else {
}
if (snap) {
- char *newsrc, *origsrc;
-
- origsrc = lxc_storage_get_path(orig->src, "lvm");
- newsrc = lxc_storage_get_path(new->src, "lvm");
-
- if (lvm_snapshot(origsrc, newsrc, size) < 0) {
+ if (lvm_snapshot(orig->src, new->src, size) < 0) {
ERROR("could not create %s snapshot of %s", new->src, orig->src);
return -1;
}
} else {
- char *src;
-
- src = lxc_storage_get_path(new->src, "lvm");
- if (do_lvm_create(src, size, lxc_global_config_value("lxc.bdev.lvm.thin_pool")) < 0) {
+ if (do_lvm_create(new->src, size, lxc_global_config_value("lxc.bdev.lvm.thin_pool")) < 0) {
ERROR("Error creating new lvm blockdev");
return -1;
}
cmd_args[0] = fstype;
- cmd_args[1] = src;
+ cmd_args[1] = new->src;
// create an fs in the loopback file
ret = run_command(cmd_output, sizeof(cmd_output),
do_mkfs_exec_wrapper, (void *)cmd_args);
int lvm_destroy(struct bdev *orig)
{
- char *src;
-
pid_t pid;
if ((pid = fork()) < 0)
return -1;
-
if (!pid) {
(void)setenv("LVM_SUPPRESS_FD_WARNINGS", "1", 1);
- src = lxc_storage_get_path(orig->src, "lvm");
- execlp("lvremove", "lvremove", "-f", src, (char *)NULL);
+ execlp("lvremove", "lvremove", "-f", orig->src, (char *)NULL);
exit(EXIT_FAILURE);
}
-
return wait_for_pid(pid);
}
if (specs->lvm.lv)
lv = specs->lvm.lv;
- len = strlen(vg) + strlen(lv) + 4 + 7;
+ len = strlen(vg) + strlen(lv) + 7;
bdev->src = malloc(len);
if (!bdev->src)
return -1;
- ret = snprintf(bdev->src, len, "lvm:/dev/%s/%s", vg, lv);
+ ret = snprintf(bdev->src, len, "/dev/%s/%s", vg, lv);
if (ret < 0 || ret >= len)
return -1;
if (!sz)
sz = DEFAULT_FS_SIZE;
- if (do_lvm_create(bdev->src + 4, sz, thinpool) < 0) {
+ if (do_lvm_create(bdev->src, sz, thinpool) < 0) {
ERROR("Error creating new lvm blockdev %s size %"PRIu64" bytes", bdev->src, sz);
return -1;
}
fstype = DEFAULT_FSTYPE;
cmd_args[0] = fstype;
- cmd_args[1] = bdev->src + 4;
+ cmd_args[1] = bdev->src;
ret = run_command(cmd_output, sizeof(cmd_output), do_mkfs_exec_wrapper,
(void *)cmd_args);
if (ret < 0)
int blk_getsize(struct bdev *bdev, uint64_t *size)
{
int fd, ret;
- char *src;
+ char *path = bdev->src;
- src = lxc_storage_get_path(bdev->src, bdev->type);
- fd = open(src, O_RDONLY);
+ if (strcmp(bdev->type, "loop") == 0)
+ path = bdev->src + 5;
+
+ fd = open(path, O_RDONLY);
if (fd < 0)
return -1;
size_t linelen;
pid_t pid;
FILE *f;
- char *sp1, *sp2, *sp3, *srcdev, *line = NULL;
+ char *sp1, *sp2, *sp3, *line = NULL;
+ char *srcdev;
if (!bdev || !bdev->src || !bdev->dest)
return -1;
- srcdev = lxc_storage_get_path(bdev->src, bdev->type);
+ srcdev = bdev->src;
+ if (strcmp(bdev->type, "loop") == 0)
+ srcdev = bdev->src + 5;
ret = pipe(p);
if (ret < 0)