diff options
author | alc <alc@FreeBSD.org> | 2002-04-29 05:23:01 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2002-04-29 05:23:01 +0000 |
commit | d61adfe67867ef34d9c1418efc0221ae7edf0e4f (patch) | |
tree | a57197826058801ab7d0cd69a8bf3bf10c7dda4f /sys | |
parent | 2c66f4a2cd9de7744b7ce8c07fc96b3be0000f53 (diff) | |
download | FreeBSD-src-d61adfe67867ef34d9c1418efc0221ae7edf0e4f.zip FreeBSD-src-d61adfe67867ef34d9c1418efc0221ae7edf0e4f.tar.gz |
Document three synchronization issues in vm_fault().
Diffstat (limited to 'sys')
-rw-r--r-- | sys/vm/vm_fault.c | 8 |
1 files changed, 8 insertions, 0 deletions
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; |