jfs: add jfs specific ->setattr call
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>
This commit is contained in:
parent
2b0b39517d
commit
c7f2e1f0ac
4 changed files with 17 additions and 4 deletions
|
@ -60,7 +60,7 @@ struct inode *jfs_iget(struct super_block *sb, unsigned long ino)
|
||||||
inode->i_op = &page_symlink_inode_operations;
|
inode->i_op = &page_symlink_inode_operations;
|
||||||
inode->i_mapping->a_ops = &jfs_aops;
|
inode->i_mapping->a_ops = &jfs_aops;
|
||||||
} else {
|
} else {
|
||||||
inode->i_op = &jfs_symlink_inode_operations;
|
inode->i_op = &jfs_fast_symlink_inode_operations;
|
||||||
/*
|
/*
|
||||||
* The inline data should be null-terminated, but
|
* The inline data should be null-terminated, but
|
||||||
* don't let on-disk corruption crash the kernel
|
* don't let on-disk corruption crash the kernel
|
||||||
|
|
|
@ -47,5 +47,6 @@ extern const struct file_operations jfs_dir_operations;
|
||||||
extern const struct inode_operations jfs_file_inode_operations;
|
extern const struct inode_operations jfs_file_inode_operations;
|
||||||
extern const struct file_operations jfs_file_operations;
|
extern const struct file_operations jfs_file_operations;
|
||||||
extern const struct inode_operations jfs_symlink_inode_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;
|
extern const struct dentry_operations jfs_ci_dentry_operations;
|
||||||
#endif /* _H_JFS_INODE */
|
#endif /* _H_JFS_INODE */
|
||||||
|
|
|
@ -946,7 +946,7 @@ static int jfs_symlink(struct inode *dip, struct dentry *dentry,
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (ssize <= IDATASIZE) {
|
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;
|
i_fastsymlink = JFS_IP(ip)->i_inline;
|
||||||
memcpy(i_fastsymlink, name, ssize);
|
memcpy(i_fastsymlink, name, ssize);
|
||||||
|
@ -968,7 +968,7 @@ static int jfs_symlink(struct inode *dip, struct dentry *dentry,
|
||||||
else {
|
else {
|
||||||
jfs_info("jfs_symlink: allocate extent ip:0x%p", ip);
|
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;
|
ip->i_mapping->a_ops = &jfs_aops;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -29,9 +29,21 @@ static void *jfs_follow_link(struct dentry *dentry, struct nameidata *nd)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
const struct inode_operations jfs_symlink_inode_operations = {
|
const struct inode_operations jfs_fast_symlink_inode_operations = {
|
||||||
.readlink = generic_readlink,
|
.readlink = generic_readlink,
|
||||||
.follow_link = jfs_follow_link,
|
.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,
|
.setxattr = jfs_setxattr,
|
||||||
.getxattr = jfs_getxattr,
|
.getxattr = jfs_getxattr,
|
||||||
.listxattr = jfs_listxattr,
|
.listxattr = jfs_listxattr,
|
||||||
|
|
Loading…
Add table
Reference in a new issue