[pve-devel] [PATCH] add scsi-block detection

Alexandre DERUMIER aderumier at odiso.com
Fri Mar 16 12:12:04 CET 2012


yes,it's work, i tested it with my multipathed iscsi luns.

----- Mail original ----- 

De: "Dietmar Maurer" <dietmar at proxmox.com> 
À: "Derumier Alexandre" <aderumier at odiso.com>, pve-devel at pve.proxmox.com 
Envoyé: Vendredi 16 Mars 2012 11:18:22 
Objet: RE: [pve-devel] [PATCH] add scsi-block detection 

And such multipath device works with the scsi-block driver (you tested that)? 

- Dietmar 

> -----Original Message----- 
> From: pve-devel-bounces at pve.proxmox.com [mailto:pve-devel- 
> bounces at pve.proxmox.com] On Behalf Of Derumier Alexandre 
> Sent: Freitag, 16. März 2012 08:57 
> To: pve-devel at pve.proxmox.com 
> Subject: [pve-devel] [PATCH] add scsi-block detection 
> 
> 
> Signed-off-by: Derumier Alexandre <aderumier at odiso.com> 
> --- 
> PVE/QemuServer.pm | 48 
> +++++++++++++++++++++++++++++++++++++++++++++--- 
> 1 files changed, 45 insertions(+), 3 deletions(-) 
> 
> diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm index 
> 3991606..13a7852 100644 
> --- a/PVE/QemuServer.pm 
> +++ b/PVE/QemuServer.pm 
> @@ -25,6 +25,7 @@ use PVE::Cluster qw(cfs_register_file cfs_read_file 
> cfs_write_file cfs_lock_file use PVE::INotify; use PVE::ProcFSTools; use 
> Time::HiRes qw(gettimeofday); 
> +use Unix::Mknod qw(:all); 
> 
> my $cpuinfo = PVE::ProcFSTools::read_cpuinfo(); 
> 
> @@ -904,9 +905,8 @@ sub print_drivedevice_full { 
> } else { 
> $path = PVE::Storage::path($storecfg, $drive->{file}); 
> } 
> - if ($path =~ m|^/dev/| ) { 
> - $devicetype = 'block'; 
> - } 
> + 
> + $devicetype = 'block' if path_is_scsi($path); 
> } 
> 
> $device = "scsi-$devicetype,bus=lsi$controller.0,scsi- 
> id=$unit,drive=drive-$drive->{interface}$drive->{index},id=$drive- 
> >{interface}$drive->{index}"; 
> @@ -2904,6 +2904,48 @@ sub vm_stopall { 
> print $msg; 
> } 
> 
> +sub path_is_scsi { 
> + my ($path) = @_; 
> + 
> + return if ($path !~ m|^/dev/|); 
> + 
> + my $bdev = undef; 
> + #if path is /dev/xxx 
> + if($path =~ m|^/dev/[^/]+/?$|) { 
> + $bdev = $path; 
> + } 
> + #if path is /dev/disk/ 
> + elsif ($path =~ m|^/dev/disk/|) { 
> + $bdev = readlink($path); 
> + #if multipath, we need to find real device 
> + if($bdev =~ m/(dm-(\d+))$/) { 
> + my $dir="/sys/block/$1/slaves/"; 
> + my $dh = IO::Dir->new ($dir); 
> + if (defined $dh) { 
> + while (defined(my $tmp = $dh->read)) { 
> + if ($tmp =~ m/([0-9A-Za-z])$/) { 
> + $bdev="/dev/$tmp"; 
> + } 
> + } 
> + } 
> + } 
> + elsif ($bdev =~ m/(\w+)/) { 
> + $bdev="/dev/$1"; 
> + } 
> + } 
> + 
> + return if !$bdev; 
> + 
> + my $st=stat($bdev); 
> + my $major=Unix::Mknod::major($st->rdev); 
> + 
> + if ($major =~ m/^(\d+)$/) { 
> + $major = $1; 
> + my @scsimajors = 
> (8,65,66,67,68,69,70,71,128,129,130,131,132,133,134,135); 
> + return 1 if (grep /^$major$/, @scsimajors) 
> + } 
> +} 
> + 
> # pci helpers 
> 
> sub file_write { 
> -- 
> 1.7.2.5 
> 
> _______________________________________________ 
> pve-devel mailing list 
> pve-devel at pve.proxmox.com 
> http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel 





-- 

-- 




	Alexandre D erumier 
Ingénieur Système 
Fixe : 03 20 68 88 90 
Fax : 03 20 68 90 81 
45 Bvd du Général Leclerc 59100 Roubaix - France 
12 rue Marivaux 75002 Paris - France 
	



More information about the pve-devel mailing list