首页 > 其他 > 详细

f2fs解析(三)NAT中如何区分inode和其他dnode

时间:2015-09-15 00:05:42      阅读:1197      评论:0      收藏:0      [点我收藏+]

 首先,我们要知道NAT中的每个表项都对应着MAIN AREA区域中NODE段的一个block,还要知道NODE block很特别,block末尾会有一个node footer结构:

243 struct node_footer {
244     __le32 nid;     /* node id */
245     __le32 ino;     /* inode nunmber */
246     __le32 flag;        /* include cold/fsync/dentry marks and offset */
247     __le64 cp_ver;      /* checkpoint version */
248     __le32 next_blkaddr;    /* next node page block address */
249 } __packed;

区分一个NODE block里是inode还是普通的dnode,只要比较footer中的nid和ino两个域就可以了,二者如果相等那么这个block里面就是个inode,否则就是普通的dnode。

还要说一点,新建一个文件的时候,会从VFS层分配一个inode,但是这个inode结构的 ino 是不确定的,需要f2fs给它一个值,这个值f2fs通过alloc_nid函数获得,从可用的nid的选择一个,把这个值作为新申请的文件的ino,这样一来,inode的ino和nid就成一样的了,但是对于普通dnode来说,nid还是分配的这个nid,但是ino必须要赋值成文件的ino了。

f2fs解析(三)NAT中如何区分inode和其他dnode

原文:http://www.cnblogs.com/honpey/p/4808897.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!