diff options
author | Dmitry Monakhov <dmonakhov@openvz.org> | 2010-03-29 03:05:21 -0400 |
---|---|---|
committer | Jan Kara <jack@suse.cz> | 2010-04-08 09:35:20 -0400 |
commit | c15d0fc0fc399d2639240b35ad7ed93ed5a59412 (patch) | |
tree | a9f9f24d5ab9d48cb32ee3debe1eb29a65677185 /fs/udf | |
parent | 69ecbbedac8e353bbd924fad16fed0c7c54e6382 (diff) |
udf: add speciffic ->setattr callback
generic setattr not longer responsible for quota transfer.
use udf_setattr for all udf's inodes.
Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
Signed-off-by: Jan Kara <jack@suse.cz>
Diffstat (limited to 'fs/udf')
-rw-r--r-- | fs/udf/file.c | 2 | ||||
-rw-r--r-- | fs/udf/inode.c | 2 | ||||
-rw-r--r-- | fs/udf/namei.c | 9 | ||||
-rw-r--r-- | fs/udf/udfdecl.h | 3 |
4 files changed, 12 insertions, 4 deletions
diff --git a/fs/udf/file.c b/fs/udf/file.c index 1eb06774ed9..4b6a46ccbf4 100644 --- a/fs/udf/file.c +++ b/fs/udf/file.c | |||
@@ -218,7 +218,7 @@ const struct file_operations udf_file_operations = { | |||
218 | .llseek = generic_file_llseek, | 218 | .llseek = generic_file_llseek, |
219 | }; | 219 | }; |
220 | 220 | ||
221 | static int udf_setattr(struct dentry *dentry, struct iattr *iattr) | 221 | int udf_setattr(struct dentry *dentry, struct iattr *iattr) |
222 | { | 222 | { |
223 | struct inode *inode = dentry->d_inode; | 223 | struct inode *inode = dentry->d_inode; |
224 | int error; | 224 | int error; |
diff --git a/fs/udf/inode.c b/fs/udf/inode.c index bb863fe579a..8a3fbd177ca 100644 --- a/fs/udf/inode.c +++ b/fs/udf/inode.c | |||
@@ -1314,7 +1314,7 @@ static void udf_fill_inode(struct inode *inode, struct buffer_head *bh) | |||
1314 | break; | 1314 | break; |
1315 | case ICBTAG_FILE_TYPE_SYMLINK: | 1315 | case ICBTAG_FILE_TYPE_SYMLINK: |
1316 | inode->i_data.a_ops = &udf_symlink_aops; | 1316 | inode->i_data.a_ops = &udf_symlink_aops; |
1317 | inode->i_op = &page_symlink_inode_operations; | 1317 | inode->i_op = &udf_symlink_inode_operations; |
1318 | inode->i_mode = S_IFLNK | S_IRWXUGO; | 1318 | inode->i_mode = S_IFLNK | S_IRWXUGO; |
1319 | break; | 1319 | break; |
1320 | case ICBTAG_FILE_TYPE_MAIN: | 1320 | case ICBTAG_FILE_TYPE_MAIN: |
diff --git a/fs/udf/namei.c b/fs/udf/namei.c index db423ab078b..75816025f95 100644 --- a/fs/udf/namei.c +++ b/fs/udf/namei.c | |||
@@ -925,7 +925,7 @@ static int udf_symlink(struct inode *dir, struct dentry *dentry, | |||
925 | iinfo = UDF_I(inode); | 925 | iinfo = UDF_I(inode); |
926 | inode->i_mode = S_IFLNK | S_IRWXUGO; | 926 | inode->i_mode = S_IFLNK | S_IRWXUGO; |
927 | inode->i_data.a_ops = &udf_symlink_aops; | 927 | inode->i_data.a_ops = &udf_symlink_aops; |
928 | inode->i_op = &page_symlink_inode_operations; | 928 | inode->i_op = &udf_symlink_inode_operations; |
929 | 929 | ||
930 | if (iinfo->i_alloc_type != ICBTAG_FLAG_AD_IN_ICB) { | 930 | if (iinfo->i_alloc_type != ICBTAG_FLAG_AD_IN_ICB) { |
931 | struct kernel_lb_addr eloc; | 931 | struct kernel_lb_addr eloc; |
@@ -1393,6 +1393,7 @@ const struct export_operations udf_export_ops = { | |||
1393 | const struct inode_operations udf_dir_inode_operations = { | 1393 | const struct inode_operations udf_dir_inode_operations = { |
1394 | .lookup = udf_lookup, | 1394 | .lookup = udf_lookup, |
1395 | .create = udf_create, | 1395 | .create = udf_create, |
1396 | .setattr = udf_setattr, | ||
1396 | .link = udf_link, | 1397 | .link = udf_link, |
1397 | .unlink = udf_unlink, | 1398 | .unlink = udf_unlink, |
1398 | .symlink = udf_symlink, | 1399 | .symlink = udf_symlink, |
@@ -1401,3 +1402,9 @@ const struct inode_operations udf_dir_inode_operations = { | |||
1401 | .mknod = udf_mknod, | 1402 | .mknod = udf_mknod, |
1402 | .rename = udf_rename, | 1403 | .rename = udf_rename, |
1403 | }; | 1404 | }; |
1405 | const struct inode_operations udf_symlink_inode_operations = { | ||
1406 | .readlink = generic_readlink, | ||
1407 | .follow_link = page_follow_link_light, | ||
1408 | .put_link = page_put_link, | ||
1409 | .setattr = udf_setattr, | ||
1410 | }; | ||
diff --git a/fs/udf/udfdecl.h b/fs/udf/udfdecl.h index 4223ac855da..702a1148e70 100644 --- a/fs/udf/udfdecl.h +++ b/fs/udf/udfdecl.h | |||
@@ -76,6 +76,7 @@ extern const struct inode_operations udf_dir_inode_operations; | |||
76 | extern const struct file_operations udf_dir_operations; | 76 | extern const struct file_operations udf_dir_operations; |
77 | extern const struct inode_operations udf_file_inode_operations; | 77 | extern const struct inode_operations udf_file_inode_operations; |
78 | extern const struct file_operations udf_file_operations; | 78 | extern const struct file_operations udf_file_operations; |
79 | extern const struct inode_operations udf_symlink_inode_operations; | ||
79 | extern const struct address_space_operations udf_aops; | 80 | extern const struct address_space_operations udf_aops; |
80 | extern const struct address_space_operations udf_adinicb_aops; | 81 | extern const struct address_space_operations udf_adinicb_aops; |
81 | extern const struct address_space_operations udf_symlink_aops; | 82 | extern const struct address_space_operations udf_symlink_aops; |
@@ -131,7 +132,7 @@ extern int udf_write_fi(struct inode *inode, struct fileIdentDesc *, | |||
131 | /* file.c */ | 132 | /* file.c */ |
132 | extern int udf_ioctl(struct inode *, struct file *, unsigned int, | 133 | extern int udf_ioctl(struct inode *, struct file *, unsigned int, |
133 | unsigned long); | 134 | unsigned long); |
134 | 135 | extern int udf_setattr(struct dentry *dentry, struct iattr *iattr); | |
135 | /* inode.c */ | 136 | /* inode.c */ |
136 | extern struct inode *udf_iget(struct super_block *, struct kernel_lb_addr *); | 137 | extern struct inode *udf_iget(struct super_block *, struct kernel_lb_addr *); |
137 | extern int udf_sync_inode(struct inode *); | 138 | extern int udf_sync_inode(struct inode *); |