[pve-devel] applied: [PATCH v2 installer] fix behavior if zfs disks have no by-id path

Thomas Lamprecht t.lamprecht at proxmox.com
Wed Mar 4 15:27:05 CET 2020


On 2/24/20 9:37 AM, Aaron Lauterer wrote:
> in some situations it is possible, that a disk does not have a
> /dev/disk/by-id path. Reported cases are KVM with virtio-blk [0] and
> with VMware player / workstation when using the paravirtual SCSI disk
> types [1]. It can be reproduced in Proxmox VE by using virtio-blk disks
> for the VM.
> 
>> The issue at hand happens because udev does not create the
>> /dev/disk/by-id symlink in
>> '/lib/udev/rules.d/60-persistent-storage.rules', since it does
>> not have a serial-number for the device (which in the virtio-blk case
>> is in turn maybe caused by qemu-server not adding one to the
>> commandline).
> Quoted from [2]
> 
> This regression was introduced with commit
> e1b490865f750e08f6c9c6b7e162e7def9dcc411 which always replaced the disks
> in the $vdev variable even if the result of the by-id lookup was
> `undef`. Thus the paths did not point to any valid disk and the zpool
> creation failed.
> 
> This patch replaces the disk paths with by-id paths only if they are
> present.
> 
> [0] https://forum.proxmox.com/threads/installation-on-raidz-1-fails.65603/
> [1] https://forum.proxmox.com/threads/not-install-promox-6-1-zfs-0-04-disk-vmware-15-pro.65269/
> [2] https://pve.proxmox.com/pipermail/pve-devel/2020-February/041841.html
> 
> Signed-off-by: Aaron Lauterer <a.lauterer at proxmox.com>
> ---
> 
> v1 -> v2:
> * use if clause instead of overwriting $by_id as suggested by Fabian [3]
> * write a more thorough commit message
> 
> [3] https://pve.proxmox.com/pipermail/pve-devel/2020-February/041843.html
> 
>  proxinstall | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/proxinstall b/proxinstall
> index bad877f..e9dd50a 100755
> --- a/proxinstall
> +++ b/proxinstall
> @@ -1359,7 +1359,7 @@ sub extract_data {
>  		my $devname = @$hd[1];
>  		my $by_id = find_stable_path ("/dev/disk/by-id", $devname);
>  
> -		$vdev =~ s/ $devname/ $by_id/;
> +		$vdev =~ s/ $devname/ $by_id/ if $by_id;
>  	    }
>  
>  	    zfs_create_rpool($vdev);
> 

applied, thanks!




More information about the pve-devel mailing list