Parsing of /proc/scsi/scsi updated to work with latest zFCP. Matching SCSI ID correctly with all of zFCP device, WWPN, and LUN. Synchronization with udev_settle. Error case is handled gracefully and reports user readable error message. --- storage/zfcp.py | 31 ++++++++++++++++++++++--------- 1 files changed, 22 insertions(+), 9 deletions(-) diff --git a/storage/zfcp.py b/storage/zfcp.py index 2584268..7bb31b9 100644 --- a/storage/zfcp.py +++ b/storage/zfcp.py @@ -135,26 +135,39 @@ class ZFCPDevice: f = open("/proc/scsi/scsi", "r") lines = f.readlines() f.close() + # alternatively iterate over /sys/bus/scsi/devices/*:0:*:*/ for line in lines: if not line.startswith("Host"): continue scsihost = string.split(line) host = scsihost[1] - channel = scsihost[3] + channel = "0" id = scsihost[5] lun = scsihost[7] - scsidev = "%s:%s:%s:%s" % (host[4], channel[1], id[1], lun[1]) - fcpsysfs = "%s/%s/fcp_lun" % (scsidevsysfs, scsidev) - fcpdel = "%s/%s/delete" % (scsidevsysfs, scsidev) + scsidev = "%s:%s:%s:%s" % (host[4:], channel, id, lun) + fcpsysfs = "%s/%s" % (scsidevsysfs, scsidev) + scsidel = "%s/%s/delete" % (scsidevsysfs, scsidev) - f = open(fcpsysfs, "r") - fcplunsysfs = f.readline() + f = open("%s/hba_id" %(fcpsysfs), "r") + fcphbasysfs = f.readline().strip() f.close() + f = open("%s/wwpn" %(fcpsysfs), "r") + fcpwwpnsysfs = f.readline().strip() + f.close() + f = open("%s/fcp_lun" %(fcpsysfs), "r") + fcplunsysfs = f.readline().strip() + f.close() + + if fcphbasysfs == self.devnum \ + and fcpwwpnsysfs == self.wwpn \ + and fcplunsysfs == self.fcplun: + loggedWriteLineToFile(scsidel, "1") + udev_settle() + return - if fcplunsysfs[:6] == self.fcplun[:6]: - loggedWriteLineToFile(fcpdel, "1") - break + log.warn("no scsi device found to delete for zfcp %s %s %s" + %(self.devnum, self.wwpn, self.fcplun)) def offlineDevice(self): offline = "%s/%s/online" %(zfcpsysfs, self.devnum) -- 1.6.3.1 _______________________________________________ Anaconda-devel-list mailing list Anaconda-devel-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/anaconda-devel-list