Skip to content

Commit

Permalink
Update devscan.py
Browse files Browse the repository at this point in the history
Fix _extract_dev_name(device_dir) bug:
some device dir has no subdir "block/" , this will cause "IndexError: list index out of range".
In my test environment, LUN 0 has no "block/" subdir, but other LUNs are OK.
  • Loading branch information
wangyanbn committed Aug 8, 2014
1 parent bce4501 commit 7cd0e74
Showing 1 changed file with 10 additions and 4 deletions.
14 changes: 10 additions & 4 deletions drivers/devscan.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,8 @@ def adapters(filterstr="any"):
else:
dir = os.path.join(sysfs,lun,"device")
(dev, entry) = _extract_dev(dir, proc, id, lun)
devs[dev] = entry
if dev != "":
devs[dev] = entry
# for new qlogic sysfs layout (rport under device, then target)
for i in filter(match_rport,os.listdir(path)):
newpath = os.path.join(path, i)
Expand Down Expand Up @@ -223,9 +224,14 @@ def _extract_dev_name(device_dir):
return dev.lstrip('block:')
elif kernel_version.startswith('3.'):
# directory for device name lives inside block directory e.g. block/sdx
dev = glob.glob(os.path.join(device_dir, 'block/*'))[0]
# prune path to extract the device name
return os.path.basename(dev)

#bug fixed: some device dir has no subdir "block/" , e.g. LUN 0 has no "block/" subdir, but other LUNs are OK
devs = glob.glob(os.path.join(device_dir, 'block/*'))
if len(devs):
# prune path to extract the device name
return os.path.basename(devs[0])
else:
return ""
else:
msg = 'Kernel version detected: %s' % kernel_version
raise xs_errors.XenError('UnsupportedKernel', msg)
Expand Down

0 comments on commit 7cd0e74

Please sign in to comment.