* [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] 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] [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 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