[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel][PATCH] opps in blockback when missing media
Hello, I've created a patch to prevent an oops in Dom0 that occurs when a CD device, specified as one of the 'hardrives' in the 'disk=' line of a para-virtualized guest's def file, has no media when the guest is started. The oops occurs in vbd.c when vbd_size() is called from connect() (in xenbus.c) and the vbd pointer is really an error code that comes from the failed open that occurred in vbd_create(). This patch applies to changeset 9993 signed off by Ross Maxfield <rmaxfiel@xxxxxxxxxx> --- a/linux-2.6-xen-sparse/drivers/xen/blkback/vbd.c Mon May 15 16:32:09 2006 +0100 +++ b/linux-2.6-xen-sparse/drivers/xen/blkback/vbd.c Mon May 15 11:49:39 2006 -0600 @@ -66,9 +66,10 @@ int vbd_create(blkif_t *blkif, blkif_vde vbd->bdev = open_by_devnum( vbd->pdevice, vbd->readonly ? FMODE_READ : FMODE_WRITE); + if (IS_ERR(vbd->bdev)) { - DPRINTK("vbd_creat: device %08x doesn't exist.\n", - vbd->pdevice); + DPRINTK("vbd_creat: device %08x could not be opened.\n", + vbd->bdev = NULL; return -ENOENT; } diff -r dc213d745642 linux-2.6-xen-sparse/drivers/xen/blkback/xenbus.c --- a/linux-2.6-xen-sparse/drivers/xen/blkback/xenbus.c Mon May 15 16:32:09 2006 +0100 +++ b/linux-2.6-xen-sparse/drivers/xen/blkback/xenbus.c Mon May 15 11:49:39 2006 -0600 @@ -305,6 +305,9 @@ static void connect(struct backend_info DPRINTK("%s", dev->otherend); + if (be->blkif->vbd.bdev == NULL) + return; + /* Supply the information about the device the frontend needs */ again: err = xenbus_transaction_start(&xbt); Attachment:
blkback-missing-media.diff _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |