在hlevel中建立的缓存和lowlevel中fuse_inode是一一对应的,因此他的释放也由内核来决定,释放的时机参看vfs中inode的释放。
使用之前会lookup,如果缓存已经不存在了那么就重建,如何保证释放时,先释放子文件?
不需要保证先释放子文件,父目录中会记录引用数ref,子文件未解除和父目录的关联时,即子文件对象中任然有指针指向父目录时,ref不会减为0,所以对象不会释放。
forget_node会调用unhash解除和父目录的关联,并且通过父目录 + name无法查到自己,减少父目录的引用数,并且减少自己的引用数,当引用数减为0时,释放该对象。
remove_node只会调用unhash解除和父目录的关联,减少父目录的引用数,不会减少自己的引用数
remove_node执行第一步先要lookup查找node是否存在,如果之前没有访问过该node,没有建立缓存,就不需要执行remove操作。