[pve-devel] r5778 - pve-storage/trunk

svn-commits at proxmox.com svn-commits at proxmox.com
Mon Apr 4 06:59:38 CEST 2011


Author: dietmar
Date: 2011-04-04 06:59:38 +0200 (Mon, 04 Apr 2011)
New Revision: 5778

Modified:
   pve-storage/trunk/ChangeLog
   pve-storage/trunk/Makefile
   pve-storage/trunk/Storage.pm
   pve-storage/trunk/changelog.Debian
Log:


Modified: pve-storage/trunk/ChangeLog
===================================================================
--- pve-storage/trunk/ChangeLog	2011-04-01 12:30:12 UTC (rev 5777)
+++ pve-storage/trunk/ChangeLog	2011-04-04 04:59:38 UTC (rev 5778)
@@ -1,3 +1,8 @@
+2011-04-04  Proxmox Support Team  <support at proxmox.com>
+
+	* Storage.pm (load_stable_scsi_paths): fast way to find stable
+	paths (patch from Alexandre).
+
 2010-11-08  Proxmox Support Team  <support at proxmox.com>
 
 	* Storage.pm (iscsi_login): multipath fixes: log in to all portals

Modified: pve-storage/trunk/Makefile
===================================================================
--- pve-storage/trunk/Makefile	2011-04-01 12:30:12 UTC (rev 5777)
+++ pve-storage/trunk/Makefile	2011-04-04 04:59:38 UTC (rev 5778)
@@ -1,8 +1,8 @@
-RELEASE=1.6
+RELEASE=1.8
 
 VERSION=1.0
 PACKAGE=libpve-storage-perl
-PKGREL=16
+PKGREL=17
 
 DESTDIR=
 PREFIX=/usr

Modified: pve-storage/trunk/Storage.pm
===================================================================
--- pve-storage/trunk/Storage.pm	2011-04-01 12:30:12 UTC (rev 5777)
+++ pve-storage/trunk/Storage.pm	2011-04-04 04:59:38 UTC (rev 5778)
@@ -209,6 +209,30 @@
     return $name;
 }
 
+sub load_stable_scsi_paths {
+
+    my $stable_paths = {};
+
+    my $stabledir = "/dev/disk/by-id";
+
+    if (my $dh = IO::Dir->new($stabledir)) {
+       while (defined(my $tmp = $dh->read)) {
+           # exclude filenames with part in name (same disk but partitions)
+           # use only filenames with scsi(with multipath i have the same device 
+	   # with dm-uuid-mpath , dm-name and scsi in name)
+           if($tmp !~ m/-part\d+$/ && $tmp =~ m/^scsi-/) {
+                 my $path = "$stabledir/$tmp";
+                 my $bdevdest = readlink($path);
+		 if ($bdevdest && $bdevdest =~ m|^../../([^/]+)|) {
+		     $stable_paths->{$1}=$tmp;
+		 }
+	   }
+       }
+       $dh->close;
+    }
+    return $stable_paths;
+}
+
 sub dir_glob_regex {
     my ($dir, $regex) = @_;
 
@@ -1186,6 +1210,8 @@
 
     my $dirname = '/sys/class/iscsi_session';
 
+    my $stable_paths = load_stable_scsi_paths();
+
     dir_glob_foreach ($dirname, 'session(\d+)', sub {
 	my ($ent, $session) = @_;
 
@@ -1215,7 +1241,7 @@
 		$bdev = $multipathdev if $multipathdev;
 	    }
 
-	    my $blockdev = find_dev_by_id ("/dev/$bdev");
+	    my $blockdev = $stable_paths->{$bdev};
 	    return if !$blockdev;
 
 	    my $size = file_read_firstline ("/sys/block/$bdev/size");

Modified: pve-storage/trunk/changelog.Debian
===================================================================
--- pve-storage/trunk/changelog.Debian	2011-04-01 12:30:12 UTC (rev 5777)
+++ pve-storage/trunk/changelog.Debian	2011-04-04 04:59:38 UTC (rev 5778)
@@ -1,3 +1,9 @@
+libpve-storage-perl (1.0-17) unstable; urgency=low
+
+  * avoid delays when there are many iscsi devices (Alexandre)
+
+ -- Proxmox Support Team <support at proxmox.com>  Mon, 04 Apr 2011 06:58:29 +0200
+
 libpve-storage-perl (1.0-16) unstable; urgency=low
 
   * multipath fix: login to all portals



More information about the pve-devel mailing list