Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 8 Feb 2009 20:23:46 +0000 (UTC)
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        cvs-src-old@freebsd.org
Subject:   cvs commit: src/sys/vm vm_fault.c vnode_pager.c vnode_pager.h
Message-ID:  <200902082023.n18KNnoJ022140@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
kib         2009-02-08 20:23:46 UTC

  FreeBSD src repository

  Modified files:
    sys/vm               vm_fault.c vnode_pager.c vnode_pager.h 
  Log:
  SVN rev 188331 on 2009-02-08 20:23:46Z by kib
  
  Do not sleep for vnode lock while holding map lock in vm_fault. Try to
  acquire vnode lock for OBJT_VNODE object after map lock is dropped.
  Because we have the busy page(s) in the object, sleeping there would
  result in deadlock with vnode resize. Try to get lock without sleeping,
  and, if the attempt failed, drop the state, lock the vnode, and restart
  the fault handler from the start with already locked vnode.
  
  Because the vnode_pager_lock() function is inlined in vm_fault(),
  axe it.
  
  Based on suggestion by: alc
  Reviewed by:    tegge, alc
  Tested by:      pho
  
  Revision  Changes    Path
  1.243     +80 -43    src/sys/vm/vm_fault.c
  1.247     +0 -53     src/sys/vm/vnode_pager.c
  1.21      +0 -1      src/sys/vm/vnode_pager.h



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200902082023.n18KNnoJ022140>