* [pve-devel] [PATCH storage manager docs] Allow mounting of CIFS subdirectories
@ 2022-12-01 11:32 Leo Nunner
2022-12-01 11:32 ` [pve-devel] [PATCH storage 1/1] fix #2641: allow " Leo Nunner
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: Leo Nunner @ 2022-12-01 11:32 UTC (permalink / raw)
To: pve-devel
CIFS supports mounting subdirectories inside a share, so it makes sense
to also have the 'subdir' parameter for the CIFS backend. I'm also
looking into allowing overrides for all the fixed directories, but
even then, I think it makes sense to support this parameter (for either
providing a prefix to all the other directories, or just changing the
base directory).
storage:
Leo Nunner (1):
fix #2641: allow mounting of CIFS subdirectories
PVE/Storage/CIFSPlugin.pm | 39 ++++++++++++++++++++-----------------
PVE/Storage/CephFSPlugin.pm | 4 ----
PVE/Storage/Plugin.pm | 5 +++++
3 files changed, 26 insertions(+), 22 deletions(-)
manager:
Leo Nunner (1):
fix #2641: expose CIFS subdir parameter through GUI
www/manager6/storage/CIFSEdit.js | 11 +++++++++++
1 file changed, 11 insertions(+)
docs:
Leo Nunner (1):
fix #2641: document subdir parameter for CIFS backend
pve-storage-cifs.adoc | 5 +++++
1 file changed, 5 insertions(+)
--
2.30.2
^ permalink raw reply [flat|nested] 7+ messages in thread
* [pve-devel] [PATCH storage 1/1] fix #2641: allow mounting of CIFS subdirectories
2022-12-01 11:32 [pve-devel] [PATCH storage manager docs] Allow mounting of CIFS subdirectories Leo Nunner
@ 2022-12-01 11:32 ` Leo Nunner
2023-02-07 14:58 ` [pve-devel] applied: " Thomas Lamprecht
2022-12-01 11:32 ` [pve-devel] [PATCH manager 1/1] fix #2641: expose CIFS subdir parameter through GUI Leo Nunner
` (2 subsequent siblings)
3 siblings, 1 reply; 7+ messages in thread
From: Leo Nunner @ 2022-12-01 11:32 UTC (permalink / raw)
To: pve-devel
CIFS/SMB supports directly mounting subdirectories, so it makes sense to
also allow the --subdir parameter for these storages. The subdir
parameter was moved from CephFSPlugin.pm to Plugin.pm, because it isn't
specific to CephFS anymore.
Signed-off-by: Leo Nunner <l.nunner@proxmox.com>
---
PVE/Storage/CIFSPlugin.pm | 39 ++++++++++++++++++++-----------------
PVE/Storage/CephFSPlugin.pm | 4 ----
PVE/Storage/Plugin.pm | 5 +++++
3 files changed, 26 insertions(+), 22 deletions(-)
diff --git a/PVE/Storage/CIFSPlugin.pm b/PVE/Storage/CIFSPlugin.pm
index 982040a..dc41e0b 100644
--- a/PVE/Storage/CIFSPlugin.pm
+++ b/PVE/Storage/CIFSPlugin.pm
@@ -13,11 +13,16 @@ use base qw(PVE::Storage::Plugin);
# CIFS helper functions
-sub cifs_is_mounted {
- my ($server, $share, $mountpoint, $mountdata) = @_;
+sub cifs_is_mounted : prototype($$) {
+ my ($scfg, $mountdata) = @_;
+
+ my $mountpoint = $scfg->{path};
+ my $server = $scfg->{server};
+ my $share = $scfg->{share};
+ my $subdir = $scfg->{subdir} // "/";
$server = "[$server]" if Net::IP::ip_is_ipv6($server);
- my $source = "//${server}/$share";
+ my $source = "//${server}/$share$subdir";
$mountdata = PVE::ProcFSTools::parse_proc_mounts() if !$mountdata;
return $mountpoint if grep {
@@ -63,11 +68,16 @@ sub get_cred_file {
return undef;
}
-sub cifs_mount {
- my ($server, $share, $mountpoint, $storeid, $smbver, $user, $domain) = @_;
+sub cifs_mount : prototype($$$$$) {
+ my ($scfg, $storeid, $smbver, $user, $domain) = @_;
+
+ my $mountpoint = $scfg->{path};
+ my $server = $scfg->{server};
+ my $share = $scfg->{share};
+ my $subdir = $scfg->{subdir} // "/";
$server = "[$server]" if Net::IP::ip_is_ipv6($server);
- my $source = "//${server}/$share";
+ my $source = "//${server}/$share$subdir";
my $cmd = ['/bin/mount', '-t', 'cifs', $source, $mountpoint, '-o', 'soft', '-o'];
@@ -130,6 +140,7 @@ sub options {
path => { fixed => 1 },
server => { fixed => 1 },
share => { fixed => 1 },
+ subdir => { optional => 1 },
nodes => { optional => 1 },
disable => { optional => 1 },
maxfiles => { optional => 1 },
@@ -204,12 +215,8 @@ sub status {
$cache->{mountdata} = PVE::ProcFSTools::parse_proc_mounts()
if !$cache->{mountdata};
- my $path = $scfg->{path};
- my $server = $scfg->{server};
- my $share = $scfg->{share};
-
return undef
- if !cifs_is_mounted($server, $share, $path, $cache->{mountdata});
+ if !cifs_is_mounted($scfg, $cache->{mountdata});
return $class->SUPER::status($storeid, $scfg, $cache);
}
@@ -221,17 +228,15 @@ sub activate_storage {
if !$cache->{mountdata};
my $path = $scfg->{path};
- my $server = $scfg->{server};
- my $share = $scfg->{share};
- if (!cifs_is_mounted($server, $share, $path, $cache->{mountdata})) {
+ if (!cifs_is_mounted($scfg, $cache->{mountdata})) {
mkpath $path if !(defined($scfg->{mkdir}) && !$scfg->{mkdir});
die "unable to activate storage '$storeid' - " .
"directory '$path' does not exist\n" if ! -d $path;
- cifs_mount($server, $share, $path, $storeid, $scfg->{smbversion},
+ cifs_mount($scfg, $storeid, $scfg->{smbversion},
$scfg->{username}, $scfg->{domain});
}
@@ -245,10 +250,8 @@ sub deactivate_storage {
if !$cache->{mountdata};
my $path = $scfg->{path};
- my $server = $scfg->{server};
- my $share = $scfg->{share};
- if (cifs_is_mounted($server, $share, $path, $cache->{mountdata})) {
+ if (cifs_is_mounted($scfg, $cache->{mountdata})) {
my $cmd = ['/bin/umount', $path];
run_command($cmd, errmsg => 'umount error');
}
diff --git a/PVE/Storage/CephFSPlugin.pm b/PVE/Storage/CephFSPlugin.pm
index 4976747..944f0b8 100644
--- a/PVE/Storage/CephFSPlugin.pm
+++ b/PVE/Storage/CephFSPlugin.pm
@@ -127,10 +127,6 @@ sub properties {
description => "Mount CephFS through FUSE.",
type => 'boolean',
},
- subdir => {
- description => "Subdir to mount.",
- type => 'string', format => 'pve-storage-path',
- },
'fs-name' => {
description => "The Ceph filesystem name.",
type => 'string', format => 'pve-configid',
diff --git a/PVE/Storage/Plugin.pm b/PVE/Storage/Plugin.pm
index 8a41df1..af53a99 100644
--- a/PVE/Storage/Plugin.pm
+++ b/PVE/Storage/Plugin.pm
@@ -169,6 +169,11 @@ my $defaultData = {
type => 'boolean',
optional => 1,
},
+ subdir => {
+ description => "Subdir to mount.",
+ type => 'string', format => 'pve-storage-path',
+ optional => 1,
+ },
'format' => {
description => "Default image format.",
type => 'string', format => 'pve-storage-format',
--
2.30.2
^ permalink raw reply [flat|nested] 7+ messages in thread
* [pve-devel] [PATCH manager 1/1] fix #2641: expose CIFS subdir parameter through GUI
2022-12-01 11:32 [pve-devel] [PATCH storage manager docs] Allow mounting of CIFS subdirectories Leo Nunner
2022-12-01 11:32 ` [pve-devel] [PATCH storage 1/1] fix #2641: allow " Leo Nunner
@ 2022-12-01 11:32 ` Leo Nunner
2022-12-01 11:32 ` [pve-devel] [PATCH docs 1/1] fix #2641: document subdir parameter for CIFS backend Leo Nunner
2023-02-02 14:20 ` [pve-devel] [PATCH storage manager docs] Allow mounting of CIFS subdirectories Leo Nunner
3 siblings, 0 replies; 7+ messages in thread
From: Leo Nunner @ 2022-12-01 11:32 UTC (permalink / raw)
To: pve-devel
makes it possible to optionally set the 'subdir' parameter when adding a
new CIFS storage.
Signed-off-by: Leo Nunner <l.nunner@proxmox.com>
---
RFC: I'm not sure whether this should be exposed, since it's not
available for CephFS either, but it might be a good idea to make this
more obvious to the user.
www/manager6/storage/CIFSEdit.js | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/www/manager6/storage/CIFSEdit.js b/www/manager6/storage/CIFSEdit.js
index 71415401..4c06de5e 100644
--- a/www/manager6/storage/CIFSEdit.js
+++ b/www/manager6/storage/CIFSEdit.js
@@ -129,6 +129,9 @@ Ext.define('PVE.storage.CIFSInputPanel', {
if (values.username?.length === 0) {
delete values.username;
}
+ if (values.subdir?.length === 0) {
+ delete values.subdir;
+ }
return me.callParent([values]);
},
@@ -216,6 +219,14 @@ Ext.define('PVE.storage.CIFSInputPanel', {
},
},
},
+ {
+ xtype: 'pmxDisplayEditField',
+ editable: me.isCreate,
+ name: 'subdir',
+ fieldLabel: 'Subdirectory',
+ allowBlank: true,
+ emptyText: gettext('/some/path'),
+ },
];
me.callParent();
--
2.30.2
^ permalink raw reply [flat|nested] 7+ messages in thread
* [pve-devel] [PATCH docs 1/1] fix #2641: document subdir parameter for CIFS backend
2022-12-01 11:32 [pve-devel] [PATCH storage manager docs] Allow mounting of CIFS subdirectories Leo Nunner
2022-12-01 11:32 ` [pve-devel] [PATCH storage 1/1] fix #2641: allow " Leo Nunner
2022-12-01 11:32 ` [pve-devel] [PATCH manager 1/1] fix #2641: expose CIFS subdir parameter through GUI Leo Nunner
@ 2022-12-01 11:32 ` Leo Nunner
2023-02-02 14:20 ` [pve-devel] [PATCH storage manager docs] Allow mounting of CIFS subdirectories Leo Nunner
3 siblings, 0 replies; 7+ messages in thread
From: Leo Nunner @ 2022-12-01 11:32 UTC (permalink / raw)
To: pve-devel
Signed-off-by: Leo Nunner <l.nunner@proxmox.com>
---
pve-storage-cifs.adoc | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/pve-storage-cifs.adoc b/pve-storage-cifs.adoc
index bb4b902..15f8034 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>/`.
+subdir::
+
+The subdirectory of the share to mount. Optional, defaults to the root directory of the share.
+
.Configuration Example (`/etc/pve/storage.cfg`)
----
cifs: backup
@@ -66,6 +70,7 @@ cifs: backup
content backup
username anna
smbversion 3
+ subdir /data
----
--
2.30.2
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [pve-devel] [PATCH storage manager docs] Allow mounting of CIFS subdirectories
2022-12-01 11:32 [pve-devel] [PATCH storage manager docs] Allow mounting of CIFS subdirectories Leo Nunner
` (2 preceding siblings ...)
2022-12-01 11:32 ` [pve-devel] [PATCH docs 1/1] fix #2641: document subdir parameter for CIFS backend Leo Nunner
@ 2023-02-02 14:20 ` Leo Nunner
2023-02-07 14:58 ` [pve-devel] applied: " Thomas Lamprecht
3 siblings, 1 reply; 7+ messages in thread
From: Leo Nunner @ 2023-02-02 14:20 UTC (permalink / raw)
To: pve-devel
On 2022-12-01 12:32, Leo Nunner wrote:
> CIFS supports mounting subdirectories inside a share, so it makes sense
> to also have the 'subdir' parameter for the CIFS backend. I'm also
> looking into allowing overrides for all the fixed directories, but
> even then, I think it makes sense to support this parameter (for either
> providing a prefix to all the other directories, or just changing the
> base directory).
>
> storage:
>
> Leo Nunner (1):
> fix #2641: allow mounting of CIFS subdirectories
>
> PVE/Storage/CIFSPlugin.pm | 39 ++++++++++++++++++++-----------------
> PVE/Storage/CephFSPlugin.pm | 4 ----
> PVE/Storage/Plugin.pm | 5 +++++
> 3 files changed, 26 insertions(+), 22 deletions(-)
>
> manager:
>
> Leo Nunner (1):
> fix #2641: expose CIFS subdir parameter through GUI
>
> www/manager6/storage/CIFSEdit.js | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> docs:
>
> Leo Nunner (1):
> fix #2641: document subdir parameter for CIFS backend
>
> pve-storage-cifs.adoc | 5 +++++
> 1 file changed, 5 insertions(+)
Bump due to continued user demand. storage and manager seem to still
apply, while docs produces a merge conflict because it clashes with the
"content-dirs" documentation. Does this warrant a v2?
^ permalink raw reply [flat|nested] 7+ messages in thread
* [pve-devel] applied: [PATCH storage 1/1] fix #2641: allow mounting of CIFS subdirectories
2022-12-01 11:32 ` [pve-devel] [PATCH storage 1/1] fix #2641: allow " Leo Nunner
@ 2023-02-07 14:58 ` Thomas Lamprecht
0 siblings, 0 replies; 7+ messages in thread
From: Thomas Lamprecht @ 2023-02-07 14:58 UTC (permalink / raw)
To: Proxmox VE development discussion, Leo Nunner
Am 01/12/2022 um 12:32 schrieb Leo Nunner:
> CIFS/SMB supports directly mounting subdirectories, so it makes sense to
> also allow the --subdir parameter for these storages. The subdir
> parameter was moved from CephFSPlugin.pm to Plugin.pm, because it isn't
> specific to CephFS anymore.
>
> Signed-off-by: Leo Nunner <l.nunner@proxmox.com>
> ---
> PVE/Storage/CIFSPlugin.pm | 39 ++++++++++++++++++++-----------------
> PVE/Storage/CephFSPlugin.pm | 4 ----
> PVE/Storage/Plugin.pm | 5 +++++
> 3 files changed, 26 insertions(+), 22 deletions(-)
>
>
the patch does more at once than ideal, I'd recommend doing such things as the
signature cleanups, which should not have any change functional effect after all,
first - that simplify review and also working with the history (e.g., bisect or just
wanting to see how a specific feature was done if adding a similar one).
But this was relatively minor crowding here, and I did not wanted to delay this
further... so applied, with some cleanups as follow up, thanks!
ps. the safer fallback for $subdir would have been a empty string '', as then it'd
be 1:1 the exact same value as before if one doesn't have any subdir configured -
but lets hope no cifs client/server throws up on a newly added trailing slash.
^ permalink raw reply [flat|nested] 7+ messages in thread
* [pve-devel] applied: [PATCH storage manager docs] Allow mounting of CIFS subdirectories
2023-02-02 14:20 ` [pve-devel] [PATCH storage manager docs] Allow mounting of CIFS subdirectories Leo Nunner
@ 2023-02-07 14:58 ` Thomas Lamprecht
0 siblings, 0 replies; 7+ messages in thread
From: Thomas Lamprecht @ 2023-02-07 14:58 UTC (permalink / raw)
To: Proxmox VE development discussion, Leo Nunner
Am 02/02/2023 um 15:20 schrieb Leo Nunner:
> On 2022-12-01 12:32, Leo Nunner wrote:
>> CIFS supports mounting subdirectories inside a share, so it makes sense
>> to also have the 'subdir' parameter for the CIFS backend. I'm also
>> looking into allowing overrides for all the fixed directories, but
>> even then, I think it makes sense to support this parameter (for either
>> providing a prefix to all the other directories, or just changing the
>> base directory).
>>
>> storage:
>>
>> Leo Nunner (1):
>> fix #2641: allow mounting of CIFS subdirectories
>>
>> PVE/Storage/CIFSPlugin.pm | 39 ++++++++++++++++++++-----------------
>> PVE/Storage/CephFSPlugin.pm | 4 ----
>> PVE/Storage/Plugin.pm | 5 +++++
>> 3 files changed, 26 insertions(+), 22 deletions(-)
>>
>> manager:
>>
>> Leo Nunner (1):
>> fix #2641: expose CIFS subdir parameter through GUI
>>
>> www/manager6/storage/CIFSEdit.js | 11 +++++++++++
>> 1 file changed, 11 insertions(+)
>>
>> docs:
>>
>> Leo Nunner (1):
>> fix #2641: document subdir parameter for CIFS backend
>>
>> pve-storage-cifs.adoc | 5 +++++
>> 1 file changed, 5 insertions(+)
>
> Bump due to continued user demand. storage and manager seem to still
storage produces a merge conflict, that git could auto-merge.
Would be great if you could send a v2 for manager and docs, as those I'd apply
then once storage is bumped.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2023-02-07 14:58 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-12-01 11:32 [pve-devel] [PATCH storage manager docs] Allow mounting of CIFS subdirectories Leo Nunner
2022-12-01 11:32 ` [pve-devel] [PATCH storage 1/1] fix #2641: allow " Leo Nunner
2023-02-07 14:58 ` [pve-devel] applied: " Thomas Lamprecht
2022-12-01 11:32 ` [pve-devel] [PATCH manager 1/1] fix #2641: expose CIFS subdir parameter through GUI Leo Nunner
2022-12-01 11:32 ` [pve-devel] [PATCH docs 1/1] fix #2641: document subdir parameter for CIFS backend Leo Nunner
2023-02-02 14:20 ` [pve-devel] [PATCH storage manager docs] Allow mounting of CIFS subdirectories Leo Nunner
2023-02-07 14:58 ` [pve-devel] applied: " Thomas Lamprecht
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox