[pve-devel] [PATCH] bug-fix: ZFSPoolPlugin

Dietmar Maurer dietmar at proxmox.com
Thu Feb 12 11:35:56 CET 2015


On 02/12/2015 11:26 AM, Wolfgang Link wrote:
> improve Error handling.
> inform user only if there is really no device.
> if both checks are fail.
>
> Signed-off-by: Wolfgang Link <w.link at proxmox.com>
> ---
>   PVE/Storage/ZFSPoolPlugin.pm |   20 ++++++++++++++++----
>   1 file changed, 16 insertions(+), 4 deletions(-)
>
> diff --git a/PVE/Storage/ZFSPoolPlugin.pm b/PVE/Storage/ZFSPoolPlugin.pm
> index 7dc7d3e..231d109 100644
> --- a/PVE/Storage/ZFSPoolPlugin.pm
> +++ b/PVE/Storage/ZFSPoolPlugin.pm
> @@ -180,14 +180,26 @@ sub alloc_image {
>       $name = $class->zfs_find_free_diskname($storeid, $scfg, $vmid) if !$name;
>       
>       $class->zfs_create_zvol($scfg, $name, $size);
> -    run_command ("udevadm trigger --subsystem-match block");
> -    run_command ("udevadm settle --timeout 5");
> -
> +
> +    eval {
> +	run_command ("udevadm trigger --subsystem-match block");
> +	run_command ("udevadm settle --timeout 5");
> +    };
> +
> +    my $warn = @$;
what is that? I guess you want:

  warn $@ if $@;

instead?

> +
> +    my $create_ok;
> +
>       for (1..10) {
> -       last if -e "/dev/zvol/$scfg->{pool}/$name" ;
> +	if (-e "/dev/zvol/$scfg->{pool}/$name") {
> +	    $create_ok = 1;
> +	    last;
> +	}
>          Time::HiRes::usleep(100);
>       }
>   
> +    die "can't alloc image\n" unless  $create_ok;
> +

We just want to wait until udev create the device /dev/zvol, but we do 
not want to
raise additional error (zfs alloctated the image successfully).
So above change makes no sense to me.

>       return $name;
>   }
>   





More information about the pve-devel mailing list