The following pull request was submitted through Github.
It can be accessed and reviewed at: https://github.com/lxc/lxd/pull/2389

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) ===

From 81cafeba51a73d3b920c9e418dbb9389e5b40771 Mon Sep 17 00:00:00 2001
From: Nobuto Murata <nobuto.mur...@canonical.com>
Date: Wed, 14 Sep 2016 20:07:33 +0900
Subject: [PATCH 1/2] new config option, storage.lvm_mount_options

Signed-off-by: Nobuto Murata <nobuto.mur...@canonical.com>
---
 config/bash/lxd-client |  2 +-
 doc/configuration.md   |  1 +
 lxd/daemon_config.go   |  1 +
 lxd/storage_lvm.go     | 12 ++++++++----
 4 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/config/bash/lxd-client b/config/bash/lxd-client
index c475c7f..b7fe02a 100644
--- a/config/bash/lxd-client
+++ b/config/bash/lxd-client
@@ -42,7 +42,7 @@ _have lxc && {
       core.https_allowed_credentials core.proxy_https \
       core.proxy_http core.proxy_ignore_host core.trust_password \
       storage.lvm_vg_name storage.lvm_thinpool_name storage.lvm_fstype \
-      storage.lvm_volume_size storage.zfs_pool_name \
+      storage.lvm_volume_size storage.lvm_mount_options storage.zfs_pool_name \
       storage.zfs_remove_snapshots storage.zfs_use_refquota \
       images.compression_algorithm \
       images.remote_cache_expiry images.auto_update_interval \
diff --git a/doc/configuration.md b/doc/configuration.md
index d705a29..109ad18 100644
--- a/doc/configuration.md
+++ b/doc/configuration.md
@@ -31,6 +31,7 @@ core.trust\_password            | string    | -         | -
 storage.lvm\_vg\_name           | string    | -         | -                    
             | LVM Volume Group name to be used for container and image 
storage. A default Thin Pool is created using 100% of the free space in the 
Volume Group, unless `storage.lvm_thinpool_name` is set.
 storage.lvm\_thinpool\_name     | string    | "LXDPool" | -                    
             | LVM Thin Pool to use within the Volume Group specified in 
`storage.lvm_vg_name`, if the default pool parameters are undesirable.
 storage.lvm\_fstype             | string    | ext4      | -                    
             | Format LV with filesystem, for now it's value can be only ext4 
(default) or xfs.
+storage.lvm\_mount\_options     | string    | discard   | -                    
             | Mount options for LV.
 storage.lvm\_volume\_size       | string    | 10GiB     | -                    
             | Size of the logical volume
 storage.zfs\_pool\_name         | string    | -         | -                    
             | ZFS pool name
 storage.zfs\_remove\_snapshots  | boolean   | false     | 
storage\_zfs\_remove\_snapshots   | Automatically remove any needed snapshot 
when attempting a container restore
diff --git a/lxd/daemon_config.go b/lxd/daemon_config.go
index ccc30d9..5af70ad 100644
--- a/lxd/daemon_config.go
+++ b/lxd/daemon_config.go
@@ -180,6 +180,7 @@ func daemonConfigInit(db *sql.DB) error {
                "images.remote_cache_expiry":   &daemonConfigKey{valueType: 
"int", defaultValue: "10", trigger: daemonConfigTriggerExpiry},
 
                "storage.lvm_fstype":           &daemonConfigKey{valueType: 
"string", defaultValue: "ext4", validValues: []string{"ext4", "xfs"}},
+               "storage.lvm_mount_options":    &daemonConfigKey{valueType: 
"string", defaultValue: "discard"},
                "storage.lvm_thinpool_name":    &daemonConfigKey{valueType: 
"string", defaultValue: "LXDPool", validator: storageLVMValidateThinPoolName},
                "storage.lvm_vg_name":          &daemonConfigKey{valueType: 
"string", validator: storageLVMValidateVolumeGroupName, setter: 
daemonConfigSetStorage},
                "storage.lvm_volume_size":      &daemonConfigKey{valueType: 
"string", defaultValue: "10GiB"},
diff --git a/lxd/storage_lvm.go b/lxd/storage_lvm.go
index 3f8fc5d..fe9fc1e 100644
--- a/lxd/storage_lvm.go
+++ b/lxd/storage_lvm.go
@@ -322,7 +322,8 @@ func (s *storageLvm) ContainerCreateFromImage(
                }
        }
 
-       err = tryMount(lvpath, destPath, fstype, 0, "discard")
+       mountOptions := daemonConfig["storage.lvm_mount_options"].Get()
+       err = tryMount(lvpath, destPath, fstype, 0, mountOptions)
        if err != nil {
                s.ContainerDelete(container)
                return fmt.Errorf("Error mounting snapshot LV: %v", err)
@@ -430,7 +431,8 @@ func (s *storageLvm) ContainerStart(container container) 
error {
        lvpath := fmt.Sprintf("/dev/%s/%s", s.vgName, lvName)
        fstype := daemonConfig["storage.lvm_fstype"].Get()
 
-       err := tryMount(lvpath, container.Path(), fstype, 0, "discard")
+       mountOptions := daemonConfig["storage.lvm_mount_options"].Get()
+       err := tryMount(lvpath, container.Path(), fstype, 0, mountOptions)
        if err != nil {
                return fmt.Errorf(
                        "Error mounting snapshot LV path='%s': %v",
@@ -675,7 +677,8 @@ func (s *storageLvm) ContainerSnapshotStart(container 
container) error {
                }
        }
 
-       err = tryMount(lvpath, container.Path(), fstype, 0, "discard")
+       mountOptions := daemonConfig["storage.lvm_mount_options"].Get()
+       err = tryMount(lvpath, container.Path(), fstype, 0, mountOptions)
        if err != nil {
                return fmt.Errorf(
                        "Error mounting snapshot LV path='%s': %v",
@@ -730,7 +733,8 @@ func (s *storageLvm) ImageCreate(fingerprint string) error {
        }()
 
        fstype := daemonConfig["storage.lvm_fstype"].Get()
-       err = tryMount(lvpath, tempLVMountPoint, fstype, 0, "discard")
+       mountOptions := daemonConfig["storage.lvm_mount_options"].Get()
+       err = tryMount(lvpath, tempLVMountPoint, fstype, 0, mountOptions)
        if err != nil {
                shared.LogInfof("Error mounting image LV for unpacking: %v", 
err)
                return fmt.Errorf("Error mounting image LV: %v", err)

From 1650380b91264a2d5ac7d7a48785f3081f0341fe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgra...@ubuntu.com>
Date: Fri, 16 Sep 2016 18:19:27 -0400
Subject: [PATCH 2/2] Add API extension for lvm_mount_options
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Closes #2374

Signed-off-by: Stéphane Graber <stgra...@ubuntu.com>
---
 doc/api-extensions.md | 5 +++++
 doc/configuration.md  | 2 +-
 lxd/api_1.0.go        | 1 +
 3 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/doc/api-extensions.md b/doc/api-extensions.md
index b636818..2bc8dc4 100644
--- a/doc/api-extensions.md
+++ b/doc/api-extensions.md
@@ -96,3 +96,8 @@ when being queried about disk utilization.
 
 This effectively controls whether disk usage by snapshots should be
 considered as part of the container's disk space usage.
+
+## storage\_lvm\_mount\_options
+Adds a new "storage.lvm\_mount\_options" daemon configuration option
+which defaults to "discard" and allows the user to set addition mount
+options for the filesystem used by the LVM LV.
diff --git a/doc/configuration.md b/doc/configuration.md
index 109ad18..cd5c7e6 100644
--- a/doc/configuration.md
+++ b/doc/configuration.md
@@ -31,7 +31,7 @@ core.trust\_password            | string    | -         | -
 storage.lvm\_vg\_name           | string    | -         | -                    
             | LVM Volume Group name to be used for container and image 
storage. A default Thin Pool is created using 100% of the free space in the 
Volume Group, unless `storage.lvm_thinpool_name` is set.
 storage.lvm\_thinpool\_name     | string    | "LXDPool" | -                    
             | LVM Thin Pool to use within the Volume Group specified in 
`storage.lvm_vg_name`, if the default pool parameters are undesirable.
 storage.lvm\_fstype             | string    | ext4      | -                    
             | Format LV with filesystem, for now it's value can be only ext4 
(default) or xfs.
-storage.lvm\_mount\_options     | string    | discard   | -                    
             | Mount options for LV.
+storage.lvm\_mount\_options     | string    | discard   | 
storage\_lvm\_mount\_options      | Mount options for the LV filesystem
 storage.lvm\_volume\_size       | string    | 10GiB     | -                    
             | Size of the logical volume
 storage.zfs\_pool\_name         | string    | -         | -                    
             | ZFS pool name
 storage.zfs\_remove\_snapshots  | boolean   | false     | 
storage\_zfs\_remove\_snapshots   | Automatically remove any needed snapshot 
when attempting a container restore
diff --git a/lxd/api_1.0.go b/lxd/api_1.0.go
index 933c06f..1fa1858 100644
--- a/lxd/api_1.0.go
+++ b/lxd/api_1.0.go
@@ -68,6 +68,7 @@ func api10Get(d *Daemon, r *http.Request) Response {
                        "directory_manipulation",
                        "container_cpu_time",
                        "storage_zfs_use_refquota",
+                       "storage_lvm_mount_options",
                },
 
                "api_status":  "stable",
_______________________________________________
lxc-devel mailing list
lxc-devel@lists.linuxcontainers.org
http://lists.linuxcontainers.org/listinfo/lxc-devel

Reply via email to