Olaf Hering
61653f6441
- rename 5 patches which were merged upstream OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=207
85 lines
3.7 KiB
Diff
85 lines
3.7 KiB
Diff
changeset: 26010:cff10030c6ea
|
|
user: Olaf Hering <olaf@aepfle.de>
|
|
date: Mon Oct 08 12:18:33 2012 +0100
|
|
files: tools/python/xen/util/vscsi_util.py
|
|
description:
|
|
xend/pvscsi: update sysfs parser for Linux 3.0
|
|
|
|
The sysfs parser for /sys/bus/scsi/devices understands only the layout
|
|
of kernel version 2.6.16. This looks as follows:
|
|
|
|
/sys/bus/scsi/devices/1:0:0:0/block:sda is a symlink to /sys/block/sda/
|
|
/sys/bus/scsi/devices/1:0:0:0/scsi_generic:sg1 is a symlink to /sys/class/scsi_generic/sg1
|
|
|
|
Both directories contain a 'dev' file with the major:minor information.
|
|
This patch updates the used regex strings to match also the colon to
|
|
make it more robust against possible future changes.
|
|
|
|
In kernel version 3.0 the layout changed:
|
|
/sys/bus/scsi/devices/ contains now additional symlinks to directories
|
|
such as host1 and target1:0:0. This patch ignores these as they do not
|
|
point to the desired scsi devices. They just clutter the devices array.
|
|
|
|
The directory layout in '1:0:0:0' changed as well, the 'type:name'
|
|
notation was replaced with 'type/name' directories:
|
|
|
|
/sys/bus/scsi/devices/1:0:0:0/block/sda/
|
|
/sys/bus/scsi/devices/1:0:0:0/scsi_generic/sg1/
|
|
|
|
Both directories contain a 'dev' file with the major:minor information.
|
|
This patch adds additional code to walk the subdir to find the 'dev'
|
|
file to make sure the given subdirectory is really the kernel name.
|
|
|
|
In addition this patch makes sure devname is not None.
|
|
|
|
Signed-off-by: Olaf Hering <olaf@aepfle.de>
|
|
Acked-by: Ian Campbell <ian.campbell@citrix.com>
|
|
Committed-by: Ian Campbell <ian.campbell@citrix.com>
|
|
|
|
|
|
diff -r 2dbfa4d2e107 -r cff10030c6ea tools/python/xen/util/vscsi_util.py
|
|
--- a/tools/python/xen/util/vscsi_util.py Mon Oct 08 12:18:32 2012 +0100
|
|
+++ b/tools/python/xen/util/vscsi_util.py Mon Oct 08 12:18:33 2012 +0100
|
|
@@ -130,20 +130,36 @@ def _vscsi_get_scsidevices_by_sysfs():
|
|
|
|
for dirpath, dirnames, files in os.walk(sysfs_mnt + SYSFS_SCSI_PATH):
|
|
for hctl in dirnames:
|
|
+ if len(hctl.split(':')) != 4:
|
|
+ continue
|
|
paths = os.path.join(dirpath, hctl)
|
|
devname = None
|
|
sg = None
|
|
scsi_id = None
|
|
for f in os.listdir(paths):
|
|
realpath = os.path.realpath(os.path.join(paths, f))
|
|
- if re.match('^block', f) or \
|
|
- re.match('^tape', f) or \
|
|
- re.match('^scsi_changer', f) or \
|
|
- re.match('^onstream_tape', f):
|
|
+ if re.match('^block:', f) or \
|
|
+ re.match('^tape:', f) or \
|
|
+ re.match('^scsi_changer:', f) or \
|
|
+ re.match('^onstream_tape:', f):
|
|
devname = os.path.basename(realpath)
|
|
+ elif f == "block" or \
|
|
+ f == "tape" or \
|
|
+ f == "scsi_changer" or \
|
|
+ f == "onstream_tape":
|
|
+ for dir in os.listdir(os.path.join(paths, f)):
|
|
+ if os.path.exists(os.path.join(paths, f, dir, "dev")):
|
|
+ devname = os.path.basename(dir)
|
|
|
|
- if re.match('^scsi_generic', f):
|
|
+ if re.match('^scsi_generic:', f):
|
|
sg = os.path.basename(realpath)
|
|
+ elif f == "scsi_generic":
|
|
+ for dir in os.listdir(os.path.join(paths, f)):
|
|
+ if os.path.exists(os.path.join(paths, f, dir, "dev")):
|
|
+ sg = os.path.basename(dir)
|
|
+ if sg:
|
|
+ if devname is None:
|
|
+ devname = sg
|
|
scsi_id = _vscsi_get_scsiid(sg)
|
|
devices.append([hctl, devname, sg, scsi_id])
|
|
|