+ def getBlockDevInfo(self, blockdev):
+ devpath = "/sys/block/" + blockdev
+ error = False
+ removable = False
+ blacklisted = False
+ is_cdrom = False
+ partitions = []
+ try:
+ removable = bool(int(open(devpath + "/removable").read()))
+ dev = int(open(devpath + "/dev").read().split(':')[0])
+ if dev in [7, 31]: # loop, mtdblock
+ blacklisted = True
+ if blockdev[0:2] == 'sr':
+ is_cdrom = True
+ if blockdev[0:2] == 'hd':
+ try:
+ media = open("/proc/ide/%s/media" % blockdev).read()
+ if media.find("cdrom") != -1:
+ is_cdrom = True
+ except IOError:
+ error = True
+ # check for partitions
+ if not is_cdrom:
+ for partition in listdir(devpath):
+ if partition[0:len(blockdev)] != blockdev:
+ continue
+ partitions.append(partition)
+ else:
+ self.cd = blockdev
+ except IOError:
+ error = True
+ return error, blacklisted, removable, is_cdrom, partitions
+