Re: [PATCH] SUNRPC/cache: fix reporting of expired cache entries in 'content' file.

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

 



Thanks!  Applying for 3.6--b.

On Thu, Jul 12, 2012 at 10:37:34AM +1000, NeilBrown wrote:
> 
> Entries that are in a sunrpc cache but are not valid should be reported
> with a leading '#' so they look like a comment.
> Commit  d202cce8963d9 (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:  NeilBrown <neilb@xxxxxxx>
> 
> --
> It's not a big problem, but it had me confused for a while, so it could
> well confuse others.
> Thanks,
> NeilBrown
> 
> 
> 
> diff --git a/net/sunrpc/cache.c b/net/sunrpc/cache.c
> index 47ad266..2afd2a8 100644
> --- a/net/sunrpc/cache.c
> +++ b/net/sunrpc/cache.c
> @@ -1349,8 +1349,11 @@ static int c_show(struct seq_file *m, void *p)
>  	if (cache_check(cd, cp, NULL))
>  		/* cache_check does a cache_put on failure */
>  		seq_printf(m, "# ");
> -	else
> +	else {
> +		if (cache_is_expired(cd, cp))
> +			seq_printf(m, "# ");
>  		cache_put(cp, cd);
> +	}
>  
>  	return cd->cache_show(m, cd, cp);
>  }


--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux