WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Xen

xen-devel

[Top] [All Lists]

[Xen-devel] [PATCH] minios: blkfront_aio_poll may reenter

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [PATCH] minios: blkfront_aio_poll may reenter
From: Samuel Thibault <samuel.thibault@xxxxxxxxxxxxx>
Date: 2008年3月26日 12:10:38 +0000
Delivery-date: 2008年3月26日 05:11:47 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Mail-followup-to: Samuel Thibault <samuel.thibault@xxxxxxxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/1.5.12-2006年07月14日
minios: blkfront_aio_poll may reenter
if the callback calls blkfront_sync for instance.
In such a case, we would see responses and hence release grants several
times. We huts need to be more synchronous and stop when we detect that
we have re-entered.
This fixes HVM restore with stubdomains.
Signed-off-by: Samuel Thibault <samuel.thibault@xxxxxxxxxxxxx>
diff -r 91c4e704169d extras/mini-os/blkfront.c
--- a/extras/mini-os/blkfront.c Wed Mar 26 11:28:47 2008 +0000
+++ b/extras/mini-os/blkfront.c Wed Mar 26 12:07:07 2008 +0000
@@ -319,6 +319,7 @@ int blkfront_aio_poll(struct blkfront_de
 {
 RING_IDX rp, cons;
 struct blkif_response *rsp;
+ int more;
 
 moretodo:
 #ifdef HAVE_LIBC
@@ -334,6 +335,7 @@ moretodo:
 while ((cons != rp))
 {
 rsp = RING_GET_RESPONSE(&dev->ring, cons);
+ nr_consumed++;
 
 if (rsp->status != BLKIF_RSP_OKAY)
 printk("block error %d for op %d\n", rsp->status, rsp->operation);
@@ -343,29 +345,30 @@ moretodo:
 case BLKIF_OP_WRITE:
 {
 struct blkfront_aiocb *aiocbp = (void*) (uintptr_t) rsp->id;
+ int status = rsp->status;
 int j;
 
 for (j = 0; j < aiocbp->n; j++)
 gnttab_end_access(aiocbp->gref[j]);
 
+ dev->ring.rsp_cons = ++cons;
 /* Nota: callback frees aiocbp itself */
- aiocbp->aio_cb(aiocbp, rsp->status ? -EIO : 0);
+ aiocbp->aio_cb(aiocbp, status ? -EIO : 0);
+ if (dev->ring.rsp_cons != cons)
+ /* We reentered, we must not continue here */
+ goto out;
 break;
 }
+ default:
+ printk("unrecognized block operation %d response\n", 
rsp->operation);
 case BLKIF_OP_WRITE_BARRIER:
 case BLKIF_OP_FLUSH_DISKCACHE:
- break;
- default:
- printk("unrecognized block operation %d response\n", 
rsp->operation);
+ dev->ring.rsp_cons = ++cons;
 break;
 }
+ }
 
- nr_consumed++;
- ++cons;
- }
- dev->ring.rsp_cons = cons;
-
- int more;
+out:
 RING_FINAL_CHECK_FOR_RESPONSES(&dev->ring, more);
 if (more) goto moretodo;
 
diff -r 91c4e704169d extras/mini-os/minios.mk
--- a/extras/mini-os/minios.mk Wed Mar 26 11:28:47 2008 +0000
+++ b/extras/mini-os/minios.mk Wed Mar 26 12:07:07 2008 +0000
@@ -16,10 +16,10 @@ DEF_LDFLAGS =
 
 ifeq ($(debug),y)
 DEF_CFLAGS += -g
-#DEF_CFLAGS += MM_DEBUG
-#DEF_CFLAGS += FS_DEBUG
-#DEF_CFLAGS += LIBC_DEBUG
-#DEF_CFLAGS += GNT_DEBUG
+#DEF_CFLAGS += -DMM_DEBUG
+#DEF_CFLAGS += -DFS_DEBUG
+#DEF_CFLAGS += -DLIBC_DEBUG
+DEF_CFLAGS += -DGNT_DEBUG
 else
 DEF_CFLAGS += -O3
 endif
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-devel] [PATCH] minios: blkfront_aio_poll may reenter, Samuel Thibault <=
Previous by Date: [Xen-devel] [PATCH] minios: more assertions , Samuel Thibault
Next by Date: [Xen-devel] IOEMU images format policy , Samuel Thibault
Previous by Thread: [Xen-devel] [PATCH] minios: more assertions , Samuel Thibault
Next by Thread: [Xen-devel] IOEMU images format policy , Samuel Thibault
Indexes: [Date] [Thread] [Top] [All Lists]

Copyright ©, Citrix Systems Inc. All rights reserved. Legal and Privacy
Citrix This site is hosted by Citrix

AltStyle によって変換されたページ (->オリジナル) /