OpenAFS Master Repository branch, openafs-stable-1_6_x, updated. openafs-stable-1_6_6-66-g3376bc1

Gerrit Code Review
Wed, 26 Mar 2014 13:16:19 -0700 (PDT)

The following commit has been merged in the openafs-stable-1_6_x branch:
commit 3376bc13b8722cfb4435458cd8a0131121a7b026
Author: Andrew Deason <>
Date:   Mon Aug 12 17:37:29 2013 -0500

    viced: Avoid endless BCB loop
    Without this commit, when we break callbacks for a fid, we loop over
    all callbacks for the fid, break a few of them, and then start over.
    We do this repeatedly until we run out of callbacks. If a client sees
    a callback break, and then establishes a new callback promise while
    the fileserver is still breaking callbacks, the fileserver can break
    the same callback for the same host again and again. This can continue
    forever, if the client establishes its new callback promises quickly
    So to avoid this, when we start breaking callbacks, flag all of the
    callback structures that we want to look at. Then when we repeatedly
    loop through all of the callbacks for the fid, only look at the
    flagged callback structures.
    This adds a 'flags' field to struct CallBack, and defines a single
    This is an alternative fix to the issue also fixed in 843d705c. This
    implementation avoids allocating extra memory under locks, and has the
    slight benefit of not breaking callbacks that were elsewhere deleted
    during the BCB. This comes at the cost of a single extra traversal
    through our callback list, and the cost of claiming one of the bits in
    the CallBack structure.
    Tested-by: BuildBot <>
    Reviewed-by: Benjamin Kaduk <>
    Reviewed-by: Derrick Brashear <>
    (cherry picked from commit 47124f337b43f8731bfbe3bd71e42d046a4d1075)
    Change-Id: I522e0cecd0a9a10bf9eafaae669f4f0005ced893
    Reviewed-by: Andrew Deason <>
    Reviewed-by: Benjamin Kaduk <>
    Tested-by: BuildBot <>
    Reviewed-by: D Brashear <>
    Reviewed-by: Stephan Wiesand <>

 src/viced/callback.c |   25 ++++++++++++++++++++++---
 src/viced/callback.h |    6 +++++-
 2 files changed, 27 insertions(+), 4 deletions(-)

OpenAFS Master Repository