Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/netbsd-3]: src/sys/arch/xen/xen Pull up revision 1.14 (requested by yamt...
details: https://anonhg.NetBSD.org/src/rev/b6d7f5b15954
branches: netbsd-3
changeset: 577013:b6d7f5b15954
user: tron <tron%NetBSD.org@localhost>
date: Sun Aug 21 22:12:21 2005 +0000
description:
Pull up revision 1.14 (requested by yamt in ticket #682):
fix a race by re-checking req_prod when exiting main loop.
diffstat:
sys/arch/xen/xen/xbdback.c | 17 +++++++++++++++--
1 files changed, 15 insertions(+), 2 deletions(-)
diffs (40 lines):
diff -r 9e459dcfa143 -r b6d7f5b15954 sys/arch/xen/xen/xbdback.c
--- a/sys/arch/xen/xen/xbdback.c Sun Aug 21 22:08:52 2005 +0000
+++ b/sys/arch/xen/xen/xbdback.c Sun Aug 21 22:12:21 2005 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: xbdback.c,v 1.4.2.8 2005/08/21 22:08:52 tron Exp $ */
+/* $NetBSD: xbdback.c,v 1.4.2.9 2005/08/21 22:12:21 tron Exp $ */
/*
* Copyright (c) 2005 Manuel Bouyer.
@@ -210,6 +210,7 @@
static void *xbdback_co_main_loop(struct xbdback_instance *, void *);
static void *xbdback_co_main_incr(struct xbdback_instance *, void *);
static void *xbdback_co_main_done(struct xbdback_instance *, void *);
+static void *xbdback_co_main_done2(struct xbdback_instance *, void *);
static void *xbdback_co_io(struct xbdback_instance *, void *);
static void *xbdback_co_io_gotreq(struct xbdback_instance *, void *);
@@ -686,9 +687,21 @@
(void)obj;
if (xbdi->io != NULL) {
xbdi->cont = xbdback_co_flush;
- xbdi->cont_aux = NULL;
+ xbdi->cont_aux = xbdback_co_main_done2;
} else {
+ xbdi->cont = xbdback_co_main_done2;
+ }
+ return xbdi;
+}
+
+static void *
+xbdback_co_main_done2(struct xbdback_instance *xbdi, void *obj)
+{
+
+ if (xbdi->req_prod == xbdi->blk_ring->req_prod) {
xbdi->cont = NULL;
+ } else {
+ xbdi->cont = xbdback_co_main;
}
return xbdi;
}
Home |
Main Index |
Thread Index |
Old Index