DragonFly BSD
DragonFly commits List (threaded) for 2006-02
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

cvs commit: src/sys/vfs/nfs nfs.h nfs_nqlease.c nfs_socket.c


From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxxxxx>
Date: Mon, 20 Feb 2006 20:47:56 -0800 (PST)

dillon      2006/02/20 20:47:56 PST

DragonFly src repository

  Modified files:
    sys/vfs/nfs          nfs.h nfs_nqlease.c nfs_socket.c 
  Log:
  Fix a bunch of race cases in the NFS callout timer code, in the handling
  of the NFS request queue and, in the handling of R_SENT.
  
  The NFS stack can block in the callout timer code's request queue loop,
  possibly resulting in another process ripping the current request in the
  TAILQ_FOREACH scan out from under the loop.
  
  R_MASKTIMER was being cleared too early, potentially allowing the callout
  timer code to modify a request at the same time mainline code was working
  on the same request synchronously.
  
  The R_SENT bit would sometimes get set after the request had completed, or
  get set twice, causing nmp->nm_sent to 'stick' and never return to 0.  This
  in turn would stop the NFS retry code dead in its tracks and cause the NFS
  mount to hang.
  
  Reported-by: Stefan Krueger <skrueger@xxxxxxxxxxxxxxxx>
  Testing-by: Stefan Krueger <skrueger@xxxxxxxxxxxxxxxx>
  Also-thanks-to: Peter Holms filesystem and load testing suite (stress2).
  
  Revision  Changes    Path
  1.12      +1 -0      src/sys/vfs/nfs/nfs.h
  1.28      +2 -3      src/sys/vfs/nfs/nfs_nqlease.c
  1.31      +128 -80   src/sys/vfs/nfs/nfs_socket.c


http://www.dragonflybsd.org/cvsweb/src/sys/vfs/nfs/nfs.h.diff?r1=1.11&r2=1.12&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/nfs/nfs_nqlease.c.diff?r1=1.27&r2=1.28&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/nfs/nfs_socket.c.diff?r1=1.30&r2=1.31&f=u



[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]