diff --git a/linux-2.6.10-xen-sparse/drivers/xen/blkfront/vbd.c b/linux-2.6.10-xen-sparse/drivers/xen/blkfront/vbd.c index 00be870d91..25bfa59e79 100644 --- a/linux-2.6.10-xen-sparse/drivers/xen/blkfront/vbd.c +++ b/linux-2.6.10-xen-sparse/drivers/xen/blkfront/vbd.c @@ -317,7 +317,7 @@ static int xlvbd_init_device(vdisk_t *xd) down(&bd->bd_sem); gd = xlvbd_get_gendisk(mi, minor, xd); - if (mi == NULL) { + if (gd == NULL) { err = -EPERM; goto out; } diff --git a/tools/python/xen/xend/server/blkif.py b/tools/python/xen/xend/server/blkif.py index b980ebcb72..8a1de09bfc 100755 --- a/tools/python/xen/xend/server/blkif.py +++ b/tools/python/xen/xend/server/blkif.py @@ -66,8 +66,11 @@ def blkdev_name_to_number(name): if re.match( '/dev/sd[a-p]([0-9]|1[0-5])', n): return 8 * 256 + 16 * (ord(n[7:8]) - ord('a')) + int(n[8:]) - if re.match( '/dev/hd[a-p]([0-9]|[1-5][0-9]|6[0-3])', n): - return 3 * 256 + 16 * (ord(n[7:8]) - ord('a')) + int(n[8:]) + if re.match( '/dev/hd[a-t]([1-9]|[1-5][0-9]|6[0-3])?', n): + ide_majors = [ 3, 22, 33, 34, 56, 57, 88, 89, 90, 91 ] + major = ide_majors[(ord(n[7:8]) - ord('a')) / 2] + minor = ((ord(n[7:8]) - ord('a')) % 2) * 64 + int(n[8:] or 0) + return major * 256 + minor # see if this is a hex device number if re.match( '^(0x)?[0-9a-fA-F]+$', name ):