Linux 内核文件系统与设备操作流程分析(26) inode = NULL; if (bh) { unsigned long ino = le32_to_cpu(de->inode); brelse (bh); // // 如果对应的超级块(super block)无效则直接返回错误 // if (!ext3_valid_inum(dir->i_sb, ino)) { ext3_error(dir->i_sb, "ext3_lookup", "bad inode number: %lu", ino); inode = NULL; } else // // 有效则调用 iget() 函数得到正确的 struct inode // 其实也就是根据超级块(super block)的函数集获取 // inode = iget(dir->i_sb, ino); if (!inode)