Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 10 Oct 2002 18:04:14 -0700 (PDT)
From:      Kirk McKusick <mckusick@FreeBSD.org>
To:        cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/kern vfs_subr.c
Message-ID:  <200210110104.g9B14E7i084762@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
mckusick    2002/10/10 18:04:14 PDT

  Modified files:
    sys/kern             vfs_subr.c 
  Log:
  When considering a vnode for reuse in getnewvnode, we call
  vcanrecycle to check a free vnode's availability. If it is
  available, vcanrecycle returns an error code of zero and the
  vnode in question locked. The getnewvnode routine then used
  to call vn_start_write with the V_NOWAIT flag. If the filesystem
  was suspended while taking a snapshot, the vn_start_write would
  fail but getnewvnode would fail to unlock the vnode, instead
  leaving it locked on the freelist. The result would be that the
  vnode would be locked forever and would eventually hang the
  system with a race to the root when it was attempted to recycle
  it. This fix moves the vn_start_write check into vcanrecycle
  where it will properly unlock the vnode if it is unavailable
  for recycling due to filesystem suspension.
  
  Sponsored by:   DARPA & NAI Labs.
  
  Revision  Changes    Path
  1.412     +18 -13    src/sys/kern/vfs_subr.c

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




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