From: Liu Yuan <tailai.ly at taobao.com> It uses 64 bits to represent 4M objects, so each bits will represent 64K data or object_cache_flush_and_delete() will fail. - add two eprintf for read/write_cache_object() Signed-off-by: Liu Yuan <tailai.ly at taobao.com> --- sheep/object_cache.c | 10 ++++++++-- sheep/sheep_priv.h | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/sheep/object_cache.c b/sheep/object_cache.c index efd815f..461f8a7 100644 --- a/sheep/object_cache.c +++ b/sheep/object_cache.c @@ -284,8 +284,11 @@ static int write_cache_object(uint32_t vid, uint32_t idx, void *buf, size_t coun eprintf("%m\n"); goto out; } - if (size != count) + if (size != count) { + eprintf("size %zu, count:%zu, offset %zu %m\n", + size, count, offset); ret = SD_RES_EIO; + } out: close(fd); strbuf_release(&p); @@ -318,8 +321,11 @@ static int read_cache_object(uint32_t vid, uint32_t idx, void *buf, size_t count eprintf("%m\n"); goto out; } - if (size != count) + if (size != count) { + eprintf("size %zu, count:%zu, offset %zu %m\n", + size, count, offset); ret = SD_RES_EIO; + } out: close(fd); strbuf_release(&p); diff --git a/sheep/sheep_priv.h b/sheep/sheep_priv.h index a86d98e..e9e9d08 100644 --- a/sheep/sheep_priv.h +++ b/sheep/sheep_priv.h @@ -420,7 +420,7 @@ static inline int sys_can_halt(void) #define CACHE_VDI_SHIFT 31 #define CACHE_VDI_BIT (UINT32_C(1) << CACHE_VDI_SHIFT) -#define CACHE_BLOCK_SIZE (UINT32_C(128) << 10) /* 128 KB */ +#define CACHE_BLOCK_SIZE ((UINT64_C(1) << 10) * 64) /* 64 KB */ struct object_cache { uint32_t vid; -- 1.7.10.2 |