From c97cc8ee062aa223a89146aa13a4bf5feefc7f1b Mon Sep 17 00:00:00 2001 From: wollman Date: Tue, 1 Sep 1998 17:12:19 +0000 Subject: Separate wakeup conditions for page I/O count (pg_busy) and lock (PG_BUSY). This is not sa completely solution to the deadlock, but the additional wakeups have helped in my observation. Suggested by: John Dyson --- sys/vm/vm_page.h | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/sys/vm/vm_page.h b/sys/vm/vm_page.h index fc6d61c..bf79064 100644 --- a/sys/vm/vm_page.h +++ b/sys/vm/vm_page.h @@ -61,7 +61,7 @@ * any improvements or extensions that they make and grant Carnegie the * rights to redistribute these changes. * - * $Id: vm_page.h,v 1.43 1998/08/22 15:24:09 mckay Exp $ + * $Id: vm_page.h,v 1.44 1998/08/24 08:39:38 dfr Exp $ */ /* @@ -292,7 +292,7 @@ extern vm_offset_t last_phys_addr; /* physical address for last_page */ #define PAGE_WAKEUP(m) { \ PAGE_CLEAR_FLAG(m, PG_BUSY); \ - if (((m)->flags & PG_WANTED) && ((m)->busy == 0)) { \ + if ((m)->flags & PG_WANTED) { \ PAGE_CLEAR_FLAG(m, PG_WANTED); \ wakeup((m)); \ } \ @@ -302,8 +302,7 @@ extern vm_offset_t last_phys_addr; /* physical address for last_page */ #define PAGE_BWAKEUP(m) { \ atomic_subtract_char(&(m)->busy, 1); \ - if ((((m)->flags & (PG_WANTED | PG_BUSY)) == PG_WANTED) && \ - ((m)->busy == 0)) { \ + if (((m)->flags & PG_WANTED) && (m)->busy == 0) { \ PAGE_CLEAR_FLAG(m, PG_WANTED); \ wakeup((m)); \ } \ -- cgit v1.1