|
@@ -586,11 +586,12 @@ void jffs2_gc_release_inode(struct jffs2_sb_info *c,
|
|
}
|
|
}
|
|
|
|
|
|
struct jffs2_inode_info *jffs2_gc_fetch_inode(struct jffs2_sb_info *c,
|
|
struct jffs2_inode_info *jffs2_gc_fetch_inode(struct jffs2_sb_info *c,
|
|
- int inum, int nlink)
|
|
|
|
|
|
+ int inum, int unlinked)
|
|
{
|
|
{
|
|
struct inode *inode;
|
|
struct inode *inode;
|
|
struct jffs2_inode_cache *ic;
|
|
struct jffs2_inode_cache *ic;
|
|
- if (!nlink) {
|
|
|
|
|
|
+
|
|
|
|
+ if (unlinked) {
|
|
/* The inode has zero nlink but its nodes weren't yet marked
|
|
/* The inode has zero nlink but its nodes weren't yet marked
|
|
obsolete. This has to be because we're still waiting for
|
|
obsolete. This has to be because we're still waiting for
|
|
the final (close() and) iput() to happen.
|
|
the final (close() and) iput() to happen.
|
|
@@ -638,8 +639,8 @@ struct jffs2_inode_info *jffs2_gc_fetch_inode(struct jffs2_sb_info *c,
|
|
return ERR_CAST(inode);
|
|
return ERR_CAST(inode);
|
|
}
|
|
}
|
|
if (is_bad_inode(inode)) {
|
|
if (is_bad_inode(inode)) {
|
|
- printk(KERN_NOTICE "Eep. read_inode() failed for ino #%u. nlink %d\n",
|
|
|
|
- inum, nlink);
|
|
|
|
|
|
+ printk(KERN_NOTICE "Eep. read_inode() failed for ino #%u. unlinked %d\n",
|
|
|
|
+ inum, unlinked);
|
|
/* NB. This will happen again. We need to do something appropriate here. */
|
|
/* NB. This will happen again. We need to do something appropriate here. */
|
|
iput(inode);
|
|
iput(inode);
|
|
return ERR_PTR(-EIO);
|
|
return ERR_PTR(-EIO);
|