cvs commit: src/sys/vm vnode_pager.c

From: Konstantin Belousov <kib_at_FreeBSD.org>
Date: Wed, 30 Jul 2008 18:16:06 +0000 (UTC)
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.
  
  Reported by:    gallatin
  Discussed with: attilio
  
  Revision  Changes    Path
  1.243     +9 -2      src/sys/vm/vnode_pager.c
Received on Wed Jul 30 2008 - 18:19:48 UTC