cvs commit: src/sys/vm vnode_pager.c
attilio at freebsd.org
Thu Jul 31 09:50:53 UTC 2008
2008/7/30 Konstantin Belousov <kib at freebsd.org>:
> kib 2008-07-30 18:16:06 UTC
> FreeBSD src repository
> Modified files:
> sys/vm vnode_pager.c
> SVN rev 181004 on 2008-07-30 18:16:06Z by kib
> The behaviour of the lockmgr going back at least to the 4.4BSD-Lite2 was
> to downgrade the exclusive lock to shared one when exclusive lock owner
> requested shared lock. New lockmgr panics instead.
> The vnode_pager_lock function requests shared lock on the vnode backing
> the OBJT_VNODE, and can be called when the current thread already holds
> an exlcusive lock on the vnode. For instance, it happens when handling
> page fault from the VOP_WRITE() uiomove that writes to the file, with
> the faulted in page fetched from the vm object backed by the same file.
> We then get the situation described above.
> Verify whether the vnode is already exclusively locked by the curthread
> and request recursed exclusive vnode lock instead of shared, if true.
Peace can only be achieved by understanding - A. Einstein
More information about the cvs-src