Re: [PATCH] sunrpc/cache: skip checking the pending cache expired

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

 



On 2/4/2017 13:41, Kinglong Mee wrote:
> When the first time pynfs runs after rpc/nfsd startup, always get the warning, 
> 
> Got error: Connection closed
> 
> Commit 778620364ef5 "sunrpc/cache: make cache flushing more reliable." lets
> cache_is_expired() checking expired as, 
> 
> return (h->expiry_time < seconds_since_boot()) ||
>         (detail->flush_time >= h->last_refresh);
> 
> The detail->flush_time is equal to h->last_refresh time, when the cache is
> new created and then do the upcall immediately. So that, the cache will be
> treated as expired and be cleaned when write_flush().
> 
> This patch skips checking the pending cache expired when doing upcall.
> 
> Signed-off-by: Kinglong Mee <kinglongmee@xxxxxxxxx>
> ---
>  include/linux/sunrpc/cache.h | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/include/linux/sunrpc/cache.h b/include/linux/sunrpc/cache.h
> index 62a60ee..9961c1f 100644
> --- a/include/linux/sunrpc/cache.h
> +++ b/include/linux/sunrpc/cache.h
> @@ -204,8 +204,11 @@ static inline void cache_put(struct cache_head *h, struct cache_detail *cd)
>  	kref_put(&h->ref, cd->cache_put);
>  }
>  
> -static inline int cache_is_expired(struct cache_detail *detail, struct cache_head *h)
> +static inline bool cache_is_expired(struct cache_detail *detail, struct cache_head *h)
>  {
> +	if (test_bit(CACHE_PENDING, &h->flags))
> +		return false;
> +

Sorry, with this patch there is a bug exist,
When a pending cache exist, sunrpc_destroy_cache_detail() cann't
cleanup the cache_detail, but user always free it later, 
that will cause a NULL reference.

Please ignore this patch, maybe another patch for the above problem
 will be sent.

thanks,
Kinglong Mee

>  	return  (h->expiry_time < seconds_since_boot()) ||
>  		(detail->flush_time >= h->last_refresh);
>  }
> 
--
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