解决问题1:F2FS的目录结构理解
F2FS使用到文件哈希是分层的。
每个block有214个目录槽。一个目录槽最多存1个文件夹信息。
第一层就一个哈希桶,一个哈希桶有2个blocks,每个block有214个目录槽。每个目录槽最大存一个目录信息。
第二层有1<<1(即2)个哈希桶,每个哈希桶2个blocks
第三层有1<<2(即4)个哈希桶,每个哈希桶2个blocks
.
.
.
第31层共1<<31(即2到31次方)个哈希桶,每个哈希桶2个blocks
第32层共1<<31(即2到31次方)个哈希桶,每个哈希桶4个blocks
.
.
当层数小于31时:
一个哈希桶有2个blocks,即8k大小。
当层数大于31时:
一个哈希桶有4个blocks,即16k大小。
哈希值通过类是EXT3文件系统到算法,得到哈希值后对没层到哈希桶数求余数,计算在该层到哪个哈希桶。
解决问题2:为什么文件名大小只有8字节,怎么存下大文件名?
目录结构体:
struct f2fs_dentry_block {
__u8 dentry_bitmap[SIZE_OF_DENTRY_BITMAP];
__u8 reserved[SIZE_OF_RESERVED];
struct f2fs_dir_entry dentry[NR_D