From c97e0f9a569355495981dda262936d5c7d4687aa Mon Sep 17 00:00:00 2001 From: KaiGai Kohei Date: Sat, 24 Jun 2006 09:15:36 +0900 Subject: [PATCH] --- yaml --- r: 30937 b: refs/heads/master c: 355ed4e141203fd7266ef9d90d57be0c61bd1aa4 h: refs/heads/master i: 30935: f746319f81180b14ccdf6b5e5337d9d3b6b55ec8 v: v3 --- [refs] | 2 +- trunk/fs/jffs2/fs.c | 2 -- trunk/fs/jffs2/gc.c | 1 + trunk/fs/jffs2/nodelist.c | 3 +++ trunk/fs/jffs2/readinode.c | 1 + 5 files changed, 6 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 6d32321be031..4b71ce2c7abf 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8a13695cbe4e8311b363f9bd25162904b984ca74 +refs/heads/master: 355ed4e141203fd7266ef9d90d57be0c61bd1aa4 diff --git a/trunk/fs/jffs2/fs.c b/trunk/fs/jffs2/fs.c index 2900ec3ec3af..97caa77d60cf 100644 --- a/trunk/fs/jffs2/fs.c +++ b/trunk/fs/jffs2/fs.c @@ -227,8 +227,6 @@ void jffs2_clear_inode (struct inode *inode) struct jffs2_inode_info *f = JFFS2_INODE_INFO(inode); D1(printk(KERN_DEBUG "jffs2_clear_inode(): ino #%lu mode %o\n", inode->i_ino, inode->i_mode)); - - jffs2_xattr_delete_inode(c, f->inocache); jffs2_do_clear_inode(c, f); } diff --git a/trunk/fs/jffs2/gc.c b/trunk/fs/jffs2/gc.c index f59b147661c9..daff3341ff92 100644 --- a/trunk/fs/jffs2/gc.c +++ b/trunk/fs/jffs2/gc.c @@ -165,6 +165,7 @@ int jffs2_garbage_collect_pass(struct jffs2_sb_info *c) D1(printk(KERN_DEBUG "Skipping check of ino #%d with nlink zero\n", ic->ino)); spin_unlock(&c->inocache_lock); + jffs2_xattr_delete_inode(c, ic); continue; } switch(ic->state) { diff --git a/trunk/fs/jffs2/nodelist.c b/trunk/fs/jffs2/nodelist.c index 927dfe42ba76..7675b33396c7 100644 --- a/trunk/fs/jffs2/nodelist.c +++ b/trunk/fs/jffs2/nodelist.c @@ -906,6 +906,9 @@ void jffs2_del_ino_cache(struct jffs2_sb_info *c, struct jffs2_inode_cache *old) { struct jffs2_inode_cache **prev; +#ifdef CONFIG_JFFS2_FS_XATTR + BUG_ON(old->xref); +#endif dbg_inocache("del %p (ino #%u)\n", old, old->ino); spin_lock(&c->inocache_lock); diff --git a/trunk/fs/jffs2/readinode.c b/trunk/fs/jffs2/readinode.c index 5fec012b02ed..cc1899268c43 100644 --- a/trunk/fs/jffs2/readinode.c +++ b/trunk/fs/jffs2/readinode.c @@ -968,6 +968,7 @@ void jffs2_do_clear_inode(struct jffs2_sb_info *c, struct jffs2_inode_info *f) struct jffs2_full_dirent *fd, *fds; int deleted; + jffs2_xattr_delete_inode(c, f->inocache); down(&f->sem); deleted = f->inocache && !f->inocache->nlink;