cvs commit: src/sys/vm vnode_pager.c

Attilio Rao 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
>  Log:
>  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.

Many thanks.

Attilio


-- 
Peace can only be achieved by understanding - A. Einstein


More information about the cvs-all mailing list