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

Reply via email to