Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 95735
b: refs/heads/master
c: 1b690b4
h: refs/heads/master
i:
  95733: e1f3dfb
  95731: ec316db
  95727: 5b66419
v: v3
  • Loading branch information
David Woodhouse committed May 1, 2008
1 parent ed28d54 commit 9546996
Show file tree
Hide file tree
Showing 5 changed files with 9 additions and 8 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 590fe34c47cb5c2d836ac76fabc5f160bf31a3f1
refs/heads/master: 1b690b48786229571e590dd22fe01ecc22a8746b
9 changes: 5 additions & 4 deletions trunk/fs/jffs2/fs.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
int inum, int nlink)
int inum, int unlinked)
{
struct inode *inode;
struct jffs2_inode_cache *ic;
if (!nlink) {

if (unlinked) {
/* The inode has zero nlink but its nodes weren't yet marked
obsolete. This has to be because we're still waiting for
the final (close() and) iput() to happen.
Expand Down Expand Up @@ -638,8 +639,8 @@ struct jffs2_inode_info *jffs2_gc_fetch_inode(struct jffs2_sb_info *c,
return ERR_CAST(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. */
iput(inode);
return ERR_PTR(-EIO);
Expand Down
2 changes: 1 addition & 1 deletion trunk/fs/jffs2/gc.c
Original file line number Diff line number Diff line change
Expand Up @@ -401,7 +401,7 @@ int jffs2_garbage_collect_pass(struct jffs2_sb_info *c)
nlink = ic->nlink;
spin_unlock(&c->inocache_lock);

f = jffs2_gc_fetch_inode(c, inum, nlink);
f = jffs2_gc_fetch_inode(c, inum, !nlink);
if (IS_ERR(f)) {
ret = PTR_ERR(f);
goto release_sem;
Expand Down
2 changes: 1 addition & 1 deletion trunk/fs/jffs2/os-linux.h
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ int jffs2_do_fill_super(struct super_block *sb, void *data, int silent);
void jffs2_gc_release_inode(struct jffs2_sb_info *c,
struct jffs2_inode_info *f);
struct jffs2_inode_info *jffs2_gc_fetch_inode(struct jffs2_sb_info *c,
int inum, int nlink);
int inum, int unlinked);

unsigned char *jffs2_gc_fetch_page(struct jffs2_sb_info *c,
struct jffs2_inode_info *f,
Expand Down
2 changes: 1 addition & 1 deletion trunk/fs/jffs2/wbuf.c
Original file line number Diff line number Diff line change
Expand Up @@ -494,7 +494,7 @@ static void jffs2_wbuf_recover(struct jffs2_sb_info *c)
/* If it's an in-core inode, then we have to adjust any
full_dirent or full_dnode structure to point to the
new version instead of the old */
f = jffs2_gc_fetch_inode(c, ic->ino, ic->nlink);
f = jffs2_gc_fetch_inode(c, ic->ino, !ic->nlink);
if (IS_ERR(f)) {
/* Should never happen; it _must_ be present */
JFFS2_ERROR("Failed to iget() ino #%u, err %ld\n",
Expand Down

0 comments on commit 9546996

Please sign in to comment.