[lxc-devel] [lxd/master] lxd/storage/zfs: Don't filter mountpoint on block
stgraber on Github
lxc-bot at linuxcontainers.org
Mon Aug 24 13:34:06 UTC 2020
A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 354 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20200824/775300cf/attachment.bin>
-------------- next part --------------
From 8670fa751664dfbf68ae67a86099d59fd030d7bc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Mon, 24 Aug 2020 09:33:48 -0400
Subject: [PATCH] lxd/storage/zfs: Don't filter mountpoint on block
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
lxd/storage/drivers/driver_zfs_utils.go | 7 +++++--
lxd/storage/drivers/driver_zfs_volumes.go | 17 +++++++++++++----
2 files changed, 18 insertions(+), 6 deletions(-)
diff --git a/lxd/storage/drivers/driver_zfs_utils.go b/lxd/storage/drivers/driver_zfs_utils.go
index bf67e58053..edc01f2dbb 100644
--- a/lxd/storage/drivers/driver_zfs_utils.go
+++ b/lxd/storage/drivers/driver_zfs_utils.go
@@ -265,9 +265,12 @@ func (d *zfs) sendDataset(dataset string, parent string, volSrcArgs *migration.V
return nil
}
-func (d *zfs) receiveDataset(dataset string, conn io.ReadWriteCloser, writeWrapper func(io.WriteCloser) io.WriteCloser) error {
+func (d *zfs) receiveDataset(vol Volume, conn io.ReadWriteCloser, writeWrapper func(io.WriteCloser) io.WriteCloser) error {
// Assemble zfs receive command.
- cmd := exec.Command("zfs", "receive", "-x", "mountpoint", "-F", "-u", dataset)
+ cmd := exec.Command("zfs", "receive", "-x", "mountpoint", "-F", "-u", d.dataset(vol, false))
+ if vol.ContentType() == ContentTypeBlock {
+ cmd = exec.Command("zfs", "receive", "-F", "-u", d.dataset(vol, false))
+ }
// Prepare stdin/stderr.
stdin, err := cmd.StdinPipe()
diff --git a/lxd/storage/drivers/driver_zfs_volumes.go b/lxd/storage/drivers/driver_zfs_volumes.go
index c936189a64..5c548061e0 100644
--- a/lxd/storage/drivers/driver_zfs_volumes.go
+++ b/lxd/storage/drivers/driver_zfs_volumes.go
@@ -307,7 +307,11 @@ func (d *zfs) CreateVolumeFromBackup(vol Volume, srcBackup backup.Info, srcData
if hdr.Name == srcFile {
// Extract the backup.
- err = shared.RunCommandWithFds(tr, nil, "zfs", "receive", "-x", "mountpoint", "-F", target)
+ if vol.ContentType() == ContentTypeBlock {
+ err = shared.RunCommandWithFds(tr, nil, "zfs", "receive", "-F", target)
+ } else {
+ err = shared.RunCommandWithFds(tr, nil, "zfs", "receive", "-x", "mountpoint", "-F", target)
+ }
if err != nil {
return err
@@ -487,7 +491,12 @@ func (d *zfs) CreateVolumeFromCopy(vol Volume, srcVol Volume, copySnapshots bool
// Send/receive the snapshot.
var sender *exec.Cmd
- receiver := exec.Command("zfs", "receive", "-x", "mountpoint", d.dataset(vol, false))
+ var receiver *exec.Cmd
+ if vol.ContentType() == ContentTypeBlock {
+ receiver = exec.Command("zfs", "receive", d.dataset(vol, false))
+ } else {
+ receiver = exec.Command("zfs", "receive", "-x", "mountpoint", d.dataset(vol, false))
+ }
// Handle transferring snapshots.
if len(snapshots) > 0 {
@@ -627,7 +636,7 @@ func (d *zfs) CreateVolumeFromMigration(vol Volume, conn io.ReadWriteCloser, vol
fullSnapshotName := GetSnapshotVolumeName(vol.name, snapName)
wrapper := migration.ProgressWriter(op, "fs_progress", fullSnapshotName)
- err = d.receiveDataset(d.dataset(vol, false), conn, wrapper)
+ err = d.receiveDataset(vol, conn, wrapper)
if err != nil {
return err
}
@@ -636,7 +645,7 @@ func (d *zfs) CreateVolumeFromMigration(vol Volume, conn io.ReadWriteCloser, vol
// Transfer the main volume.
wrapper := migration.ProgressWriter(op, "fs_progress", vol.name)
- err := d.receiveDataset(d.dataset(vol, false), conn, wrapper)
+ err := d.receiveDataset(vol, conn, wrapper)
if err != nil {
return err
}
More information about the lxc-devel
mailing list