• NeilBrown's avatar
    SUNRPC/cache: fix reporting of expired cache entries in 'content' file. · 200724a7
    NeilBrown authored
    Entries that are in a sunrpc cache but are not valid should be reported
    with a leading '#' so they look like a comment.
    Commit  d202cce8 (sunrpc: never return expired entries in sunrpc_cache_lookup)
    broke this for expired entries.
    
    This particularly applies to entries that have been replaced by newer entries.
    sunrpc_cache_update sets the expiry of the replaced entry to '0', but it
    remains in the cache until the next 'cache_clean'.
    The result is that if you
    
      echo 0 2000000000 1 0 > /proc/net/rpc/auth.unix.gid/channel
    
    several times, then
    
      cat /proc/net/rpc/auth.unix.gid/content
    
    It will display multiple entries for the one uid, which is at least confusing:
    
      #uid cnt: gids...
      0 1: 0
      0 1: 0
      0 1: 0
    
    With this patch, expired entries are marked as comments so you get
    
      #uid cnt: gids...
      0 1: 0
      # 0 1: 0
      # 0 1: 0
    
    These expired entries will never be seen by cache_check() as they are always
    *after* a non-expired entry with the same key - so the extra check is only
    needed in c_show()
    Signed-off-by: default avatarNeilBrown <neilb@suse.de>
    
    --
    It's not a big problem, but it had me confused for a while, so it could
    well confuse others.
    Thanks,
    NeilBrown
    Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
    200724a7
cache.c 43.4 KB