[Sheepdog] [PATCH v6 7/8] collie: read the cached objects if any for collie operation

MORITA Kazutaka morita.kazutaka at gmail.com
Fri Mar 30 18:25:18 CEST 2012


At Mon, 26 Mar 2012 21:48:29 +0800,
Liu Yuan wrote:
> 
> From: Liu Yuan <tailai.ly at taobao.com>
> 
> Collie operation such 'vdi list' or 'vdi object' need to read the lateset
> VDI object, it might be cached in the object cache. We can't pass
> SD_FLAG_CMD_CACHE to sheep because collie doesn't know if the cache mode is
> enbled.
> 
> So we rely on the assumption that the cached object is freshest.
> 
> Signed-off-by: Liu Yuan <tailai.ly at taobao.com>
> ---
>  sheep/store.c |    8 ++++++++
>  1 files changed, 8 insertions(+), 0 deletions(-)
> 
> diff --git a/sheep/store.c b/sheep/store.c
> index c192aeb..4d84350 100644
> --- a/sheep/store.c
> +++ b/sheep/store.c
> @@ -784,6 +784,14 @@ static int bypass_object_cache(struct sd_obj_req *hdr)
>  {
>  	uint64_t oid = hdr->oid;
>  
> +	/*
> +	 * We assume the cached object is freshest, donot break it ever.
> +	 * This assumption is useful for non-cache requests from collie,
> +	 * which tries hard to get the newest data.
> +	 */
> +	if (object_is_cached(oid))
> +		return 0;
> +

This fix is still wrong because writethrough requests aren't flushed
before sending response if we return 0 here.

I think we need to flush and remove a cache here when
SD_FLAG_CMD_CACHE is not set.

Thanks,

Kazutaka

>  	if (!(hdr->flags & SD_FLAG_CMD_CACHE))
>  		return 1;
>  
> -- 
> 1.7.8.2
> 
> -- 
> sheepdog mailing list
> sheepdog at lists.wpkg.org
> http://lists.wpkg.org/mailman/listinfo/sheepdog



More information about the sheepdog mailing list