OpenAFS Master Repository branch, master, updated. BP--openafs-stable-1_6_x-1297-g03a5472

Gerrit Code Review gerrit@openafs.org
Sun, 19 Jun 2011 19:50:21 -0700 (PDT)


The following commit has been merged in the master branch:
commit 03a54723eaf23b2aad0d026ba5f1a8e7343b3763
Author: Ben Kaduk <kaduk@mit.edu>
Date:   Fri Jun 17 02:22:34 2011 -0400

    FBSD: do not FlushAllVCaches
    
    In normal operation, any AFS vcache with associated data will have
    an associated vnode, which will be on the list of vnodes associated
    with the /afs mountpoint.  We already call FreeBSD's vflush() in
    our afs_unmount, which walks the list of vnodes associated with the
    mountpoint and calls vgonel() on them, which calls VOP_CLOSE and
    VOP_RECLAIM on the vnode.  Our implementation of VOP_RECLAIM already
    calls FlushVCache, so in normal operation, FlushAllVCaches() will
    be a no-op.
    However, in the presence of bugs, it is actively harmful, causing
    panics.  For example, if a vnode has been reclaimed but FlushVCache
    failed (which we cannot report back since the VFS will panic in this
    case), and we attempt to flush it again, the associated vnode has
    already been cleaned up and we will panic.  Likewise if our list of
    vcaches becomes corrupt and has a vcache with bad or missing vnode
    for some other reason, we will panic.
    
    Since there is no gain in normal operation and abnormal operation
    is more likely to panic than save data, skip the extra flush.
    
    Change-Id: Id227ca74f4036c1c1f40a41a922e73198f16f958
    Reviewed-on: http://gerrit.openafs.org/4847
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Derrick Brashear <shadow@dementia.org>

 src/afs/afs_call.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

-- 
OpenAFS Master Repository