[pve-devel] [PATCH storage] fix #1912: find the partition instead of guessing it

Wolfgang Bumiller w.bumiller at proxmox.com
Fri Sep 14 10:30:41 CEST 2018


On Thu, Sep 13, 2018 at 04:56:26PM +0200, Dominik Csapak wrote:
> instead of using '$dev1' as partition,
> get the information from /sys/block/$dev
> 
> Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
> ---
>  PVE/API2/Disks/Directory.pm | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/PVE/API2/Disks/Directory.pm b/PVE/API2/Disks/Directory.pm
> index 8e6118a..2e249c5 100644
> --- a/PVE/API2/Disks/Directory.pm
> +++ b/PVE/API2/Disks/Directory.pm
> @@ -220,7 +220,12 @@ __PACKAGE__->register_method ({
>  		print "# ", join(' ', @$cmd), "\n";
>  		run_command($cmd);
>  
> -		my $part = "${dev}1";
> +		my ($devname) = $dev =~ m|^/dev/(.*)$|;
> +		my $part = "/dev/";
> +		dir_glob_foreach("/sys/block/$devname", "$devname.+", sub {

While the code far outside the here visible context lines "knows" $dev
is an actual existing path in /dev, I'd still like to see \Q and \E
around the variable in the glob here. You may even want to use
qr/\Q$devname\E.+/ instead of quotes...

> +		    my ($partition) = @_;
> +		    $part .= $partition;
> +		});
>  
>  		# create filesystem
>  		$cmd = [$MKFS, '-t', $type, $part];
> -- 
> 2.11.0



More information about the pve-devel mailing list