[sheepdog] [PATCH 1/2] object cache: fix wrong bmap calculation and flush offset

Liu Yuan namei.unix at gmail.com
Mon Jun 11 04:09:04 CEST 2012


On 06/10/2012 09:55 PM, Liu Yuan wrote:
> From: Liu Yuan <tailai.ly at taobao.com>
> 
> 
> Signed-off-by: Liu Yuan <tailai.ly at taobao.com>
> ---
>  sheep/object_cache.c |   10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/sheep/object_cache.c b/sheep/object_cache.c
> index e100634..df3db1d 100644
> --- a/sheep/object_cache.c
> +++ b/sheep/object_cache.c
> @@ -86,17 +86,17 @@ static uint64_t calc_object_bmap(size_t len, off_t offset)
>  	uint64_t bmap = 0;
>  
>  	start = offset / CACHE_BLOCK_SIZE;
> -	end = (offset + len - 1) / CACHE_BLOCK_SIZE;
> +	end = DIV_ROUND_UP(len + offset, CACHE_BLOCK_SIZE);
> +	nr = end - start;
>  
> -	nr = end - start + 1;
>  	while (nr--)
>  		set_bit(start + nr, &bmap);
>  
>  	return bmap;
>  }
>  
> -static struct object_cache_entry *dirty_tree_insert(struct rb_root *root,
> -		struct object_cache_entry *new)
> +static struct object_cache_entry *
> +dirty_tree_insert(struct rb_root *root, struct object_cache_entry *new)
>  {
>  	struct rb_node **p = &root->rb_node;
>  	struct rb_node *parent = NULL;
> @@ -573,7 +573,7 @@ static int push_cache_object(struct vnode_info *vnode_info, uint32_t vid,
>  	hdr->epoch = sys_epoch();
>  
>  	hdr->obj.oid = oid;
> -	hdr->obj.offset = 0;
> +	hdr->obj.offset = offset;
>  	hdr->obj.copies = sys->nr_copies;
>  
>  	fake_req.data = buf;
> 

Applied.

Thanks,
Yuan




More information about the sheepdog mailing list