• Sage Weil's avatar
    ceph: fix rdcache_gen usage and invalidate · cd045cb4
    Sage Weil authored
    We used to use rdcache_gen to indicate whether we "might" have cached
    pages.  Now we just look at the mapping to determine that.  However, some
    old behavior remains from that transition.
    
    First, rdcache_gen == 0 no longer means we have no pages.  That can happen
    at any time (presumably when we carry FILE_CACHE).  We should not reset it
    to zero, and we should not check that it is zero.
    
    That means that the only purpose for rdcache_revoking is to resolve races
    between new issues of FILE_CACHE and an async invalidate.  If they are
    equal, we should invalidate.  On success, we decrement rdcache_revoking,
    so that it is no longer equal to rdcache_gen.  Similarly, if we success
    in doing a sync invalidate, set revoking = gen - 1.  (This is a small
    optimization to avoid doing unnecessary invalidate work and does not
    affect correctness.)
    Signed-off-by: default avatarSage Weil <sage@newdream.net>
    cd045cb4
caps.c 82.9 KB