Commit f60d4e18 by Christian Brauner Committed by Stéphane Graber

Add bdev_destroy() and bdev_destroy_wrapper()

static do_bdev_destroy() and bdev_destroy_wrapper() from lxccontainer.c become public bdev_destroy() and bdev_destroy_wrapper() in bdev.c and bdev.h Signed-off-by: 's avatarChristian Brauner <christianvanbrauner@gmail.com> Acked-by: 's avatarSerge E. Hallyn <serge.hallyn@ubuntu.com>
parent fd748718
...@@ -3614,3 +3614,40 @@ bool rootfs_is_blockdev(struct lxc_conf *conf) ...@@ -3614,3 +3614,40 @@ bool rootfs_is_blockdev(struct lxc_conf *conf)
return true; return true;
return false; return false;
} }
bool bdev_destroy(struct lxc_conf *conf)
{
struct bdev *r;
bool ret = false;
r = bdev_init(conf, conf->rootfs.path, conf->rootfs.mount, NULL);
if (!r)
return ret;
if (r->ops->destroy(r) == 0)
ret = true;
bdev_put(r);
return ret;
}
int bdev_destroy_wrapper(void *data)
{
struct lxc_conf *conf = data;
if (setgid(0) < 0) {
ERROR("Failed to setgid to 0");
return -1;
}
if (setgroups(0, NULL) < 0)
WARN("Failed to clear groups");
if (setuid(0) < 0) {
ERROR("Failed to setuid to 0");
return -1;
}
if (!bdev_destroy(conf))
return -1;
else
return 0;
}
...@@ -123,6 +123,9 @@ struct bdev *bdev_copy(struct lxc_container *c0, const char *cname, ...@@ -123,6 +123,9 @@ struct bdev *bdev_copy(struct lxc_container *c0, const char *cname,
struct bdev *bdev_create(const char *dest, const char *type, struct bdev *bdev_create(const char *dest, const char *type,
const char *cname, struct bdev_specs *specs); const char *cname, struct bdev_specs *specs);
void bdev_put(struct bdev *bdev); void bdev_put(struct bdev *bdev);
bool bdev_destroy(struct lxc_conf *conf);
/* callback function to be used with userns_exec_1() */
int bdev_destroy_wrapper(void *data);
/* /*
* these are really for qemu-nbd support, as container shutdown * these are really for qemu-nbd support, as container shutdown
......
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