- 论坛徽章:
- 0
|
互相关注交流一下吧~
我现在读代码的结论是普通umount流程的话,会将分区对应的文件系统节点从super_blocks链表从剔除~ 呢么再mount的时候就会重建一个节点来同步flash和文件系统缓冲中的内容
而目前的流程的话 umount的时候不会将文件系统节点从super_blocks链表中剔除,导致再加载这个分区的时候会使用之前的文件系统节点~ 不进行flash设备和缓冲数据的同步~ 为什么umount不剔除节点是现在主要debug的目标,我是怀疑umount的时候文件系统计数器不为0,也就是open操作后没有close导致的
现在做试验,当一个进程open了分区之后没close就kill掉或者退出的话,在进程来看,他持有的文件描述符就找不到了~但是从计数器来说,这个文件描述符还没有关掉
从操作来说主要就是umount的-l参数~ 用了这个参数,就能无视文件描述符的计数器直接卸载文件系统,但是却导致了之后的不同步,而不用这个参数,如果之前的进程退出之后没能成功的进行close操作,呢么之后就没办法卸载文件系统了
下个星期继续做这方面的测试~ 哈哈~
PS:兄弟你用的内核是什么版本的?~ 我的是2.4.19 |
|