public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH storage 0/2] cifs plugin - add options parameter
@ 2022-05-13 13:55 Stefan Hrdlicka
  2022-05-13 13:55 ` [pve-devel] [PATCH storage 1/2] add options parameter to cifs plugin (fixes #2920) Stefan Hrdlicka
  2022-05-13 13:55 ` [pve-devel] [PATCH docs 2/2] cifs: add options parameter (fix #2920) Stefan Hrdlicka
  0 siblings, 2 replies; 5+ messages in thread
From: Stefan Hrdlicka @ 2022-05-13 13:55 UTC (permalink / raw)
  To: pve-devel

This adds the options parameter to the CIFS plugin.

check propertyList is common for all plugins and it is therefore
not possible to have options twice with different descriptions. This patch moves
the options property from NFSPlugin.pm to the Plugin.pm level. The options
parameter has the same use for NFS & CIFS so it shouldn't be confusing
that they share it.

# pve-storage 
---
 PVE/Storage/CIFSPlugin.pm | 10 ++++++++--
 PVE/Storage/NFSPlugin.pm  |  4 ----
 PVE/Storage/Plugin.pm     |  6 ++++++
 3 files changed, 14 insertions(+), 6 deletions(-)

# pve-docs
---
 pve-storage-cifs.adoc | 5 +++++
 1 file changed, 5 insertions(+)


-- 
2.30.2




^ permalink raw reply	[flat|nested] 5+ messages in thread

* [pve-devel] [PATCH storage 1/2] add options parameter to cifs plugin (fixes #2920)
  2022-05-13 13:55 [pve-devel] [PATCH storage 0/2] cifs plugin - add options parameter Stefan Hrdlicka
@ 2022-05-13 13:55 ` Stefan Hrdlicka
  2022-07-28 10:26   ` Fiona Ebner
  2022-05-13 13:55 ` [pve-devel] [PATCH docs 2/2] cifs: add options parameter (fix #2920) Stefan Hrdlicka
  1 sibling, 1 reply; 5+ messages in thread
From: Stefan Hrdlicka @ 2022-05-13 13:55 UTC (permalink / raw)
  To: pve-devel

this makes it possible to add all mount options offered by mount.cifs
NFS & CIFS now share the options parameter since the use it for
the same prupose

Signed-off-by: Stefan Hrdlicka <s.hrdlicka@proxmox.com>
---
 PVE/Storage/CIFSPlugin.pm | 10 ++++++++--
 PVE/Storage/NFSPlugin.pm  |  4 ----
 PVE/Storage/Plugin.pm     |  6 ++++++
 3 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/PVE/Storage/CIFSPlugin.pm b/PVE/Storage/CIFSPlugin.pm
index 982040a..e4ea320 100644
--- a/PVE/Storage/CIFSPlugin.pm
+++ b/PVE/Storage/CIFSPlugin.pm
@@ -64,7 +64,7 @@ sub get_cred_file {
 }
 
 sub cifs_mount {
-    my ($server, $share, $mountpoint, $storeid, $smbver, $user, $domain) = @_;
+    my ($server, $share, $mountpoint, $storeid, $smbver, $user, $domain, $options) = @_;
 
     $server = "[$server]" if Net::IP::ip_is_ipv6($server);
     my $source = "//${server}/$share";
@@ -80,6 +80,10 @@ sub cifs_mount {
 
     push @$cmd, '-o', defined($smbver) ? "vers=$smbver" : "vers=default";
 
+    if ($options) {
+        push @$cmd, '-o', $options;
+    }
+
     run_command($cmd, errmsg => "mount error");
 }
 
@@ -144,6 +148,7 @@ sub options {
 	mkdir => { optional => 1 },
 	bwlimit => { optional => 1 },
 	preallocation => { optional => 1 },
+	options => { optional => 1 },
     };
 }
 
@@ -223,6 +228,7 @@ sub activate_storage {
     my $path = $scfg->{path};
     my $server = $scfg->{server};
     my $share = $scfg->{share};
+    my $options = $scfg->{options};
 
     if (!cifs_is_mounted($server, $share, $path, $cache->{mountdata})) {
 
@@ -232,7 +238,7 @@ sub activate_storage {
 	    "directory '$path' does not exist\n" if ! -d $path;
 
 	cifs_mount($server, $share, $path, $storeid, $scfg->{smbversion},
-	    $scfg->{username}, $scfg->{domain});
+	    $scfg->{username}, $scfg->{domain}, $options);
     }
 
     $class->SUPER::activate_storage($storeid, $scfg, $cache);
diff --git a/PVE/Storage/NFSPlugin.pm b/PVE/Storage/NFSPlugin.pm
index 5bd7313..f777483 100644
--- a/PVE/Storage/NFSPlugin.pm
+++ b/PVE/Storage/NFSPlugin.pm
@@ -69,10 +69,6 @@ sub properties {
 	    description => "Server IP or DNS name.",
 	    type => 'string', format => 'pve-storage-server',
 	},
-	options => {
-	    description => "NFS mount options (see 'man nfs')",
-	    type => 'string',  format => 'pve-storage-options',
-	},
     };
 }
 
diff --git a/PVE/Storage/Plugin.pm b/PVE/Storage/Plugin.pm
index 0a100b7..cf65b3c 100644
--- a/PVE/Storage/Plugin.pm
+++ b/PVE/Storage/Plugin.pm
@@ -180,6 +180,12 @@ my $defaultData = {
 	    default => 'metadata',
 	    optional => 1,
 	},
+	options => {
+	    description => "NFS/CIFS mount options (see 'man nfs' " .
+                "or 'man mount.cifs')",
+	    type => 'string',  format => 'pve-storage-options',
+            optional => 1,
+	},
     },
 };
 
-- 
2.30.2




^ permalink raw reply	[flat|nested] 5+ messages in thread

* [pve-devel] [PATCH docs 2/2] cifs: add options parameter (fix #2920)
  2022-05-13 13:55 [pve-devel] [PATCH storage 0/2] cifs plugin - add options parameter Stefan Hrdlicka
  2022-05-13 13:55 ` [pve-devel] [PATCH storage 1/2] add options parameter to cifs plugin (fixes #2920) Stefan Hrdlicka
@ 2022-05-13 13:55 ` Stefan Hrdlicka
  2022-07-28 10:26   ` Fiona Ebner
  1 sibling, 1 reply; 5+ messages in thread
From: Stefan Hrdlicka @ 2022-05-13 13:55 UTC (permalink / raw)
  To: pve-devel

Signed-off-by: Stefan Hrdlicka <s.hrdlicka@proxmox.com>
---
this depends on 1/2 since this changes the documentation :)

 pve-storage-cifs.adoc | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/pve-storage-cifs.adoc b/pve-storage-cifs.adoc
index bb4b902..60775a4 100644
--- a/pve-storage-cifs.adoc
+++ b/pve-storage-cifs.adoc
@@ -57,6 +57,10 @@ path::
 
 The local mount point. Optional, defaults to `/mnt/pve/<STORAGE_ID>/`.
 
+options::
+
+CIFS mount options (see `man mount.cifs`).
+
 .Configuration Example (`/etc/pve/storage.cfg`)
 ----
 cifs: backup
@@ -64,6 +68,7 @@ cifs: backup
 	server 10.0.0.11
 	share VMData
 	content backup
+	options noserverino,cache=loose
 	username anna
 	smbversion 3
 
-- 
2.30.2




^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [pve-devel] [PATCH storage 1/2] add options parameter to cifs plugin (fixes #2920)
  2022-05-13 13:55 ` [pve-devel] [PATCH storage 1/2] add options parameter to cifs plugin (fixes #2920) Stefan Hrdlicka
@ 2022-07-28 10:26   ` Fiona Ebner
  0 siblings, 0 replies; 5+ messages in thread
From: Fiona Ebner @ 2022-07-28 10:26 UTC (permalink / raw)
  To: pve-devel, Stefan Hrdlicka

Please use "fix #2920" as a prefix

Am 13.05.22 um 15:55 schrieb Stefan Hrdlicka:
> this makes it possible to add all mount options offered by mount.cifs
> NFS & CIFS now share the options parameter since the use it for
> the same prupose
> 
> Signed-off-by: Stefan Hrdlicka <s.hrdlicka@proxmox.com>

Just style nits :), so you can add
Reviewed-by: Fiona Ebner <f.ebner@proxmox.com>
after addressing them.

> ---
>  PVE/Storage/CIFSPlugin.pm | 10 ++++++++--
>  PVE/Storage/NFSPlugin.pm  |  4 ----
>  PVE/Storage/Plugin.pm     |  6 ++++++
>  3 files changed, 14 insertions(+), 6 deletions(-)
> 
> diff --git a/PVE/Storage/CIFSPlugin.pm b/PVE/Storage/CIFSPlugin.pm
> index 982040a..e4ea320 100644
> --- a/PVE/Storage/CIFSPlugin.pm
> +++ b/PVE/Storage/CIFSPlugin.pm
> @@ -64,7 +64,7 @@ sub get_cred_file {
>  }
>  
>  sub cifs_mount {
> -    my ($server, $share, $mountpoint, $storeid, $smbver, $user, $domain) = @_;
> +    my ($server, $share, $mountpoint, $storeid, $smbver, $user, $domain, $options) = @_;
>  
>      $server = "[$server]" if Net::IP::ip_is_ipv6($server);
>      my $source = "//${server}/$share";
> @@ -80,6 +80,10 @@ sub cifs_mount {
>  
>      push @$cmd, '-o', defined($smbver) ? "vers=$smbver" : "vers=default";
>  
> +    if ($options) {
> +        push @$cmd, '-o', $options;
> +    }

Style nit: could be a single line with post-if

> +
>      run_command($cmd, errmsg => "mount error");
>  }
>  
> @@ -144,6 +148,7 @@ sub options {
>  	mkdir => { optional => 1 },
>  	bwlimit => { optional => 1 },
>  	preallocation => { optional => 1 },
> +	options => { optional => 1 },
>      };
>  }
>  
> @@ -223,6 +228,7 @@ sub activate_storage {
>      my $path = $scfg->{path};
>      my $server = $scfg->{server};
>      my $share = $scfg->{share};
> +    my $options = $scfg->{options};

Style nit: single-use variable that can be avoided by using
$scfg->{options} directly below.

>  
>      if (!cifs_is_mounted($server, $share, $path, $cache->{mountdata})) {
>  
> @@ -232,7 +238,7 @@ sub activate_storage {
>  	    "directory '$path' does not exist\n" if ! -d $path;
>  
>  	cifs_mount($server, $share, $path, $storeid, $scfg->{smbversion},
> -	    $scfg->{username}, $scfg->{domain});
> +	    $scfg->{username}, $scfg->{domain}, $options);

Style nit: already pre-existing problem, but nowadays, we put each
argument on a single line once it gets too long.

>      }
>  
>      $class->SUPER::activate_storage($storeid, $scfg, $cache);
> diff --git a/PVE/Storage/NFSPlugin.pm b/PVE/Storage/NFSPlugin.pm
> index 5bd7313..f777483 100644
> --- a/PVE/Storage/NFSPlugin.pm
> +++ b/PVE/Storage/NFSPlugin.pm
> @@ -69,10 +69,6 @@ sub properties {
>  	    description => "Server IP or DNS name.",
>  	    type => 'string', format => 'pve-storage-server',
>  	},
> -	options => {
> -	    description => "NFS mount options (see 'man nfs')",
> -	    type => 'string',  format => 'pve-storage-options',
> -	},
>      };
>  }
>  
> diff --git a/PVE/Storage/Plugin.pm b/PVE/Storage/Plugin.pm
> index 0a100b7..cf65b3c 100644
> --- a/PVE/Storage/Plugin.pm
> +++ b/PVE/Storage/Plugin.pm
> @@ -180,6 +180,12 @@ my $defaultData = {
>  	    default => 'metadata',
>  	    optional => 1,
>  	},
> +	options => {
> +	    description => "NFS/CIFS mount options (see 'man nfs' " .
> +                "or 'man mount.cifs')",

Style nit: wrong indentation

> +	    type => 'string',  format => 'pve-storage-options',
> +            optional => 1,

here as well

> +	},
>      },
>  };
>  




