Skip to content

Commit

Permalink
jfs: add jfs specific ->setattr call
Browse files Browse the repository at this point in the history
generic setattr not longer responsible for quota transfer.
use jfs_setattr for all jfs's inodes.

Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
Signed-off-by: Dave Kleikamp <shaggy@linux.vnet.ibm.com>
  • Loading branch information
Dmitry Monakhov authored and Dave Kleikamp committed Apr 16, 2010
1 parent 2b0b395 commit c7f2e1f
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 4 deletions.
2 changes: 1 addition & 1 deletion fs/jfs/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions fs/jfs/jfs_inode.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,5 +47,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 */
4 changes: 2 additions & 2 deletions fs/jfs/namei.c
Original file line number Diff line number Diff line change
Expand Up @@ -946,7 +946,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);
Expand All @@ -968,7 +968,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;

/*
Expand Down
14 changes: 13 additions & 1 deletion fs/jfs/symlink.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down

0 comments on commit c7f2e1f

Please sign in to comment.