From 9b34965019a89e0c95c39ac20c81e3ebae4f5143 Mon Sep 17 00:00:00 2001 From: Konstantin Belousov Date: Fri, 7 Aug 2015 08:13:34 +0000 Subject: [PATCH] The condition to use direct processing for the unmapped bio is reverted. We can do direct processing when g_io_check() does not need to perform transient remapping of the bio, otherwise the thread has to sleep. Reviewed by: mav (previous version) Sponsored by: The FreeBSD Foundation MFC after: 1 week --- sys/geom/geom_io.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/geom/geom_io.c b/sys/geom/geom_io.c index 0b8e118a6944..97a7eef7e23e 100644 --- a/sys/geom/geom_io.c +++ b/sys/geom/geom_io.c @@ -520,8 +520,8 @@ g_io_request(struct bio *bp, struct g_consumer *cp) direct = (cp->flags & G_CF_DIRECT_SEND) && (pp->flags & G_PF_DIRECT_RECEIVE) && !g_is_geom_thread(curthread) && - (((pp->flags & G_PF_ACCEPT_UNMAPPED) == 0 && - (bp->bio_flags & BIO_UNMAPPED) != 0) || THREAD_CAN_SLEEP()); + ((pp->flags & G_PF_ACCEPT_UNMAPPED) != 0 || + (bp->bio_flags & BIO_UNMAPPED) == 0 || THREAD_CAN_SLEEP()); if (direct) { /* Block direct execution if less then half of stack left. */ size_t st, su;