Module Name: src Committed By: bouyer Date: Sun Oct 25 13:47:43 UTC 2009
Modified Files: src/sys/arch/xen/xen: xbdback_xenbus.c Log Message: When we stall the continuation waiting for the queued I/O to complete in xbdback_co_cache_flush2(), we don't advance the req pointer. In this case call xbdi_put() to compensate for the xbdi_get() that will be done again in xbdback_co_main_loop(). Fix stalled xbdback detach that would stall the whole xenbus thread, preventing new domU from be created. To generate a diff of this commit: cvs rdiff -u -r1.27 -r1.28 src/sys/arch/xen/xen/xbdback_xenbus.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/xen/xen/xbdback_xenbus.c diff -u src/sys/arch/xen/xen/xbdback_xenbus.c:1.27 src/sys/arch/xen/xen/xbdback_xenbus.c:1.28 --- src/sys/arch/xen/xen/xbdback_xenbus.c:1.27 Mon Oct 19 18:41:11 2009 +++ src/sys/arch/xen/xen/xbdback_xenbus.c Sun Oct 25 13:47:43 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: xbdback_xenbus.c,v 1.27 2009/10/19 18:41:11 bouyer Exp $ */ +/* $NetBSD: xbdback_xenbus.c,v 1.28 2009/10/25 13:47:43 bouyer Exp $ */ /* * Copyright (c) 2006 Manuel Bouyer. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: xbdback_xenbus.c,v 1.27 2009/10/19 18:41:11 bouyer Exp $"); +__KERNEL_RCSID(0, "$NetBSD: xbdback_xenbus.c,v 1.28 2009/10/25 13:47:43 bouyer Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -987,6 +987,7 @@ if (xbdi->xbdi_pendingreqs > 0) { /* event or iodone will restart processing */ xbdi->xbdi_cont = NULL; + xbdi_put(xbdi); return NULL; } xbdi->xbdi_cont = xbdback_co_cache_doflush;