[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