From: Aaron Lauterer <a.lauterer@proxmox.com>
To: "Proxmox VE development discussion" <pve-devel@lists.proxmox.com>,
"Fabian Grünbichler" <f.gruenbichler@proxmox.com>
Subject: Re: [pve-devel] [PATCH storage] deprecate mkdir option for create_path and populate_directory
Date: Mon, 26 Apr 2021 15:13:54 +0200 [thread overview]
Message-ID: <a4b1596e-5993-c6c6-48e0-634b1d6ec531@proxmox.com> (raw)
In-Reply-To: <1619161215.nw2u4dqxb6.astroid@nora.none>
On 4/23/21 9:08 AM, Fabian Grünbichler wrote:
> On January 4, 2021 4:30 pm, Aaron Lauterer wrote:
>> The `mkdir` option has two meanings[0][1] which are split up in `create_path`
>> and `populate_directory`.
>>
>> The `create_path` option decides if the path to the storage is
>> automatically created or not.
>> The `populate_directory` options decides if the default directory
>> structure (dump, images, ...) at the storage location is created.
>>
>> The `mkdir` option is still working but will trigger a warning in the
>> logs.
>>
>> As a side effect, this also fixes #3214 because the `create_path` option
>> is now run after the `is_mountpoint` check in the `activate_storage`
>> method in DirPlugin.pm.
>>
>> Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
>
> Reviewed-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
>
> with two nits that could be addressed as follow-up or folded in, see
> below
>
>>
>> [0] https://lists.proxmox.com/pipermail/pve-devel/2020-December/046575.html
>> [1] https://lists.proxmox.com/pipermail/pve-devel/2020-December/046576.html
>> ---
>>
>> To not be too spammy I only created a warning for mkdir in
>> Plugin::activate_storage.
>>
>> I wasn't sure if this warrants a 'fix #3214' in the commit message as the
>> fix is only a side effect.
>>
>> PVE/Storage/CIFSPlugin.pm | 4 +++-
>> PVE/Storage/CephFSPlugin.pm | 4 +++-
>> PVE/Storage/DirPlugin.pm | 19 ++++++++++++++++---
>> PVE/Storage/GlusterfsPlugin.pm | 4 +++-
>> PVE/Storage/NFSPlugin.pm | 4 +++-
>> PVE/Storage/Plugin.pm | 22 ++++++++++++++++++++++
>> 6 files changed, 50 insertions(+), 7 deletions(-)
>>
>> diff --git a/PVE/Storage/CIFSPlugin.pm b/PVE/Storage/CIFSPlugin.pm
>> index be06cc7..5ee3190 100644
>> --- a/PVE/Storage/CIFSPlugin.pm
>> +++ b/PVE/Storage/CIFSPlugin.pm
>> @@ -142,6 +142,8 @@ sub options {
>> domain => { optional => 1},
>> smbversion => { optional => 1},
>> mkdir => { optional => 1 },
>> + create_path => { optional => 1 },
>> + populate_directory => { optional => 1 },
>> bwlimit => { optional => 1 },
>> };
>> }
>> @@ -225,7 +227,7 @@ sub activate_storage {
>>
>> if (!cifs_is_mounted($server, $share, $path, $cache->{mountdata})) {
>>
>> - mkpath $path if !(defined($scfg->{mkdir}) && !$scfg->{mkdir});
>> + mkpath $path if $class->should_create_path($scfg);
>>
>> die "unable to activate storage '$storeid' - " .
>> "directory '$path' does not exist\n" if ! -d $path;
>> diff --git a/PVE/Storage/CephFSPlugin.pm b/PVE/Storage/CephFSPlugin.pm
>> index 8eb7c70..3d6309d 100644
>> --- a/PVE/Storage/CephFSPlugin.pm
>> +++ b/PVE/Storage/CephFSPlugin.pm
>> @@ -147,6 +147,8 @@ sub options {
>> content => { optional => 1 },
>> format => { optional => 1 },
>> mkdir => { optional => 1 },
>> + create_path => { optional => 1 },
>> + populate_directory => { optional => 1 },
>
> we have a preference for new parameters/properties to not use
> underscores, and the storage.cfg already has both (is_mountpoint and
> prune-backups), but we might want to fix this up before adding more
> underscores ;)
good point!
>
> I am not 100% sure about the naming either, since both options do very
> similar stuff (one creates the top level dir, the other the sub dirs).
> maybe
>
> create-path
> create-sub-dirs
>
> is more straightforward? (and a bit shorter for the latter as well ;))
`create-sub-dirs` sounds also a bit funny to me, and `create-sub-directories` is also quite long...
Any other opinions?
>
>> fuse => { optional => 1 },
>> bwlimit => { optional => 1 },
>> maxfiles => { optional => 1 },
>> @@ -203,7 +205,7 @@ sub activate_storage {
>> if (!cephfs_is_mounted($scfg, $storeid, $cache->{mountdata})) {
>> my $path = $scfg->{path};
>>
>> - mkpath $path if !(defined($scfg->{mkdir}) && !$scfg->{mkdir});
>> + mkpath $path if $class->should_create_path($scfg);
>>
>> die "unable to activate storage '$storeid' - " .
>> "directory '$path' does not exist\n" if ! -d $path;
>> diff --git a/PVE/Storage/DirPlugin.pm b/PVE/Storage/DirPlugin.pm
>> index 2267f11..22bdeff 100644
>> --- a/PVE/Storage/DirPlugin.pm
>> +++ b/PVE/Storage/DirPlugin.pm
>> @@ -30,10 +30,22 @@ sub properties {
>> type => 'string', format => 'pve-storage-path',
>> },
>> mkdir => {
>> + description =>
>> + "Deprecated, use the 'create_path' and " .
>> + "'populate_directory' options instead.",
>> + type => 'boolean',
>> + default => 'yes',
>> + },
>> + create_path => {
>> description => "Create the directory if it doesn't exist.",
>> type => 'boolean',
>> default => 'yes',
>> },
>> + populate_directory => {
>> + description => "Populate the directory with the default structure.",
>> + type => 'boolean',
>> + default => 'yes',
>> + },
>> is_mountpoint => {
>> description =>
>> "Assume the given path is an externally managed mountpoint " .
>> @@ -57,6 +69,8 @@ sub options {
>> content => { optional => 1 },
>> format => { optional => 1 },
>> mkdir => { optional => 1 },
>> + create_path => { optional => 1 },
>> + populate_directory => { optional => 1 },
>> is_mountpoint => { optional => 1 },
>> bwlimit => { optional => 1 },
>> };
>> @@ -133,9 +147,6 @@ sub activate_storage {
>> my ($class, $storeid, $scfg, $cache) = @_;
>>
>> my $path = $scfg->{path};
>> - if (!defined($scfg->{mkdir}) || $scfg->{mkdir}) {
>> - mkpath $path;
>> - }
>>
>> my $mp = parse_is_mountpoint($scfg);
>> if (defined($mp) && !path_is_mounted($mp, $cache->{mountdata})) {
>> @@ -143,6 +154,8 @@ sub activate_storage {
>> "directory is expected to be a mount point but is not mounted: '$mp'\n";
>> }
>>
>> + mkpath $path if $class->should_create_path($scfg);
>> +
>> $class->SUPER::activate_storage($storeid, $scfg, $cache);
>> }
>>
>> diff --git a/PVE/Storage/GlusterfsPlugin.pm b/PVE/Storage/GlusterfsPlugin.pm
>> index 2dd414d..4ad632f 100644
>> --- a/PVE/Storage/GlusterfsPlugin.pm
>> +++ b/PVE/Storage/GlusterfsPlugin.pm
>> @@ -136,6 +136,8 @@ sub options {
>> content => { optional => 1 },
>> format => { optional => 1 },
>> mkdir => { optional => 1 },
>> + create_path => { optional => 1 },
>> + populate_directory => { optional => 1 },
>> bwlimit => { optional => 1 },
>> };
>> }
>> @@ -300,7 +302,7 @@ sub activate_storage {
>>
>> if (!glusterfs_is_mounted($volume, $path, $cache->{mountdata})) {
>>
>> - mkpath $path if !(defined($scfg->{mkdir}) && !$scfg->{mkdir});
>> + mkpath $path if $class->should_create_path($scfg);
>>
>> die "unable to activate storage '$storeid' - " .
>> "directory '$path' does not exist\n" if ! -d $path;
>> diff --git a/PVE/Storage/NFSPlugin.pm b/PVE/Storage/NFSPlugin.pm
>> index e8e27c0..a32b707 100644
>> --- a/PVE/Storage/NFSPlugin.pm
>> +++ b/PVE/Storage/NFSPlugin.pm
>> @@ -87,6 +87,8 @@ sub options {
>> content => { optional => 1 },
>> format => { optional => 1 },
>> mkdir => { optional => 1 },
>> + create_path => { optional => 1 },
>> + populate_directory => { optional => 1 },
>> bwlimit => { optional => 1 },
>> };
>> }
>> @@ -129,7 +131,7 @@ sub activate_storage {
>>
>> if (!nfs_is_mounted($server, $export, $path, $cache->{mountdata})) {
>> # NOTE: only call mkpath when not mounted (avoid hang when NFS server is offline
>> - mkpath $path if !(defined($scfg->{mkdir}) && !$scfg->{mkdir});
>> + mkpath $path if $class->should_create_path($scfg);
>>
>> die "unable to activate storage '$storeid' - " .
>> "directory '$path' does not exist\n" if ! -d $path;
>> diff --git a/PVE/Storage/Plugin.pm b/PVE/Storage/Plugin.pm
>> index 57c58a9..c77acb4 100644
>> --- a/PVE/Storage/Plugin.pm
>> +++ b/PVE/Storage/Plugin.pm
>> @@ -1158,7 +1158,13 @@ sub activate_storage {
>> "directory '$path' does not exist or is unreachable\n";
>> }
>>
>> + warn "'mkdir' option is deprecated. Use 'create_path' or 'populate_directory' instead.\n"
>> + if defined($scfg->{mkdir});
>
> this warning here would benefit from having '$storeid: ' as prefix.
Thanks for catching this! As I think I will send in a v2 of this patch I will add it.
>
>>
>> + return if defined($scfg->{populate_directory})
>> + && !$scfg->{populate_directory};
>> +
>> + # FIXME The mkdir option is deprecated and populate_directory should be used
>> return if defined($scfg->{mkdir}) && !$scfg->{mkdir};
>>
>> if (defined($scfg->{content})) {
>> @@ -1454,4 +1460,20 @@ sub volume_import_formats {
>> return ();
>> }
>>
>> +sub should_create_path {
>> + my ($class, $scfg) = @_;
>> +
>> + # FIXME the mkdir parameter is deprecated and create_path should be used
>> + my $mkpath = 0;
>> + if (!defined($scfg->{create_path}) && !defined($scfg->{mkdir})) {
>> + $mkpath = 1;
>> + } elsif (defined($scfg->{create_path})) {
>> + $mkpath = 1 if $scfg->{create_path};
>> + } else {
>> + $mkpath = 1 if $scfg->{mkdir};
>> + }
>> +
>> + return $mkpath;
>> +}
>> +
>> 1;
>> --
>> 2.20.1
>>
>>
>>
>> _______________________________________________
>> pve-devel mailing list
>> pve-devel@lists.proxmox.com
>> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
>>
>>
>>
>
>
> _______________________________________________
> pve-devel mailing list
> pve-devel@lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
>
prev parent reply other threads:[~2021-04-26 13:14 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-04 15:30 Aaron Lauterer
2021-04-23 7:08 ` Fabian Grünbichler
2021-04-26 13:13 ` Aaron Lauterer [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=a4b1596e-5993-c6c6-48e0-634b1d6ec531@proxmox.com \
--to=a.lauterer@proxmox.com \
--cc=f.gruenbichler@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.