[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