^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [pve-devel] [PATCH docs 2/2] cifs: add options parameter (fix #2920)
  2022-05-13 13:55 ` [pve-devel] [PATCH docs 2/2] cifs: add options parameter (fix #2920) Stefan Hrdlicka
@ 2022-07-28 10:26   ` Fiona Ebner
  0 siblings, 0 replies; 5+ messages in thread
From: Fiona Ebner @ 2022-07-28 10:26 UTC (permalink / raw)
  To: pve-devel, Stefan Hrdlicka

Am 13.05.22 um 15:55 schrieb Stefan Hrdlicka:
> Signed-off-by: Stefan Hrdlicka <s.hrdlicka@proxmox.com>
> ---
> this depends on 1/2 since this changes the documentation :)
> 
>  pve-storage-cifs.adoc | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/pve-storage-cifs.adoc b/pve-storage-cifs.adoc
> index bb4b902..60775a4 100644
> --- a/pve-storage-cifs.adoc
> +++ b/pve-storage-cifs.adoc
> @@ -57,6 +57,10 @@ path::
>  
>  The local mount point. Optional, defaults to `/mnt/pve/<STORAGE_ID>/`.
>  
> +options::
> +
> +CIFS mount options (see `man mount.cifs`).

Maybe add "Additional" and briefly mention that we set some options like
username, vers, etc. based on the other settings?

> +
>  .Configuration Example (`/etc/pve/storage.cfg`)
>  ----
>  cifs: backup
> @@ -64,6 +68,7 @@ cifs: backup
>  	server 10.0.0.11
>  	share VMData
>  	content backup
> +	options noserverino,cache=loose

Reading the man page, cache=loose sounds rather dangerous! I'd rather
have the example use something that can't lead to data corruption in
some scenarios :S

>  	username anna
>  	smbversion 3
>  




^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2022-07-28 10:27 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-13 13:55 [pve-devel] [PATCH storage 0/2] cifs plugin - add options parameter Stefan Hrdlicka
2022-05-13 13:55 ` [pve-devel] [PATCH storage 1/2] add options parameter to cifs plugin (fixes #2920) Stefan Hrdlicka
2022-07-28 10:26   ` Fiona Ebner
2022-05-13 13:55 ` [pve-devel] [PATCH docs 2/2] cifs: add options parameter (fix #2920) Stefan Hrdlicka
2022-07-28 10:26   ` Fiona Ebner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal