[pve-devel] [PATCH v2 storage 09/10] common: introduce common module

Max Carrara m.carrara at proxmox.com
Wed Dec 18 10:36:00 CET 2024


On Tue Dec 17, 2024 at 4:48 PM CET, Fiona Ebner wrote:
> From: Max Carrara <m.carrara at proxmox.com>
>
> This module's purpose is to provide shared functions, constants, etc.
> for storage plugins and storage-related operations.
>
> It also contains the `get_deprecation_warning` subroutine that makes
> it easier to warn developers and/or plugin authors that a subroutine
> will be removed in the future.

Thanks for including this patch already! Was really happy to see this :)

Since I've never included a commit from somebody else's series / RFC in
another series, is the commit message usually left as it is? You did
mention below that you start out with a different function for your use
case, but wouldn't it make sense to adapt the commit message overall
accordingly? In this case, just the paragraph above my reply here.

Just a small thing I was wondering about; if it's not necessary then I'm
of course fine with leaving the message as it is.

Also thanks for fixing up the Makefile -- that slipped under my radar
back then, woops!

Another thing I wanna note: It's actually *really* great you're adding
this already; I was first intending to add this in an upcoming larger
series, but since you're adding it already it means that we can all add
stuff to this module independently and don't have to wait for my series
to make it in.

So, big thanks! It's much appreciated.

>
> Originally-by: Max Carrara <m.carrara at proxmox.com>
> [FE: start out with a different function for my use case
>      fixup Makefile]
> Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
> ---
>  src/PVE/Storage/Common.pm       | 54 +++++++++++++++++++++++++++++++++
>  src/PVE/Storage/Common/Makefile |  6 ++++
>  src/PVE/Storage/Makefile        |  2 ++
>  3 files changed, 62 insertions(+)
>  create mode 100644 src/PVE/Storage/Common.pm
>  create mode 100644 src/PVE/Storage/Common/Makefile
>
> diff --git a/src/PVE/Storage/Common.pm b/src/PVE/Storage/Common.pm
> new file mode 100644
> index 0000000..3ae20dd
> --- /dev/null
> +++ b/src/PVE/Storage/Common.pm
> @@ -0,0 +1,54 @@
> +package PVE::Storage::Common;
> +
> +use strict;
> +use warnings;
> +
> +=pod
> +
> +=head1 NAME
> +
> +PVE::Storage::Common - Shared functions and utilities for storage plugins and storage operations
> +
> +=head1 DESCRIPTION
> +
> +This module contains common subroutines that are mainly to be used by storage
> +plugins. This module's submodules contain subroutines that are tailored towards
> +a more specific or related purpose.
> +
> +Functions concerned with storage-related C<PVE::SectionConfig> things, helpers
> +for the C<PVE::Storage> API can be found in this module. Functions that can't
> +be grouped in a submodule can also be found here.
> +
> +=head1 SUBMODULES
> +
> +=over
> +
> +=back
> +
> +=head1 FUNCTIONS
> +
> +=cut
> +
> +=pod
> +
> +=head3 align_size_up
> +
> +    $aligned_size = align_size_up($size, $granularity)
> +
> +Returns the next size bigger than or equal to C<$size> that is aligned with a
> +granularity of C<$granularity>. Prints a message if the aligned size is not
> +equal to the aligned size.
> +
> +=cut
> +
> +sub align_size_up : prototype($$) {
> +    my ($size, $granularity) = @_;
> +
> +    my $padding = ($granularity - $size % $granularity) % $granularity;
> +    my $aligned_size = $size + $padding;
> +    print "size $size is not aligned to granularity $granularity, rounding up to $aligned_size\n"
> +	if $aligned_size != $size;
> +    return $aligned_size;
> +}
> +
> +1;
> diff --git a/src/PVE/Storage/Common/Makefile b/src/PVE/Storage/Common/Makefile
> new file mode 100644
> index 0000000..0c4bba5
> --- /dev/null
> +++ b/src/PVE/Storage/Common/Makefile
> @@ -0,0 +1,6 @@
> +SOURCES = \
> +
> +
> +.PHONY: install
> +install:
> +	for i in ${SOURCES}; do install -D -m 0644 $$i ${DESTDIR}${PERLDIR}/PVE/Storage/Common/$$i; done
> diff --git a/src/PVE/Storage/Makefile b/src/PVE/Storage/Makefile
> index d5cc942..ce3fd68 100644
> --- a/src/PVE/Storage/Makefile
> +++ b/src/PVE/Storage/Makefile
> @@ -1,4 +1,5 @@
>  SOURCES= \
> +	Common.pm \
>  	Plugin.pm \
>  	DirPlugin.pm \
>  	LVMPlugin.pm \
> @@ -18,5 +19,6 @@ SOURCES= \
>  
>  .PHONY: install
>  install:
> +	make -C Common install
>  	for i in ${SOURCES}; do install -D -m 0644 $$i ${DESTDIR}${PERLDIR}/PVE/Storage/$$i; done
>  	make -C LunCmd install





More information about the pve-devel mailing list