文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>028_bad_inode.c

028_bad_inode.c

时间:2009-03-27  来源:hylpro

2007-3-16
 当系统发现一个文件的inode有错误的时候,不是返回一个NULL指针,而是返回一个bad_inode.此inode的所有操作函数都返回-EIO.
此模块的主要对外接口是
/*
* When a filesystem is unable to read an inode due to an I/O error in
* its read_inode() function, it can call make_bad_inode() to return a
* set of stubs which will return EIO errors as required.
*
* We only need to do limited initialisation: all other fields are
* preinitialised to zero automatically.
*/
/**
* make_bad_inode - mark an inode bad due to an I/O error
* @inode: Inode to mark bad
*
* When an inode cannot be read due to a media or remote network
* failure this function makes the inode "bad" and causes I/O operations
* on it to fail from this point on.
*/

void make_bad_inode(struct inode * inode) 
{
inode->i_mode = S_IFREG;
inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
inode->i_op = &bad_inode_ops;
inode->i_fop = &bad_file_ops;
}
/*
* This tests whether an inode has been flagged as bad. The test uses
* &bad_inode_ops to cover the case of invalidated inodes as well as
* those created by make_bad_inode() above.
*/
/**
* is_bad_inode - is an inode errored
* @inode: inode to test
*
* Returns true if the inode in question has been marked as bad.
*/
int is_bad_inode(struct inode * inode) 
{
return (inode->i_op == &bad_inode_ops);
}
 这是个很好的例子,证名文件操作函数来自于对应的inode。so simple。唯独bad_follow_link需要一些操作:
/*
* The follow_link operation is special: it must behave as a no-op
* so that a bad root inode can at least be unmounted. To do this
* we must dput() the base and return the dentry with a dget().
*/

static int bad_follow_link(struct dentry *dent, struct nameidata *nd)
{
dput(nd->dentry);
nd->dentry = dget(dent);
return 0;
}
 可以想象,当初为了能让bad inode可以unmout,这里进行过艰苦的调试。可惜,到后来的版本中,不能unmout bad inode的情况依
然存在。这个函数又被删除。看看path_walk,当inode->fllow_link 为非指针的时候,inode被认为是一个link。不必深究了,这里要做
的很简单,只要没有什么问题即可。只是要关注一下bad inode 的umount问题。
 
 
 
相关阅读 更多 +
排行榜 更多 +
房间毁灭模拟器最新版

房间毁灭模拟器最新版

休闲益智 下载
街头追逐者最新版

街头追逐者最新版

休闲益智 下载
弓箭手2内置作弊菜单

弓箭手2内置作弊菜单

休闲益智 下载