ILD

fuse inode reference count
作者:Yuan Jianpeng 邮箱:yuanjp89@163.com
发布时间:2024-11-27 站点:Inside Linux Development

文件系统是通过inode id来操作文件的。目录树的维护,也是通过parent inode id + name的方式维护。


每个inode id对应的inode有一个reference count,当refrence count减为0的时候,内核就不会再缓存该inode了,意味着在再次获得该inode id之前,不会继续使用该inode id进行文件读写。此时fuse程序,可以释放该inode,来节省内存。


reference count维护规则,如下表:


fuse command

newly created inodeold inode
FUSE_LOOKUP

1

+1

FUSE_CREATE

FUSE_MKNOD

FUSE_MKDIR

FUSE_SYMLINK


1N/A
FUSE_RENAMEN/A+0
FUSE_LINKN/A+1
FUSE_FORGET
-nlookup

FUSE_UNLINK

FUSE_RMDIR

N/A-0
FUSE_OPEN
+0
FUSE_GETATTRN/A+0
FUSE_SETATTRN/A+0


总结如下:

1 新建操作,如FUSE_CREATE,初始refcnt为1。

2 lookup,每次+1

3 创建硬链接,+1。注意创建硬链接不会新建inode。也不会产生新的inode id。

4 其它操作,如删除、打开、读取属性等都不改变refcnt。


Copyright © linuxdev.cc 2017-2024. Some Rights Reserved.