学习F2FS过程中笔记一

本文详细解析了F2FS文件系统的目录结构,解释了每个block的目录槽数量和哈希桶的工作原理。同时,针对文件名大小限制问题,介绍了F2FS如何通过多个目录槽存储长文件名,以实现快速的bitmap扫描,尽管这会牺牲一些空间效率。

解决问题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_DENTRY_IN_BLOCK];
    __u8 filename[NR_DENTRY_IN_BLOCK][F2FS_NAME_LEN];
} __packed;

struct f2fs_dir_entry {
    __le32 hash_code;   /* hash code 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值