![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jffs2
kaka__55
这个作者很懒,什么都没留下…
展开
-
JFFS2的remount过程
博主能力有限,若博文有错误,请各位大侠不吝赐教。本文代码基于linux4.4.198jffs2文件系统的remount命令为:mount -t jffs2 -o remount,*** /dev/mtdblocki /mnt这个命令最终会调用到mount系统调用,通过参数MS_REMOUNT告诉内核这是一次remount的操作,代码的调用路径为:sys_mount->do_mount...原创 2020-04-28 23:12:42 · 607 阅读 · 0 评论 -
JFFS2创建文件过程
本文内容基于内核版本linux4.4.198.JFFS2文件系统创建文件的过程,主要是通过VFS层的vfs_create()函数调用到jffs2_create()函数,由jffs2_create()函数负责文件的创建。jffs2_create()函数具体创建文件的步骤是:1.通过jffs2_new_inode()函数分配inode结构体以及jffs2_inode_info、jffs2_ino...原创 2020-04-12 22:49:25 · 599 阅读 · 0 评论 -
jffs2的目录项查找过程
jffs2的目录项查找调用的函数是jffs2_lookup,下面一起看一下这个函数。/* We keep the dirent list sorted in increasing order of name hash, and we use the same hash function as the dentries. Makes this nice and simple*///...原创 2020-04-05 23:28:02 · 351 阅读 · 0 评论 -
JFFS2文件系统挂载过程(5)
上篇博文已经把挂载阶段讲完了,那挂载操作是不是就结束了呢?答案是否定的,还留下了一些操作给gc线程去完成,这么做的目的是为了让挂载阶段所使用的时间减少,提升用户体验(说白了就是让用户以为已经挂载完成了,实际上还有点无伤大雅的小问题需要gc线程处理一下)。那么纠结gc线程完成了什么挂载遗留下来的任务呢?...原创 2020-03-29 22:55:04 · 1145 阅读 · 0 评论 -
JFFS2文件系统挂载过程(4)
经过上一篇博文的分析之后,jffs2挂载过程的第一阶段已经完成,让我们重新回忆一下扫描的三个阶段:/* Scan plan:Scan physical nodes. Build map of inodes/dirents. Allocate inocaches as we goScan directory tree from top down, setting nlink in inocac...原创 2020-03-29 18:51:12 · 643 阅读 · 0 评论 -
JFFS2文件系统挂载过程(3)
继续接着上一篇博客分析jffs2文件系统的挂载过程。上一篇博客分析了jffs2_scan_eraseblock函数的扫描过程,函数很长,我们主要抓住扫描的逻辑就好。对于扫描到的inode节点,jffs2调用函数jffs2_scan_inode_node进行处理,对于扫描到的dirent节点,jffs2调用函数jffs2_scan_dirent_node进行处理。下面主要分析这两个函数。jff...原创 2020-03-29 18:48:29 · 737 阅读 · 0 评论 -
JFFS2文件系统挂载过程(2)
接上一篇博客,这篇博客继续讲解jffs2的挂载过程现在到了jffs2_build_filesystem函数,该函数进行对flash的扫描以及目录树的建立操作,分为三个阶段(以下来源于内核代码注释):/* Scan plan:Scan physical nodes. Build map of inodes/dirents. Allocate inocaches as we goScan d...原创 2020-03-27 23:29:41 · 1527 阅读 · 0 评论 -
JFFS2文件系统挂载过程(1)
从这篇博文开始,从代码角度梳理一下jffs2文件系统挂载的过程,整个过程主要以代码注释的形式呈现。本文内容基于linux4.4.198.请结合另一篇博客所述结构体进行阅读。入口函数:jffs2_mountjffs2_mount只是简单的调用了mount_mtd,并传入了一个函数指针jffs2_fill_super用于回调,mount_mtd函数会在适当的时候调用它static struct ...原创 2020-03-26 23:19:41 · 2043 阅读 · 0 评论 -
JFFS2文件系统(2)
上一篇文章讲述了jffs2的一些结构体,下面通过具体例子说明jffs2文件系统是如何进行文件的组织的。以下例子均通过mkfs.jffs2和jffs2dump两个工具得到的结果,前者用于制作jffs2文件系统,后者用于解析文件系统镜像。touch原有文件 : inode version + 1echo xxx >> file : inode version + 1,isize增加...原创 2020-01-31 23:16:04 · 582 阅读 · 0 评论