From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Ross Maxfield" Subject: [PATCH] opps in blockback when missing media Date: Mon, 15 May 2006 12:14:35 -0600 Message-ID: <44686ECF.DD28.00D3.0@novell.com> References: <4468C0AF.5010006@virtualiron.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=__Part9ABFBB1B.0__=" Return-path: In-Reply-To: <4468C0AF.5010006@virtualiron.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org --=__Part9ABFBB1B.0__= Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Disposition: inline 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 --- 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); --=__Part9ABFBB1B.0__= Content-Type: application/octet-stream; name="blkback-missing-media.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="blkback-missing-media.diff" ZGlmZiAtciBkYzIxM2Q3NDU2NDIgbGludXgtMi42LXhlbi1zcGFyc2UvZHJpdmVycy94ZW4vYmxr YmFjay92YmQuYwotLS0gYS9saW51eC0yLjYteGVuLXNwYXJzZS9kcml2ZXJzL3hlbi9ibGtiYWNr L3ZiZC5jCU1vbiBNYXkgMTUgMTY6MzI6MDkgMjAwNiArMDEwMAorKysgYi9saW51eC0yLjYteGVu LXNwYXJzZS9kcml2ZXJzL3hlbi9ibGtiYWNrL3ZiZC5jCU1vbiBNYXkgMTUgMTE6NDk6MzkgMjAw NiAtMDYwMApAQCAtNjYsOSArNjYsMTAgQEAgaW50IHZiZF9jcmVhdGUoYmxraWZfdCAqYmxraWYs IGJsa2lmX3ZkZQogCXZiZC0+YmRldiA9IG9wZW5fYnlfZGV2bnVtKAogCQl2YmQtPnBkZXZpY2Us CiAJCXZiZC0+cmVhZG9ubHkgPyBGTU9ERV9SRUFEIDogRk1PREVfV1JJVEUpOworCiAJaWYgKElT X0VSUih2YmQtPmJkZXYpKSB7Ci0JCURQUklOVEsoInZiZF9jcmVhdDogZGV2aWNlICUwOHggZG9l c24ndCBleGlzdC5cbiIsCi0JCQl2YmQtPnBkZXZpY2UpOworCQlEUFJJTlRLKCJ2YmRfY3JlYXQ6 IGRldmljZSAlMDh4IGNvdWxkIG5vdCBiZSBvcGVuZWQuXG4iLAorCQl2YmQtPmJkZXYgPSBOVUxM OwogCQlyZXR1cm4gLUVOT0VOVDsKIAl9CiAKZGlmZiAtciBkYzIxM2Q3NDU2NDIgbGludXgtMi42 LXhlbi1zcGFyc2UvZHJpdmVycy94ZW4vYmxrYmFjay94ZW5idXMuYwotLS0gYS9saW51eC0yLjYt eGVuLXNwYXJzZS9kcml2ZXJzL3hlbi9ibGtiYWNrL3hlbmJ1cy5jCU1vbiBNYXkgMTUgMTY6MzI6 MDkgMjAwNiArMDEwMAorKysgYi9saW51eC0yLjYteGVuLXNwYXJzZS9kcml2ZXJzL3hlbi9ibGti YWNrL3hlbmJ1cy5jCU1vbiBNYXkgMTUgMTE6NDk6MzkgMjAwNiAtMDYwMApAQCAtMzA1LDYgKzMw NSw5IEBAIHN0YXRpYyB2b2lkIGNvbm5lY3Qoc3RydWN0IGJhY2tlbmRfaW5mbyAKIAogCURQUklO VEsoIiVzIiwgZGV2LT5vdGhlcmVuZCk7CiAKKyAgICAgICAgaWYgKGJlLT5ibGtpZi0+dmJkLmJk ZXYgPT0gTlVMTCkKKyAgICAgICAgICAgICAgIHJldHVybjsKKwogCS8qIFN1cHBseSB0aGUgaW5m b3JtYXRpb24gYWJvdXQgdGhlIGRldmljZSB0aGUgZnJvbnRlbmQgbmVlZHMgKi8KIGFnYWluOgog CWVyciA9IHhlbmJ1c190cmFuc2FjdGlvbl9zdGFydCgmeGJ0KTsK --=__Part9ABFBB1B.0__= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --=__Part9ABFBB1B.0__=--