FS
文章平均质量分 73
主要介绍具体文件系统相关知识
HZero.chen
随风潜入夜,润物细无声
展开
-
f2fs学习笔记 -12. f2fs checkpoint[转]
1.前言本文主要记录checkpoint的过程2.checkpoint的时机1.gc: 当空闲segment 不足的时候,可以通过check point 释放。2.sync:执行sync操作时3.super_block: super block 的put_super 接口需要通过f2fs_write_checkpoint() 来把没有来得及umount导致的可能不一致的数据重新做一次check point。3.checkpoint的流程f2fs_sync_fs write_checkpoin原创 2022-01-11 16:39:30 · 932 阅读 · 0 评论 -
f2fs学习笔记 -11. f2fs gc
1.前言GC分为前台GC和后台GC2.总体流程f2fs_fill_super start_gc_thread(sbi) init_waitqueue_head(&sbi->gc_thread->gc_wait_queue_head) kthread_run(gc_thread_func)3.gc_thread_funcgc_thread_func f2fs_balance_fs(sbi) sync_dirty_dir_inodes sync_node_pa原创 2022-01-11 16:32:02 · 774 阅读 · 0 评论 -
f2fs学习笔记 -10. f2fs fsync
kernel:linux3.17fs: f2fs初始版本1.前言本文主要记录f2fs fsync的流程。2.总体流程do_fsync fget(fd) vfs_fsync(file, file->f_path.dentry, datasync) fop->fsync(file, dentry, datasync) f2fs_sync_file filemap_write_and_wait_range 元数据相关操作3.详细流程3.1 filemap_原创 2022-01-11 16:28:24 · 833 阅读 · 0 评论 -
f2fs学习笔记 - 9. f2fs 写文件
1.前言本文主要介绍f2fs写入流程. 写入流程主要分为meta, data, node的写入,本文主要介绍data的写入流程。2.总体流程sys_write fdget file_pos_read vfs_write file_pos_writefdget是从当前进程的文件描述符表获取一个fd;file_pos_read获取文件描述符当前的读写位置vfs_write执行文件写入操作file_pos_write更新文件的写入位置3.vfs_writevfs_w原创 2022-01-11 16:24:40 · 1182 阅读 · 0 评论 -
f2fs学习笔记 - 8. f2fs 读文件
1.前言本文主要介绍f2fs读取流程2.调用流程vfs_read file->f_op->read(do_sync_read) generic_file_aio_read do_generic_file_read mapping->a_ops->readpageread系统调用会调用到vfs_read,进而调用到file->f_op->read,这个read回调是在创建文件时初始化为i原创 2022-01-11 16:17:28 · 732 阅读 · 0 评论 -
f2fs学习笔记 - 7. f2fs文件打开
1. 前言本文主要总结f2fs文件的打开过程,以touch test为例2.打开文件总体流程在打开文件时,获取了file描述符,创建了file, 而file->op_s来源于file所对应的inode->i_fop而inode是如何被创建的呢?[<7f003770>] (f2fs_create+0x24/0x1fc [f2fs]) from [<800c1724>] (vfs_create+0x80/0xb4)[<800c1724>] (vfs_c原创 2022-01-11 16:13:11 · 827 阅读 · 0 评论 -
f2fs学习笔记 - 6. f2fs初始化流程
1.前言初始流程主要包含f2fs文件系统初始化,以及f2fs文件系统mount2. init_f2fs_fsinit_inodecache创建f2fs_inode_cache slab描述符create_node_manager_caches创建nat_entry,free_nid的slab描述符create_gc_caches创建f2fs_gc_inodes的 slab描述符create_checkpoint_caches创建f2fs_orphan_entry,f2fs_dirty_原创 2022-01-11 15:59:39 · 984 阅读 · 0 评论 -
f2fs学习笔记 - 5. f2fs基本类图
f2fs_nat_entryf2fs node address table entry, 可以认为是main area区域的node block的描述符。version?ino为node所对应的inode number,block_addr为node block的索引(这个索引是从CP区域开始计数吗?)f2fs_nat_entry的作用就是根据nid来查找对应的node block的块号,通过nid也可以确定其所属的ino, 进而找到对应的f2fs_inodef2fs_nat_block...原创 2022-01-11 15:50:59 · 1379 阅读 · 0 评论 -
f2fs学习笔记 - 4. f2fs文件系统组件说明
目录1. 前言2. f2fs组件说明2.1 定义f2fs文件系统类型(fs/f2fs/super.c)2.2 定义超级块结构与操作集(fs/f2fs/super.c)2.3 定义inode结构(include/linux/f2fs_fs.h)2.4 定义inode操作函数集2.5 定义inode文件操作函数集2.6 定义inode address_space操作函数集2.7 定义dentry操作函数集1. 前言本文主要是以f2fs文件系统为例来说明文件系统编程模式,要实现一个文件系统,需要实现哪些组件,原创 2022-01-11 15:47:06 · 1734 阅读 · 0 评论 -
f2fs学习笔记 - 3. F2FS文件系统布局
目录1.前言2.F2FS布局说明2.1. super block(block 0x0 ~ block 0x1ff)2.2 CP(block 0x200 ~ block 0x5ff)cp page1nat journalsit journaldata summarycurrent hot node summarycurrent warm node summarycurrent cold node summarycp page22nd checkpoint2.3 SIT(block 0x600 ~ block原创 2022-01-10 15:11:30 · 3637 阅读 · 4 评论 -
f2fs学习笔记 - 1. f2fs概述
1. 前言本文主要通过回答几个问题来概要了解f2fs,这几个问题包括:f2fs是什么?为何引入f2fs?f2fs如何工作?f2fs如何做到随机写入顺序化?f2fs如何解决雪崩问题?2. f2fs是什么?F2FS (Flash Friendly File System) 是专门针对SSD、eMMC、UFS等闪存设备设计的文件系统。基于LFS,同时解决了LFS的一些问题。由三星工程师Jaegeuk Kim于2012年10月发布到Linux社区,并于2012年12月进入Linux 3.8 内核原创 2022-01-10 11:37:17 · 7278 阅读 · 1 评论 -
f2fs学习笔记 - 2. f2fs基础实验环境搭建
1.前言本文主要记录如何搭建f2fs的环境,用于f2fs文件系统的学习。我们选用了f2fs第一个补丁提交前的内核版本:linux3.7.0。然后通过提取出f2fs的最小补丁来学习f2fs文件系统,这个最小补丁主要涵盖了f2fs作者的前18个patchArch: armkenrel: kernel 3.7.0busybox: busybox-1.24.2gcc: gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux注:经试验其它版本会导原创 2021-11-17 23:04:31 · 829 阅读 · 0 评论 -
【转载】FAT32文件系统详解
【转载】FAT32文件系统详解硬盘是用来存储数据的,为了使用和管理方便,这些数据以文件的形式存储在硬盘上。任何操作系统都有自己的文件管理系统,不同的文件系统又有各自不同的逻辑组织方式。例如:常见的文件系统有FAT,NTFS,EXT,UFS,HFS+等等。作者后面的文章会一一讲到,下面就来学习一下基于Windows的FAT32文件系统。FAT32文件系统由DBR及其保留扇区,FAT1,FAT2 和 DATA&...转载 2021-07-30 10:13:07 · 4419 阅读 · 1 评论