summaryrefslogtreecommitdiffstats
path: root/sys/vm/vm_page.h
diff options
context:
space:
mode:
authorwollman <wollman@FreeBSD.org>1998-09-01 17:12:19 +0000
committerwollman <wollman@FreeBSD.org>1998-09-01 17:12:19 +0000
commitc97cc8ee062aa223a89146aa13a4bf5feefc7f1b (patch)
tree6ae5b55f7a8335cddd91b94a16b466c38c4cf8c9 /sys/vm/vm_page.h
parentbe7570dbc1aee00a5fc38755b65f951a1448121f (diff)
downloadFreeBSD-src-c97cc8ee062aa223a89146aa13a4bf5feefc7f1b.zip
FreeBSD-src-c97cc8ee062aa223a89146aa13a4bf5feefc7f1b.tar.gz
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
Diffstat (limited to 'sys/vm/vm_page.h')
-rw-r--r--sys/vm/vm_page.h7
1 files 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)); \
} \
OpenPOWER on IntegriCloud