[lxc-devel] [lxd/master] storage: do not mount custom volumes on create
brauner on Github
lxc-bot at linuxcontainers.org
Fri Mar 9 10:39:32 UTC 2018
A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 364 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20180309/bd8841a3/attachment.bin>
-------------- next part --------------
From af58d18682a9911e616120bf29e96b2bf9c5a320 Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Fri, 9 Mar 2018 11:38:42 +0100
Subject: [PATCH] storage: do not mount custom volumes on create
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
lxd/storage_ceph.go | 13 ++++++++-----
lxd/storage_lvm.go | 13 ++++++++-----
lxd/storage_zfs.go | 15 ++++++++++++++-
3 files changed, 30 insertions(+), 11 deletions(-)
diff --git a/lxd/storage_ceph.go b/lxd/storage_ceph.go
index ef9c6dd97..037cdae94 100644
--- a/lxd/storage_ceph.go
+++ b/lxd/storage_ceph.go
@@ -472,11 +472,6 @@ func (s *storageCeph) StoragePoolVolumeCreate() error {
}
}
- _, err = s.StoragePoolVolumeMount()
- if err != nil {
- return err
- }
-
logger.Debugf(`Created RBD storage volume "%s" on storage pool "%s"`,
s.volume.Name, s.pool.Name)
@@ -2923,6 +2918,14 @@ func (s *storageCeph) StoragePoolVolumeCopy(source *api.StorageVolumeSource) err
return err
}
+ ourMount, err := s.StoragePoolVolumeMount()
+ if err != nil {
+ return err
+ }
+ if ourMount {
+ defer s.StoragePoolVolumeUmount()
+ }
+
bwlimit := s.pool.Config["rsync.bwlimit"]
_, err = rsyncLocalCopy(srcMountPoint, dstMountPoint, bwlimit)
if err != nil {
diff --git a/lxd/storage_lvm.go b/lxd/storage_lvm.go
index 2622a18e9..87b53254e 100644
--- a/lxd/storage_lvm.go
+++ b/lxd/storage_lvm.go
@@ -510,11 +510,6 @@ func (s *storageLvm) StoragePoolVolumeCreate() error {
}
}
- _, err = s.StoragePoolVolumeMount()
- if err != nil {
- return err
- }
-
tryUndo = false
logger.Infof("Created LVM storage volume \"%s\" on storage pool \"%s\".", s.volume.Name, s.pool.Name)
@@ -1911,6 +1906,14 @@ func (s *storageLvm) StoragePoolVolumeCopy(source *api.StorageVolumeSource) erro
return err
}
+ ourMount, err := s.StoragePoolVolumeMount()
+ if err != nil {
+ return err
+ }
+ if ourMount {
+ defer s.StoragePoolVolumeUmount()
+ }
+
bwlimit := s.pool.Config["rsync.bwlimit"]
_, err = rsyncLocalCopy(srcMountPoint, dstMountPoint, bwlimit)
if err != nil {
diff --git a/lxd/storage_zfs.go b/lxd/storage_zfs.go
index ce41942cb..553454790 100644
--- a/lxd/storage_zfs.go
+++ b/lxd/storage_zfs.go
@@ -394,7 +394,11 @@ func (s *storageZfs) StoragePoolVolumeCreate() error {
}
if !shared.IsMountPoint(customPoolVolumeMntPoint) {
- zfsMount(poolName, fs)
+ err := zfsMount(poolName, fs)
+ if err != nil {
+ return err
+ }
+ defer zfsUmount(poolName, fs)
}
// apply quota
@@ -2539,6 +2543,15 @@ func (s *storageZfs) StoragePoolVolumeCopy(source *api.StorageVolumeSource) erro
return err
}
+ ourMount, err := s.StoragePoolVolumeMount()
+ if err != nil {
+ logger.Errorf("Failed to mount ZFS storage volume \"%s\" on storage pool \"%s\": %s", s.volume.Name, s.pool.Name, err)
+ return err
+ }
+ if ourMount {
+ defer s.StoragePoolVolumeUmount()
+ }
+
bwlimit := s.pool.Config["rsync.bwlimit"]
_, err = rsyncLocalCopy(srcMountPoint, dstMountPoint, bwlimit)
if err != nil {
More information about the lxc-devel
mailing list