Hello all,
先自我介绍,我叫杨江华,毕业于南邮,目前从事文件系统开发的相关工作。
这2天接触到hlfs, 阅读了icache相关的API,有一些疑问。希望可以得到回复。
在cache api---> icache_insert_iblock()
代码:
HLOG_DEBUG("--update exist iblock--");
memcpy(_iblock->iblock, iblock_buf, icache_ctrl->iblock_size);
.对已存在的block的内存更新在icache_ctrl->icache_mutex锁的保护之外,
而我又发现api ---> int icache_query_iblock(),
代码:
g_assert(iblock_no == iblock->iblock_no);
memcpy(iblock_buf, iblock->iblock, icache_ctrl->iblock_size);
icache_ctrl->icache_hit++;
获取iblock_no的内存值也在锁之外,这2处在SMP环境下,会出现cache
不一致性。请考虑。如果我的思考有问题,请指正。