fuse hlevel缓存的释放

博客围绕hlevel缓存与lowlevel中fuse_inode的对应关系展开,提到其释放由内核决定,时机参考vfs中inode释放。还探讨了缓存重建、释放子文件顺序问题,介绍了forget_node和remove_node操作,包括解除关联、减少引用数等机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在hlevel中建立的缓存和lowlevel中fuse_inode是一一对应的,因此他的释放也由内核来决定,释放的时机参看vfs中inode的释放。

使用之前会lookup,如果缓存已经不存在了那么就重建,如何保证释放时,先释放子文件?

不需要保证先释放子文件,父目录中会记录引用数ref,子文件未解除和父目录的关联时,即子文件对象中任然有指针指向父目录时,ref不会减为0,所以对象不会释放。

forget_node会调用unhash解除和父目录的关联,并且通过父目录 + name无法查到自己,减少父目录的引用数,并且减少自己的引用数,当引用数减为0时,释放该对象。

remove_node只会调用unhash解除和父目录的关联,减少父目录的引用数,不会减少自己的引用数

remove_node执行第一步先要lookup查找node是否存在,如果之前没有访问过该node,没有建立缓存,就不需要执行remove操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值