diff options
author | David Woodhouse <dwmw2@infradead.org> | 2006-05-20 18:27:32 +0200 |
---|---|---|
committer | David Woodhouse <dwmw2@infradead.org> | 2006-05-20 18:27:32 +0200 |
commit | 0cfc7da3ff4b39a3aac261ab3f6b1329e2485653 (patch) | |
tree | 447073fe757b42e6da63b96a26cbbc6b4c705946 /fs/jffs2/fs.c | |
parent | [JFFS2] Reduce calls to ref_totlen() in jffs2_mark_node_obsolete() (diff) | |
parent | Merge git://git.infradead.org/mtd-2.6 (diff) | |
download | linux-0cfc7da3ff4b39a3aac261ab3f6b1329e2485653.tar.xz linux-0cfc7da3ff4b39a3aac261ab3f6b1329e2485653.zip |
Merge git://git.infradead.org/jffs2-xattr-2.6
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Diffstat (limited to 'fs/jffs2/fs.c')
-rw-r--r-- | fs/jffs2/fs.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/fs/jffs2/fs.c b/fs/jffs2/fs.c index 24cb4c688efc..a0f84673ce54 100644 --- a/fs/jffs2/fs.c +++ b/fs/jffs2/fs.c @@ -184,7 +184,12 @@ static int jffs2_do_setattr (struct inode *inode, struct iattr *iattr) int jffs2_setattr(struct dentry *dentry, struct iattr *iattr) { - return jffs2_do_setattr(dentry->d_inode, iattr); + int rc; + + rc = jffs2_do_setattr(dentry->d_inode, iattr); + if (!rc && (iattr->ia_valid & ATTR_MODE)) + rc = jffs2_acl_chmod(dentry->d_inode); + return rc; } int jffs2_statfs(struct super_block *sb, struct kstatfs *buf) @@ -223,6 +228,7 @@ void jffs2_clear_inode (struct inode *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); } @@ -508,6 +514,8 @@ int jffs2_do_fill_super(struct super_block *sb, void *data, int silent) } memset(c->inocache_list, 0, INOCACHE_HASHSIZE * sizeof(struct jffs2_inode_cache *)); + jffs2_init_xattr_subsystem(c); + if ((ret = jffs2_do_mount_fs(c))) goto out_inohash; @@ -542,6 +550,7 @@ int jffs2_do_fill_super(struct super_block *sb, void *data, int silent) else kfree(c->blocks); out_inohash: + jffs2_clear_xattr_subsystem(c); kfree(c->inocache_list); out_wbuf: jffs2_flash_cleanup(c); |