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

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 64f7dab6944ac1d144edc794809c76a8e2a544bf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgra...@ubuntu.com>
Date: Wed, 24 Jun 2020 17:06:09 -0400
Subject: [PATCH 1/2] lxd/db: Fix UsedBy for profiles on storage pools
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/db/storage_pools.go | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/lxd/db/storage_pools.go b/lxd/db/storage_pools.go
index 10d5f18024..61dcc6aab1 100644
--- a/lxd/db/storage_pools.go
+++ b/lxd/db/storage_pools.go
@@ -148,12 +148,12 @@ func (c *ClusterTx) GetStoragePoolUsedBy(name string) 
([]string, error) {
                        if v["pool"] != name {
                                continue
                        }
-               }
 
-               if profile.Project == "default" {
-                       usedby = append(usedby, fmt.Sprintf("/1.0/profiles/%s", 
profile.Name))
-               } else {
-                       usedby = append(usedby, 
fmt.Sprintf("/1.0/profiles/%s?project=%s", profile.Name, profile.Project))
+                       if profile.Project == "default" {
+                               usedby = append(usedby, 
fmt.Sprintf("/1.0/profiles/%s", profile.Name))
+                       } else {
+                               usedby = append(usedby, 
fmt.Sprintf("/1.0/profiles/%s?project=%s", profile.Name, profile.Project))
+                       }
                }
        }
 

From 4352efdad4a40afa0005fe9916147a4dd1fe3566 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgra...@ubuntu.com>
Date: Wed, 24 Jun 2020 17:02:38 -0400
Subject: [PATCH 2/2] lxd/storage: Use Truncate to create/grow VM files
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/storage/drivers/driver_btrfs.go | 2 +-
 lxd/storage/drivers/driver_lvm.go   | 2 +-
 lxd/storage/drivers/driver_zfs.go   | 2 +-
 lxd/storage/drivers/utils.go        | 9 +++++----
 4 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/lxd/storage/drivers/driver_btrfs.go 
b/lxd/storage/drivers/driver_btrfs.go
index 1247df9f06..baa6418df3 100644
--- a/lxd/storage/drivers/driver_btrfs.go
+++ b/lxd/storage/drivers/driver_btrfs.go
@@ -103,7 +103,7 @@ func (d *btrfs) Create() error {
                        return err
                }
 
-               err = createSparseFile(d.config["source"], size)
+               err = ensureSparseFile(d.config["source"], size)
                if err != nil {
                        return errors.Wrap(err, "Failed to create the sparse 
file")
                }
diff --git a/lxd/storage/drivers/driver_lvm.go 
b/lxd/storage/drivers/driver_lvm.go
index 1357ae58b6..24112f1b24 100644
--- a/lxd/storage/drivers/driver_lvm.go
+++ b/lxd/storage/drivers/driver_lvm.go
@@ -129,7 +129,7 @@ func (d *lvm) Create() error {
                        return fmt.Errorf("Source file location already exists")
                }
 
-               err = createSparseFile(d.config["source"], size)
+               err = ensureSparseFile(d.config["source"], size)
                if err != nil {
                        return errors.Wrapf(err, "Failed to create sparse file 
%q", d.config["source"])
                }
diff --git a/lxd/storage/drivers/driver_zfs.go 
b/lxd/storage/drivers/driver_zfs.go
index d5b87ad9f9..30e76dc640 100644
--- a/lxd/storage/drivers/driver_zfs.go
+++ b/lxd/storage/drivers/driver_zfs.go
@@ -144,7 +144,7 @@ func (d *zfs) Create() error {
                        return err
                }
 
-               err = createSparseFile(loopPath, size)
+               err = ensureSparseFile(loopPath, size)
                if err != nil {
                        return err
                }
diff --git a/lxd/storage/drivers/utils.go b/lxd/storage/drivers/utils.go
index 5a974baf5f..988bf98208 100644
--- a/lxd/storage/drivers/utils.go
+++ b/lxd/storage/drivers/utils.go
@@ -292,8 +292,9 @@ func deleteParentSnapshotDirIfEmpty(poolName string, 
volType VolumeType, volName
        return nil
 }
 
-// createSparseFile creates a sparse empty file at specified location with 
specified size.
-func createSparseFile(filePath string, sizeBytes int64) error {
+// ensureSparseFile creates a sparse empty file at specified location with 
specified size.
+// If the path already exists, the file is truncated to the requested size.
+func ensureSparseFile(filePath string, sizeBytes int64) error {
        f, err := os.Create(filePath)
        if err != nil {
                return errors.Wrapf(err, "Failed to open %s", filePath)
@@ -354,7 +355,7 @@ func ensureVolumeBlockFile(path string, sizeBytes int64) 
(bool, error) {
                        return false, nil
                }
 
-               _, err = shared.RunCommand("qemu-img", "resize", "-f", "raw", 
path, fmt.Sprintf("%d", sizeBytes))
+               err = ensureSparseFile(path, sizeBytes)
                if err != nil {
                        return false, errors.Wrapf(err, "Failed resizing disk 
image %q to size %d", path, sizeBytes)
                }
@@ -364,7 +365,7 @@ func ensureVolumeBlockFile(path string, sizeBytes int64) 
(bool, error) {
 
        // If path doesn't exist, then there has been no filler function 
supplied to create it from another source.
        // So instead create an empty volume (use for PXE booting a VM).
-       _, err = shared.RunCommand("qemu-img", "create", "-f", "raw", path, 
fmt.Sprintf("%d", sizeBytes))
+       err = ensureSparseFile(path, sizeBytes)
        if err != nil {
                return false, errors.Wrapf(err, "Failed creating disk image %q 
as size %d", path, sizeBytes)
        }
_______________________________________________
lxc-devel mailing list
lxc-devel@lists.linuxcontainers.org
http://lists.linuxcontainers.org/listinfo/lxc-devel

Reply via email to