From d61adfe67867ef34d9c1418efc0221ae7edf0e4f Mon Sep 17 00:00:00 2001 From: alc Date: Mon, 29 Apr 2002 05:23:01 +0000 Subject: Document three synchronization issues in vm_fault(). --- sys/vm/vm_fault.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'sys/vm/vm_fault.c') diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c index 757f573..0af7dc4 100644 --- a/sys/vm/vm_fault.c +++ b/sys/vm/vm_fault.c @@ -278,6 +278,8 @@ RetryFault:; * Bump the paging-in-progress count to prevent size changes (e.g. * truncation operations) during I/O. This must be done after * obtaining the vnode lock in order to avoid possible deadlocks. + * + * XXX vnode_pager_lock() can block without releasing the map lock. */ vm_object_reference(fs.first_object); fs.vp = vnode_pager_lock(fs.first_object); @@ -479,6 +481,9 @@ readrest: * vm_page_t passed to the routine. * * fs.m plus the additional pages are PG_BUSY'd. + * + * XXX vm_fault_additional_pages() can block + * without releasing the map lock. */ faultcount = vm_fault_additional_pages( fs.m, behind, ahead, marray, &reqpage); @@ -486,6 +491,9 @@ readrest: /* * update lastr imperfectly (we do not know how much * getpages will actually read), but good enough. + * + * XXX The following assignment modifies the map + * without holding a write lock on it. */ fs.entry->lastr = fs.pindex + faultcount - behind; -- cgit v1.1