linux 文件系统 f2fs
东大坡居士
像风一样自由...
展开
-
f2fs mkdir创建目录过程分析
不论是文件,还是目录,在文件系统中都由inode表示,本篇主要看一下创建一个目录f2fs都做了哪些事情,创建了哪些结构,什么样的格式,怎样最终存储到存储中。SYSCALL_DEFINE3(mkdirat, int, dfd, const char __user *, pathname, umode_t, mode){ struct dentry *dentry; struct pat...原创 2019-11-09 18:42:13 · 1341 阅读 · 0 评论 -
f2fs nat/sit area存储格式及current_nat_addr
f2fs为了保护元数据的有效性及可恢复性,每个无数据区域均包含两个复本,如两个super block,两个check point segments,对于nat及sitarea,同样也包含两份。对于nat area的存储方式,一直以来,都以为是先存一份,再存储另一份,类似于这种结构:所以,对于current_nat_addr函数,一直无法理解代码实现的原理是什么。今天偶然看了一...原创 2019-10-20 23:58:43 · 767 阅读 · 1 评论 -
f2fs write_checkpoint 过程分析
write_checkpoint主要负责把cache中dirty的数据写回到磁盘中,在gc, trim, discard或者recovery的时候都会调用到。int write_checkpoint(struct f2fs_sb_info *sbi, struct cp_control *cpc){ struct f2fs_checkpoint *ckpt = F2FS_CKPT(s...原创 2019-10-19 16:34:53 · 1229 阅读 · 0 评论 -
f2fs gc garbage collect 过程分析
f2fs mount时,会启动garbage collect线程,garbage collect线程通过wait_event_interruptible_timeout函数,每隔一段时间,或者等待的condition为true时,判断是否需要执行garbage collect操作。static int gc_thread_func(void *data){ struct f2fs_sb...原创 2019-10-13 13:59:50 · 1349 阅读 · 0 评论 -
f2fs mkfs 格式化过程系列 1
本文以f2fs-tools 1.9为例,描述一下f2fs格式化过程做了那些事,都往f2fs mete data里面写了什么东西。f2fs metedata包含sb, cp(2 segments), sit, nat, ssa,先从cp开始,看一下格式化过程往这两个check point里面写了哪些数据。static int f2fs_write_check_point_pack(v...原创 2019-09-06 08:10:26 · 1950 阅读 · 1 评论 -
f2fs mkfs 格式化过程系列 0
f2fs开源的代码分为f2fs-tools与f2fs kernel代码,f2fs-tools的代码主要是格式化make_f2fs工具,fsck工具等,可以在开源网站https://git.kernel.org/pub/scm/linux/kernel/git/上面下载。格式化的源码在f2fs-tools源码f2fs-format.c中,f2fs_format_device()中执行的,次函...原创 2019-09-27 16:24:14 · 1444 阅读 · 0 评论 -
f2fs mkfs 格式化过程系列 2
前面两篇文章写了f2fs format过程中superblock和 cp填充的过程,格式化过程中主要是这两个meta data的填充有点不好理解,后面的部分相对来说比较容易,本篇说说后面的部分做的内容。1, f2fs_init_sit_area()static int f2fs_init_sit_area(void){ u_int32_t blk_size, seg_size;...原创 2019-09-28 20:05:38 · 741 阅读 · 0 评论 -
f2fs mkfs格式化系列3
前面讲了f2fs格式化主要进行了哪些操作,本篇看一下,mount过程中是如何读取格式化写到磁盘的那些内容的。主要说一下如果读取f2fs meta data这些信息,mount过程还有一些比较重要的步骤,像build node management, build sit management后面会分开仔细再说。static int f2fs_fill_super(struct super...原创 2019-09-28 21:34:49 · 1007 阅读 · 0 评论 -
f2fs get_node_path 函数过程分析
f2fs中比较有趣的一个函数get_node_path(),想要理解这个函数,需要对f2fs node及node中能够索引的地址理解清楚,先看一下f2fs inode的结构: 4KB * (923 + 2 * 1018 + 2 * 1018 * 1018 + 1018 * 1018 * 1018) := 3.94TB. Inode block (4KB) |- data ...原创 2019-10-04 18:18:58 · 473 阅读 · 0 评论