The following pull request was submitted through Github. It can be accessed and reviewed at: https://github.com/lxc/lxd/pull/6933
This e-mail was sent by the LXC bot, direct replies will not reach the author unless they happen to be subscribed to this list. === Description (from pull-request) === Signed-off-by: Stéphane Graber <stgra...@ubuntu.com>
From 036c45195add519ddd8050954d638102f37d036e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgra...@ubuntu.com> Date: Tue, 25 Feb 2020 14:29:53 -0500 Subject: [PATCH] lxd/storage/zfs: Set volmode=none for VM datasets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Graber <stgra...@ubuntu.com> --- lxd/patches.go | 1 + lxd/storage/drivers/driver_btrfs.go | 1 + lxd/storage/drivers/driver_ceph.go | 1 + lxd/storage/drivers/driver_cephfs.go | 1 + lxd/storage/drivers/driver_dir.go | 1 + lxd/storage/drivers/driver_lvm.go | 1 + lxd/storage/drivers/driver_zfs.go | 9 ++++++++- lxd/storage/drivers/driver_zfs_patches.go | 15 +++++++++++++++ 8 files changed, 29 insertions(+), 1 deletion(-) diff --git a/lxd/patches.go b/lxd/patches.go index 05dbf1adf3..62a0de238b 100644 --- a/lxd/patches.go +++ b/lxd/patches.go @@ -83,6 +83,7 @@ var patches = []patch{ {name: "storage_zfs_mount", run: patchGenericStorage}, {name: "network_pid_files", run: patchNetworkPIDFiles}, {name: "storage_create_vm_again", run: patchGenericStorage}, + {name: "storage_zfs_volmode", run: patchGenericStorage}, } type patch struct { diff --git a/lxd/storage/drivers/driver_btrfs.go b/lxd/storage/drivers/driver_btrfs.go index f541cd3514..499d01216d 100644 --- a/lxd/storage/drivers/driver_btrfs.go +++ b/lxd/storage/drivers/driver_btrfs.go @@ -32,6 +32,7 @@ func (d *btrfs) load() error { "storage_create_vm": nil, "storage_zfs_mount": nil, "storage_create_vm_again": nil, + "storage_zfs_volmode": nil, } // Done if previously loaded. diff --git a/lxd/storage/drivers/driver_ceph.go b/lxd/storage/drivers/driver_ceph.go index 3b5a016fbe..668981aff5 100644 --- a/lxd/storage/drivers/driver_ceph.go +++ b/lxd/storage/drivers/driver_ceph.go @@ -31,6 +31,7 @@ func (d *ceph) load() error { "storage_create_vm": nil, "storage_zfs_mount": nil, "storage_create_vm_again": nil, + "storage_zfs_volmode": nil, } // Done if previously loaded. diff --git a/lxd/storage/drivers/driver_cephfs.go b/lxd/storage/drivers/driver_cephfs.go index 9ed2056185..e7c2b6c089 100644 --- a/lxd/storage/drivers/driver_cephfs.go +++ b/lxd/storage/drivers/driver_cephfs.go @@ -30,6 +30,7 @@ func (d *cephfs) load() error { "storage_create_vm": nil, "storage_zfs_mount": nil, "storage_create_vm_again": nil, + "storage_zfs_volmode": nil, } // Done if previously loaded. diff --git a/lxd/storage/drivers/driver_dir.go b/lxd/storage/drivers/driver_dir.go index a30208b40b..4bbded29df 100644 --- a/lxd/storage/drivers/driver_dir.go +++ b/lxd/storage/drivers/driver_dir.go @@ -23,6 +23,7 @@ func (d *dir) load() error { "storage_create_vm": nil, "storage_zfs_mount": nil, "storage_create_vm_again": nil, + "storage_zfs_volmode": nil, } return nil diff --git a/lxd/storage/drivers/driver_lvm.go b/lxd/storage/drivers/driver_lvm.go index f75d217f83..f4cf461ca3 100644 --- a/lxd/storage/drivers/driver_lvm.go +++ b/lxd/storage/drivers/driver_lvm.go @@ -35,6 +35,7 @@ func (d *lvm) load() error { "storage_create_vm": nil, "storage_zfs_mount": nil, "storage_create_vm_again": nil, + "storage_zfs_volmode": nil, } // Done if previously loaded. diff --git a/lxd/storage/drivers/driver_zfs.go b/lxd/storage/drivers/driver_zfs.go index 5c6c9ef8ed..d4c584afe5 100644 --- a/lxd/storage/drivers/driver_zfs.go +++ b/lxd/storage/drivers/driver_zfs.go @@ -43,6 +43,7 @@ func (d *zfs) load() error { "storage_create_vm": d.patchStorageCreateVM, "storage_zfs_mount": d.patchStorageZFSMount, "storage_create_vm_again": nil, + "storage_zfs_volmode": d.patchStorageZFSVolMode, } // Done if previously loaded. @@ -241,7 +242,13 @@ func (d *zfs) Create() error { // Create the initial datasets. for _, dataset := range d.initialDatasets() { - err := d.createDataset(filepath.Join(d.config["zfs.pool_name"], dataset), "mountpoint=none") + + properties := []string{"mountpoint=none"} + if shared.StringInSlice(dataset, []string{"virtual-machines", "deleted/virtual-machines"}) { + properties = append(properties, "volmode=none") + } + + err := d.createDataset(filepath.Join(d.config["zfs.pool_name"], dataset), properties...) if err != nil { return err } diff --git a/lxd/storage/drivers/driver_zfs_patches.go b/lxd/storage/drivers/driver_zfs_patches.go index 336b7b350e..ae147a7834 100644 --- a/lxd/storage/drivers/driver_zfs_patches.go +++ b/lxd/storage/drivers/driver_zfs_patches.go @@ -86,3 +86,18 @@ func (d *zfs) patchStorageZFSMount() error { return nil } + +func (d *zfs) patchStorageZFSVolMode() error { + // Set volmode=none on the parent virtual-machines directory + err := d.setDatasetProperties(filepath.Join(d.config["zfs.pool_name"], "virtual-machines"), "volmode=none") + if err != nil { + return err + } + + err = d.setDatasetProperties(filepath.Join(d.config["zfs.pool_name"], "deleted", "virtual-machines"), "volmode=none") + if err != nil { + return err + } + + return nil +}
_______________________________________________ lxc-devel mailing list lxc-devel@lists.linuxcontainers.org http://lists.linuxcontainers.org/listinfo/lxc-devel