Dmitry Monakhov <dmonakhov@xxxxxxxxxx> writes: > generic setattr not longer responsible for quota transfer. > use jfs_setattr for all jfs's inodes. Jan, can you please confirm that you'll take care of this patch and ufs's fix(the second patch). > > Signed-off-by: Dmitry Monakhov <dmonakhov@xxxxxxxxxx> > --- > fs/jfs/inode.c | 2 +- > fs/jfs/jfs_inode.h | 1 + > fs/jfs/namei.c | 4 ++-- > fs/jfs/symlink.c | 14 +++++++++++++- > 4 files changed, 17 insertions(+), 4 deletions(-) > > diff --git a/fs/jfs/inode.c b/fs/jfs/inode.c > index c694a5f..39b2e41 100644 > --- a/fs/jfs/inode.c > +++ b/fs/jfs/inode.c > @@ -60,7 +60,7 @@ struct inode *jfs_iget(struct super_block *sb, unsigned long ino) > inode->i_op = &page_symlink_inode_operations; > inode->i_mapping->a_ops = &jfs_aops; > } else { > - inode->i_op = &jfs_symlink_inode_operations; > + inode->i_op = &jfs_fast_symlink_inode_operations; > /* > * The inline data should be null-terminated, but > * don't let on-disk corruption crash the kernel > diff --git a/fs/jfs/jfs_inode.h b/fs/jfs/jfs_inode.h > index 4b91b27..fba6e6e 100644 > --- a/fs/jfs/jfs_inode.h > +++ b/fs/jfs/jfs_inode.h > @@ -48,5 +48,6 @@ extern const struct file_operations jfs_dir_operations; > extern const struct inode_operations jfs_file_inode_operations; > extern const struct file_operations jfs_file_operations; > extern const struct inode_operations jfs_symlink_inode_operations; > +extern const struct inode_operations jfs_fast_symlink_inode_operations; > extern const struct dentry_operations jfs_ci_dentry_operations; > #endif /* _H_JFS_INODE */ > diff --git a/fs/jfs/namei.c b/fs/jfs/namei.c > index 4a3e9f3..a9cf8e8 100644 > --- a/fs/jfs/namei.c > +++ b/fs/jfs/namei.c > @@ -956,7 +956,7 @@ static int jfs_symlink(struct inode *dip, struct dentry *dentry, > */ > > if (ssize <= IDATASIZE) { > - ip->i_op = &jfs_symlink_inode_operations; > + ip->i_op = &jfs_fast_symlink_inode_operations; > > i_fastsymlink = JFS_IP(ip)->i_inline; > memcpy(i_fastsymlink, name, ssize); > @@ -978,7 +978,7 @@ static int jfs_symlink(struct inode *dip, struct dentry *dentry, > else { > jfs_info("jfs_symlink: allocate extent ip:0x%p", ip); > > - ip->i_op = &page_symlink_inode_operations; > + ip->i_op = &jfs_symlink_inode_operations; > ip->i_mapping->a_ops = &jfs_aops; > > /* > diff --git a/fs/jfs/symlink.c b/fs/jfs/symlink.c > index 4af1a05..205b946 100644 > --- a/fs/jfs/symlink.c > +++ b/fs/jfs/symlink.c > @@ -29,9 +29,21 @@ static void *jfs_follow_link(struct dentry *dentry, struct nameidata *nd) > return NULL; > } > > -const struct inode_operations jfs_symlink_inode_operations = { > +const struct inode_operations jfs_fast_symlink_inode_operations = { > .readlink = generic_readlink, > .follow_link = jfs_follow_link, > + .setattr = jfs_setattr, > + .setxattr = jfs_setxattr, > + .getxattr = jfs_getxattr, > + .listxattr = jfs_listxattr, > + .removexattr = jfs_removexattr, > +}; > + > +const struct inode_operations jfs_symlink_inode_operations = { > + .readlink = generic_readlink, > + .follow_link = page_follow_link_light, > + .put_link = page_put_link, > + .setattr = jfs_setattr, > .setxattr = jfs_setxattr, > .getxattr = jfs_getxattr, > .listxattr = jfs_listxattr, -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html