[sheepdog] [PATCH UPDATE] object cache: add a helper to test idx's vdi bit

Liu Yuan namei.unix at gmail.com
Fri Jun 29 07:24:05 CEST 2012


On 06/28/2012 05:21 PM, Liu Yuan wrote:
> From: Liu Yuan <tailai.ly at taobao.com>
> 
> 
> Signed-off-by: Liu Yuan <tailai.ly at taobao.com>
> ---
>  update:
>  - return int instead of uint32_t
> 
>  sheep/object_cache.c |   15 ++++++++++-----
>  1 file changed, 10 insertions(+), 5 deletions(-)
> 
> diff --git a/sheep/object_cache.c b/sheep/object_cache.c
> index 8ca09be..208636c 100644
> --- a/sheep/object_cache.c
> +++ b/sheep/object_cache.c
> @@ -85,6 +85,11 @@ static inline uint32_t object_cache_oid_to_idx(uint64_t oid)
>  	return idx;
>  }
>  
> +static inline int idx_has_vdi_bit(uint32_t idx)
> +{
> +	return idx & CACHE_VDI_BIT;
> +}
> +
>  static uint64_t calc_object_bmap(size_t len, off_t offset)
>  {
>  	int start, end, nr;
> @@ -293,7 +298,7 @@ static int object_cache_lookup(struct object_cache *oc, uint32_t idx,
>  		struct object_cache_entry *entry;
>  		unsigned data_length;
>  
> -		if (idx & CACHE_VDI_BIT)
> +		if (idx_has_vdi_bit(idx))
>  			data_length = SD_INODE_SIZE;
>  		else
>  			data_length = SD_DATA_OBJ_SIZE;
> @@ -327,7 +332,7 @@ static int write_cache_object(uint32_t vid, uint32_t idx, void *buf,
>  	strbuf_addstr(&p, cache_dir);
>  	strbuf_addf(&p, "/%06"PRIx32"/%08"PRIx32, vid, idx);
>  
> -	if (sys->use_directio && !(idx & CACHE_VDI_BIT))
> +	if (sys->use_directio && !idx_has_vdi_bit(idx))
>  		flags |= O_DIRECT;
>  
>  	fd = open(p.buf, flags, def_fmode);
> @@ -372,7 +377,7 @@ static int read_cache_object(uint32_t vid, uint32_t idx, void *buf,
>  	strbuf_addstr(&p, cache_dir);
>  	strbuf_addf(&p, "/%06"PRIx32"/%08"PRIx32, vid, idx);
>  
> -	if (sys->use_directio && !(idx & CACHE_VDI_BIT))
> +	if (sys->use_directio && !idx_has_vdi_bit(idx))
>  		flags |= O_DIRECT;
>  
>  	fd = open(p.buf, flags, def_fmode);
> @@ -496,7 +501,7 @@ static int object_cache_pull(struct object_cache *oc, uint32_t idx)
>  	uint32_t data_length;
>  	void *buf;
>  
> -	if (idx & CACHE_VDI_BIT) {
> +	if (idx_has_vdi_bit(idx)) {
>  		oid = vid_to_vdi_oid(oc->vid);
>  		data_length = SD_INODE_SIZE;
>  	} else {
> @@ -527,7 +532,7 @@ out:
>  
>  static uint64_t idx_to_oid(uint32_t vid, uint32_t idx)
>  {
> -	if (idx & CACHE_VDI_BIT)
> +	if (idx_has_vdi_bit(idx))
>  		return vid_to_vdi_oid(vid);
>  	else
>  		return vid_to_data_oid(vid, idx);
> 

Applied, thanks.

Yuan




More information about the sheepdog mailing list