A new mountpoint property is added to the schema for ZFSPool storages.
When needed for the first time, the current mount point is determined and
written to the storage config.
Signed-off-by: Fabian Ebner <f.eb...@proxmox.com>
---
 PVE/Storage/ZFSPoolPlugin.pm | 25 +++++++++++++++++++++++--
 1 file changed, 23 insertions(+), 2 deletions(-)

diff --git a/PVE/Storage/ZFSPoolPlugin.pm b/PVE/Storage/ZFSPoolPlugin.pm
index 16fb0d6..44c8123 100644
--- a/PVE/Storage/ZFSPoolPlugin.pm
+++ b/PVE/Storage/ZFSPoolPlugin.pm
@@ -32,6 +32,10 @@ sub properties {
            description => "use sparse volumes",
            type => 'boolean',
        },
+       mountpoint => {
+           description => "mount point",
+           type => 'string', format => 'pve-storage-path',
+       },
     };
 }
 
@@ -44,6 +48,7 @@ sub options {
        disable => { optional => 1 },
        content => { optional => 1 },
        bwlimit => { optional => 1 },
+       mountpoint => { optional => 1 },
     };
 }
 
@@ -148,11 +153,27 @@ sub path {
     my ($vtype, $name, $vmid) = $class->parse_volname($volname);
 
     my $path = '';
+    my $mountpoint = $scfg->{mountpoint};
+
+    # automatically write mountpoint to storage config if it is not present
+    if (!$mountpoint) {
+       $mountpoint = $class->zfs_request($scfg, undef, 'get', '-o', 'value',
+                                         'mountpoint', '-H', $scfg->{pool});
+       chomp($mountpoint);
+
+       eval {
+           PVE::Storage::lock_storage_config(sub {
+               my $cfg = PVE::Storage::config();
+               $cfg->{ids}->{$storeid}->{mountpoint} = $mountpoint;
+               PVE::Storage::write_config($cfg);
+           }, "update storage config failed");
+       };
+       warn $@ if $@;
+    }
 
     if ($vtype eq "images") {
        if ($name =~ m/^subvol-/ || $name =~ m/^basevol-/) {
-           # fixme: we currently assume standard mount point?!
-           $path = "/$scfg->{pool}/$name";
+           $path = "$mountpoint/$name";
        } else {
            $path = "/dev/zvol/$scfg->{pool}/$name";
        }
-- 
2.20.1


_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to