Simply taking stat()'s st_rdev doesn't work here, as the minor is split into two parts, the major is present, and the "extended" bit isn't set. Not sure whether non-Linux needs different decoding here. Signed-off-by: Jan Beulich --- a/tools/python/xen/util/blkif.py +++ b/tools/python/xen/util/blkif.py @@ -20,7 +20,11 @@ def blkdev_name_to_number(name): devnum = None try: - return (devname, os.stat(n).st_rdev) + rdev = os.stat(n).st_rdev + if rdev > 0xffff and (rdev & 0xff00) == (202 << 8): + devnum = (1 << 28) + ((rdev >> 12) & ~0xff) + (rdev & 0xff) + return (devname, devnum) + return (devname, rdev) except Exception, ex: pass