diff options
-rw-r--r-- | Documentation/filesystems/ext4.txt | 9 | ||||
-rw-r--r-- | fs/Kconfig | 4 | ||||
-rw-r--r-- | fs/ext4/Kconfig | 15 | ||||
-rw-r--r-- | fs/ext4/Makefile | 4 | ||||
-rw-r--r-- | fs/ext4/ext4.h | 2 | ||||
-rw-r--r-- | fs/ext4/file.c | 2 | ||||
-rw-r--r-- | fs/ext4/namei.c | 4 | ||||
-rw-r--r-- | fs/ext4/super.c | 9 | ||||
-rw-r--r-- | fs/ext4/symlink.c | 4 | ||||
-rw-r--r-- | fs/ext4/xattr.h | 235 |
10 files changed, 7 insertions, 281 deletions
diff --git a/Documentation/filesystems/ext4.txt b/Documentation/filesystems/ext4.txt index 104322bf378c..34ea4f1fa6ea 100644 --- a/Documentation/filesystems/ext4.txt +++ b/Documentation/filesystems/ext4.txt | |||
@@ -200,12 +200,9 @@ inode_readahead_blks=n This tuning parameter controls the maximum | |||
200 | table readahead algorithm will pre-read into | 200 | table readahead algorithm will pre-read into |
201 | the buffer cache. The default value is 32 blocks. | 201 | the buffer cache. The default value is 32 blocks. |
202 | 202 | ||
203 | nouser_xattr Disables Extended User Attributes. If you have extended | 203 | nouser_xattr Disables Extended User Attributes. See the |
204 | attribute support enabled in the kernel configuration | 204 | attr(5) manual page and http://acl.bestbits.at/ |
205 | (CONFIG_EXT4_FS_XATTR), extended attribute support | 205 | for more information about extended attributes. |
206 | is enabled by default on mount. See the attr(5) manual | ||
207 | page and http://acl.bestbits.at/ for more information | ||
208 | about extended attributes. | ||
209 | 206 | ||
210 | noacl This option disables POSIX Access Control List | 207 | noacl This option disables POSIX Access Control List |
211 | support. If ACL support is enabled in the kernel | 208 | support. If ACL support is enabled in the kernel |
diff --git a/fs/Kconfig b/fs/Kconfig index f95ae3a027f3..eaff24a19502 100644 --- a/fs/Kconfig +++ b/fs/Kconfig | |||
@@ -28,8 +28,8 @@ config FS_MBCACHE | |||
28 | tristate | 28 | tristate |
29 | default y if EXT2_FS=y && EXT2_FS_XATTR | 29 | default y if EXT2_FS=y && EXT2_FS_XATTR |
30 | default y if EXT3_FS=y && EXT3_FS_XATTR | 30 | default y if EXT3_FS=y && EXT3_FS_XATTR |
31 | default y if EXT4_FS=y && EXT4_FS_XATTR | 31 | default y if EXT4_FS=y |
32 | default m if EXT2_FS_XATTR || EXT3_FS_XATTR || EXT4_FS_XATTR | 32 | default m if EXT2_FS_XATTR || EXT3_FS_XATTR || EXT4_FS |
33 | 33 | ||
34 | source "fs/reiserfs/Kconfig" | 34 | source "fs/reiserfs/Kconfig" |
35 | source "fs/jfs/Kconfig" | 35 | source "fs/jfs/Kconfig" |
diff --git a/fs/ext4/Kconfig b/fs/ext4/Kconfig index c22f17021b6e..0a475c881852 100644 --- a/fs/ext4/Kconfig +++ b/fs/ext4/Kconfig | |||
@@ -39,22 +39,8 @@ config EXT4_USE_FOR_EXT23 | |||
39 | compiled kernel size by using one file system driver for | 39 | compiled kernel size by using one file system driver for |
40 | ext2, ext3, and ext4 file systems. | 40 | ext2, ext3, and ext4 file systems. |
41 | 41 | ||
42 | config EXT4_FS_XATTR | ||
43 | bool "Ext4 extended attributes" | ||
44 | depends on EXT4_FS | ||
45 | default y | ||
46 | help | ||
47 | Extended attributes are name:value pairs associated with inodes by | ||
48 | the kernel or by users (see the attr(5) manual page, or visit | ||
49 | <http://acl.bestbits.at/> for details). | ||
50 | |||
51 | If unsure, say N. | ||
52 | |||
53 | You need this for POSIX ACL support on ext4. | ||
54 | |||
55 | config EXT4_FS_POSIX_ACL | 42 | config EXT4_FS_POSIX_ACL |
56 | bool "Ext4 POSIX Access Control Lists" | 43 | bool "Ext4 POSIX Access Control Lists" |
57 | depends on EXT4_FS_XATTR | ||
58 | select FS_POSIX_ACL | 44 | select FS_POSIX_ACL |
59 | help | 45 | help |
60 | POSIX Access Control Lists (ACLs) support permissions for users and | 46 | POSIX Access Control Lists (ACLs) support permissions for users and |
@@ -67,7 +53,6 @@ config EXT4_FS_POSIX_ACL | |||
67 | 53 | ||
68 | config EXT4_FS_SECURITY | 54 | config EXT4_FS_SECURITY |
69 | bool "Ext4 Security Labels" | 55 | bool "Ext4 Security Labels" |
70 | depends on EXT4_FS_XATTR | ||
71 | help | 56 | help |
72 | Security labels support alternative access control models | 57 | Security labels support alternative access control models |
73 | implemented by security modules like SELinux. This option | 58 | implemented by security modules like SELinux. This option |
diff --git a/fs/ext4/Makefile b/fs/ext4/Makefile index 3d96d5698538..0310fec2ee3d 100644 --- a/fs/ext4/Makefile +++ b/fs/ext4/Makefile | |||
@@ -7,8 +7,8 @@ obj-$(CONFIG_EXT4_FS) += ext4.o | |||
7 | ext4-y := balloc.o bitmap.o dir.o file.o fsync.o ialloc.o inode.o page-io.o \ | 7 | ext4-y := balloc.o bitmap.o dir.o file.o fsync.o ialloc.o inode.o page-io.o \ |
8 | ioctl.o namei.o super.o symlink.o hash.o resize.o extents.o \ | 8 | ioctl.o namei.o super.o symlink.o hash.o resize.o extents.o \ |
9 | ext4_jbd2.o migrate.o mballoc.o block_validity.o move_extent.o \ | 9 | ext4_jbd2.o migrate.o mballoc.o block_validity.o move_extent.o \ |
10 | mmp.o indirect.o extents_status.o | 10 | mmp.o indirect.o extents_status.o xattr.o xattr_user.o \ |
11 | xattr_trusted.o inline.o | ||
11 | 12 | ||
12 | ext4-$(CONFIG_EXT4_FS_XATTR) += xattr.o xattr_user.o xattr_trusted.o inline.o | ||
13 | ext4-$(CONFIG_EXT4_FS_POSIX_ACL) += acl.o | 13 | ext4-$(CONFIG_EXT4_FS_POSIX_ACL) += acl.o |
14 | ext4-$(CONFIG_EXT4_FS_SECURITY) += xattr_security.o | 14 | ext4-$(CONFIG_EXT4_FS_SECURITY) += xattr_security.o |
diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index b90e2720b826..e20dc38858d4 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h | |||
@@ -848,7 +848,6 @@ struct ext4_inode_info { | |||
848 | #endif | 848 | #endif |
849 | unsigned long i_flags; | 849 | unsigned long i_flags; |
850 | 850 | ||
851 | #ifdef CONFIG_EXT4_FS_XATTR | ||
852 | /* | 851 | /* |
853 | * Extended attributes can be read independently of the main file | 852 | * Extended attributes can be read independently of the main file |
854 | * data. Taking i_mutex even when reading would cause contention | 853 | * data. Taking i_mutex even when reading would cause contention |
@@ -857,7 +856,6 @@ struct ext4_inode_info { | |||
857 | * EAs. | 856 | * EAs. |
858 | */ | 857 | */ |
859 | struct rw_semaphore xattr_sem; | 858 | struct rw_semaphore xattr_sem; |
860 | #endif | ||
861 | 859 | ||
862 | struct list_head i_orphan; /* unlinked but open inodes */ | 860 | struct list_head i_orphan; /* unlinked but open inodes */ |
863 | 861 | ||
diff --git a/fs/ext4/file.c b/fs/ext4/file.c index 2f5759eb9f89..b64a60bf105a 100644 --- a/fs/ext4/file.c +++ b/fs/ext4/file.c | |||
@@ -656,12 +656,10 @@ const struct file_operations ext4_file_operations = { | |||
656 | const struct inode_operations ext4_file_inode_operations = { | 656 | const struct inode_operations ext4_file_inode_operations = { |
657 | .setattr = ext4_setattr, | 657 | .setattr = ext4_setattr, |
658 | .getattr = ext4_getattr, | 658 | .getattr = ext4_getattr, |
659 | #ifdef CONFIG_EXT4_FS_XATTR | ||
660 | .setxattr = generic_setxattr, | 659 | .setxattr = generic_setxattr, |
661 | .getxattr = generic_getxattr, | 660 | .getxattr = generic_getxattr, |
662 | .listxattr = ext4_listxattr, | 661 | .listxattr = ext4_listxattr, |
663 | .removexattr = generic_removexattr, | 662 | .removexattr = generic_removexattr, |
664 | #endif | ||
665 | .get_acl = ext4_get_acl, | 663 | .get_acl = ext4_get_acl, |
666 | .fiemap = ext4_fiemap, | 664 | .fiemap = ext4_fiemap, |
667 | }; | 665 | }; |
diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c index b37c21839833..cac448282331 100644 --- a/fs/ext4/namei.c +++ b/fs/ext4/namei.c | |||
@@ -3228,23 +3228,19 @@ const struct inode_operations ext4_dir_inode_operations = { | |||
3228 | .mknod = ext4_mknod, | 3228 | .mknod = ext4_mknod, |
3229 | .rename = ext4_rename, | 3229 | .rename = ext4_rename, |
3230 | .setattr = ext4_setattr, | 3230 | .setattr = ext4_setattr, |
3231 | #ifdef CONFIG_EXT4_FS_XATTR | ||
3232 | .setxattr = generic_setxattr, | 3231 | .setxattr = generic_setxattr, |
3233 | .getxattr = generic_getxattr, | 3232 | .getxattr = generic_getxattr, |
3234 | .listxattr = ext4_listxattr, | 3233 | .listxattr = ext4_listxattr, |
3235 | .removexattr = generic_removexattr, | 3234 | .removexattr = generic_removexattr, |
3236 | #endif | ||
3237 | .get_acl = ext4_get_acl, | 3235 | .get_acl = ext4_get_acl, |
3238 | .fiemap = ext4_fiemap, | 3236 | .fiemap = ext4_fiemap, |
3239 | }; | 3237 | }; |
3240 | 3238 | ||
3241 | const struct inode_operations ext4_special_inode_operations = { | 3239 | const struct inode_operations ext4_special_inode_operations = { |
3242 | .setattr = ext4_setattr, | 3240 | .setattr = ext4_setattr, |
3243 | #ifdef CONFIG_EXT4_FS_XATTR | ||
3244 | .setxattr = generic_setxattr, | 3241 | .setxattr = generic_setxattr, |
3245 | .getxattr = generic_getxattr, | 3242 | .getxattr = generic_getxattr, |
3246 | .listxattr = ext4_listxattr, | 3243 | .listxattr = ext4_listxattr, |
3247 | .removexattr = generic_removexattr, | 3244 | .removexattr = generic_removexattr, |
3248 | #endif | ||
3249 | .get_acl = ext4_get_acl, | 3245 | .get_acl = ext4_get_acl, |
3250 | }; | 3246 | }; |
diff --git a/fs/ext4/super.c b/fs/ext4/super.c index e1e216f8e9bd..7d53adff8bd3 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c | |||
@@ -997,9 +997,7 @@ static void init_once(void *foo) | |||
997 | struct ext4_inode_info *ei = (struct ext4_inode_info *) foo; | 997 | struct ext4_inode_info *ei = (struct ext4_inode_info *) foo; |
998 | 998 | ||
999 | INIT_LIST_HEAD(&ei->i_orphan); | 999 | INIT_LIST_HEAD(&ei->i_orphan); |
1000 | #ifdef CONFIG_EXT4_FS_XATTR | ||
1001 | init_rwsem(&ei->xattr_sem); | 1000 | init_rwsem(&ei->xattr_sem); |
1002 | #endif | ||
1003 | init_rwsem(&ei->i_data_sem); | 1001 | init_rwsem(&ei->i_data_sem); |
1004 | inode_init_once(&ei->vfs_inode); | 1002 | inode_init_once(&ei->vfs_inode); |
1005 | } | 1003 | } |
@@ -1449,13 +1447,8 @@ static const struct mount_opts { | |||
1449 | {Opt_data_journal, EXT4_MOUNT_JOURNAL_DATA, MOPT_DATAJ}, | 1447 | {Opt_data_journal, EXT4_MOUNT_JOURNAL_DATA, MOPT_DATAJ}, |
1450 | {Opt_data_ordered, EXT4_MOUNT_ORDERED_DATA, MOPT_DATAJ}, | 1448 | {Opt_data_ordered, EXT4_MOUNT_ORDERED_DATA, MOPT_DATAJ}, |
1451 | {Opt_data_writeback, EXT4_MOUNT_WRITEBACK_DATA, MOPT_DATAJ}, | 1449 | {Opt_data_writeback, EXT4_MOUNT_WRITEBACK_DATA, MOPT_DATAJ}, |
1452 | #ifdef CONFIG_EXT4_FS_XATTR | ||
1453 | {Opt_user_xattr, EXT4_MOUNT_XATTR_USER, MOPT_SET}, | 1450 | {Opt_user_xattr, EXT4_MOUNT_XATTR_USER, MOPT_SET}, |
1454 | {Opt_nouser_xattr, EXT4_MOUNT_XATTR_USER, MOPT_CLEAR}, | 1451 | {Opt_nouser_xattr, EXT4_MOUNT_XATTR_USER, MOPT_CLEAR}, |
1455 | #else | ||
1456 | {Opt_user_xattr, 0, MOPT_NOSUPPORT}, | ||
1457 | {Opt_nouser_xattr, 0, MOPT_NOSUPPORT}, | ||
1458 | #endif | ||
1459 | #ifdef CONFIG_EXT4_FS_POSIX_ACL | 1452 | #ifdef CONFIG_EXT4_FS_POSIX_ACL |
1460 | {Opt_acl, EXT4_MOUNT_POSIX_ACL, MOPT_SET}, | 1453 | {Opt_acl, EXT4_MOUNT_POSIX_ACL, MOPT_SET}, |
1461 | {Opt_noacl, EXT4_MOUNT_POSIX_ACL, MOPT_CLEAR}, | 1454 | {Opt_noacl, EXT4_MOUNT_POSIX_ACL, MOPT_CLEAR}, |
@@ -3368,9 +3361,7 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent) | |||
3368 | if (def_mount_opts & EXT4_DEFM_UID16) | 3361 | if (def_mount_opts & EXT4_DEFM_UID16) |
3369 | set_opt(sb, NO_UID32); | 3362 | set_opt(sb, NO_UID32); |
3370 | /* xattr user namespace & acls are now defaulted on */ | 3363 | /* xattr user namespace & acls are now defaulted on */ |
3371 | #ifdef CONFIG_EXT4_FS_XATTR | ||
3372 | set_opt(sb, XATTR_USER); | 3364 | set_opt(sb, XATTR_USER); |
3373 | #endif | ||
3374 | #ifdef CONFIG_EXT4_FS_POSIX_ACL | 3365 | #ifdef CONFIG_EXT4_FS_POSIX_ACL |
3375 | set_opt(sb, POSIX_ACL); | 3366 | set_opt(sb, POSIX_ACL); |
3376 | #endif | 3367 | #endif |
diff --git a/fs/ext4/symlink.c b/fs/ext4/symlink.c index ed9354aff279..ff3711932018 100644 --- a/fs/ext4/symlink.c +++ b/fs/ext4/symlink.c | |||
@@ -35,22 +35,18 @@ const struct inode_operations ext4_symlink_inode_operations = { | |||
35 | .follow_link = page_follow_link_light, | 35 | .follow_link = page_follow_link_light, |
36 | .put_link = page_put_link, | 36 | .put_link = page_put_link, |
37 | .setattr = ext4_setattr, | 37 | .setattr = ext4_setattr, |
38 | #ifdef CONFIG_EXT4_FS_XATTR | ||
39 | .setxattr = generic_setxattr, | 38 | .setxattr = generic_setxattr, |
40 | .getxattr = generic_getxattr, | 39 | .getxattr = generic_getxattr, |
41 | .listxattr = ext4_listxattr, | 40 | .listxattr = ext4_listxattr, |
42 | .removexattr = generic_removexattr, | 41 | .removexattr = generic_removexattr, |
43 | #endif | ||
44 | }; | 42 | }; |
45 | 43 | ||
46 | const struct inode_operations ext4_fast_symlink_inode_operations = { | 44 | const struct inode_operations ext4_fast_symlink_inode_operations = { |
47 | .readlink = generic_readlink, | 45 | .readlink = generic_readlink, |
48 | .follow_link = ext4_follow_link, | 46 | .follow_link = ext4_follow_link, |
49 | .setattr = ext4_setattr, | 47 | .setattr = ext4_setattr, |
50 | #ifdef CONFIG_EXT4_FS_XATTR | ||
51 | .setxattr = generic_setxattr, | 48 | .setxattr = generic_setxattr, |
52 | .getxattr = generic_getxattr, | 49 | .getxattr = generic_getxattr, |
53 | .listxattr = ext4_listxattr, | 50 | .listxattr = ext4_listxattr, |
54 | .removexattr = generic_removexattr, | 51 | .removexattr = generic_removexattr, |
55 | #endif | ||
56 | }; | 52 | }; |
diff --git a/fs/ext4/xattr.h b/fs/ext4/xattr.h index 4222388c772f..7b5513ed3b38 100644 --- a/fs/ext4/xattr.h +++ b/fs/ext4/xattr.h | |||
@@ -92,8 +92,6 @@ struct ext4_xattr_ibody_find { | |||
92 | struct ext4_iloc iloc; | 92 | struct ext4_iloc iloc; |
93 | }; | 93 | }; |
94 | 94 | ||
95 | # ifdef CONFIG_EXT4_FS_XATTR | ||
96 | |||
97 | extern const struct xattr_handler ext4_xattr_user_handler; | 95 | extern const struct xattr_handler ext4_xattr_user_handler; |
98 | extern const struct xattr_handler ext4_xattr_trusted_handler; | 96 | extern const struct xattr_handler ext4_xattr_trusted_handler; |
99 | extern const struct xattr_handler ext4_xattr_acl_access_handler; | 97 | extern const struct xattr_handler ext4_xattr_acl_access_handler; |
@@ -193,239 +191,6 @@ extern int ext4_try_to_evict_inline_data(handle_t *handle, | |||
193 | extern void ext4_inline_data_truncate(struct inode *inode, int *has_inline); | 191 | extern void ext4_inline_data_truncate(struct inode *inode, int *has_inline); |
194 | 192 | ||
195 | extern int ext4_convert_inline_data(struct inode *inode); | 193 | extern int ext4_convert_inline_data(struct inode *inode); |
196 | # else /* CONFIG_EXT4_FS_XATTR */ | ||
197 | |||
198 | static inline int | ||
199 | ext4_xattr_get(struct inode *inode, int name_index, const char *name, | ||
200 | void *buffer, size_t size, int flags) | ||
201 | { | ||
202 | return -EOPNOTSUPP; | ||
203 | } | ||
204 | |||
205 | static inline int | ||
206 | ext4_xattr_set(struct inode *inode, int name_index, const char *name, | ||
207 | const void *value, size_t size, int flags) | ||
208 | { | ||
209 | return -EOPNOTSUPP; | ||
210 | } | ||
211 | |||
212 | static inline int | ||
213 | ext4_xattr_set_handle(handle_t *handle, struct inode *inode, int name_index, | ||
214 | const char *name, const void *value, size_t size, int flags) | ||
215 | { | ||
216 | return -EOPNOTSUPP; | ||
217 | } | ||
218 | |||
219 | static inline void | ||
220 | ext4_xattr_delete_inode(handle_t *handle, struct inode *inode) | ||
221 | { | ||
222 | } | ||
223 | |||
224 | static inline void | ||
225 | ext4_xattr_put_super(struct super_block *sb) | ||
226 | { | ||
227 | } | ||
228 | |||
229 | static __init inline int | ||
230 | ext4_init_xattr(void) | ||
231 | { | ||
232 | return 0; | ||
233 | } | ||
234 | |||
235 | static inline void | ||
236 | ext4_exit_xattr(void) | ||
237 | { | ||
238 | } | ||
239 | |||
240 | static inline int | ||
241 | ext4_expand_extra_isize_ea(struct inode *inode, int new_extra_isize, | ||
242 | struct ext4_inode *raw_inode, handle_t *handle) | ||
243 | { | ||
244 | return -EOPNOTSUPP; | ||
245 | } | ||
246 | |||
247 | #define ext4_xattr_handlers NULL | ||
248 | |||
249 | static inline int | ||
250 | ext4_xattr_ibody_find(struct inode *inode, struct ext4_xattr_info *i, | ||
251 | struct ext4_xattr_ibody_find *is) | ||
252 | { | ||
253 | return -EOPNOTSUPP; | ||
254 | } | ||
255 | |||
256 | static inline int | ||
257 | ext4_xattr_ibody_set(handle_t *handle, struct inode *inode, | ||
258 | struct ext4_xattr_info *i, | ||
259 | struct ext4_xattr_ibody_find *is) | ||
260 | { | ||
261 | return -EOPNOTSUPP; | ||
262 | } | ||
263 | |||
264 | static inline int | ||
265 | ext4_xattr_ibody_get(struct inode *inode, int name_index, | ||
266 | const char *name, | ||
267 | void *buffer, size_t buffer_size) | ||
268 | { | ||
269 | return -EOPNOTSUPP; | ||
270 | } | ||
271 | |||
272 | static inline int ext4_find_inline_data_nolock(struct inode *inode) | ||
273 | { | ||
274 | return 0; | ||
275 | } | ||
276 | |||
277 | static inline int ext4_has_inline_data(struct inode *inode) | ||
278 | { | ||
279 | return 0; | ||
280 | } | ||
281 | |||
282 | static inline int ext4_get_inline_size(struct inode *inode) | ||
283 | { | ||
284 | return 0; | ||
285 | } | ||
286 | |||
287 | static inline int ext4_get_max_inline_size(struct inode *inode) | ||
288 | { | ||
289 | return 0; | ||
290 | } | ||
291 | |||
292 | static inline void ext4_write_inline_data(struct inode *inode, | ||
293 | struct ext4_iloc *iloc, | ||
294 | void *buffer, loff_t pos, | ||
295 | unsigned int len) | ||
296 | { | ||
297 | return; | ||
298 | } | ||
299 | |||
300 | static inline int ext4_init_inline_data(handle_t *handle, | ||
301 | struct inode *inode, | ||
302 | unsigned int len) | ||
303 | { | ||
304 | return 0; | ||
305 | } | ||
306 | |||
307 | static inline int ext4_destroy_inline_data(handle_t *handle, | ||
308 | struct inode *inode) | ||
309 | { | ||
310 | return 0; | ||
311 | } | ||
312 | |||
313 | static inline int ext4_readpage_inline(struct inode *inode, struct page *page) | ||
314 | { | ||
315 | return 0; | ||
316 | } | ||
317 | |||
318 | static inline int ext4_try_to_write_inline_data(struct address_space *mapping, | ||
319 | struct inode *inode, | ||
320 | loff_t pos, unsigned len, | ||
321 | unsigned flags, | ||
322 | struct page **pagep) | ||
323 | { | ||
324 | return 0; | ||
325 | } | ||
326 | |||
327 | static inline int ext4_write_inline_data_end(struct inode *inode, | ||
328 | loff_t pos, unsigned len, | ||
329 | unsigned copied, | ||
330 | struct page *page) | ||
331 | { | ||
332 | return 0; | ||
333 | } | ||
334 | |||
335 | static inline struct buffer_head * | ||
336 | ext4_journalled_write_inline_data(struct inode *inode, | ||
337 | unsigned len, | ||
338 | struct page *page) | ||
339 | { | ||
340 | return NULL; | ||
341 | } | ||
342 | |||
343 | static inline int | ||
344 | ext4_da_write_inline_data_begin(struct address_space *mapping, | ||
345 | struct inode *inode, | ||
346 | loff_t pos, unsigned len, | ||
347 | unsigned flags, | ||
348 | struct page **pagep, | ||
349 | void **fsdata) | ||
350 | { | ||
351 | return 0; | ||
352 | } | ||
353 | |||
354 | static inline int ext4_da_write_inline_data_end(struct inode *inode, loff_t pos, | ||
355 | unsigned len, unsigned copied, | ||
356 | struct page *page) | ||
357 | { | ||
358 | return 0; | ||
359 | } | ||
360 | |||
361 | static inline int ext4_try_add_inline_entry(handle_t *handle, | ||
362 | struct dentry *dentry, | ||
363 | struct inode *inode) | ||
364 | { | ||
365 | return 0; | ||
366 | } | ||
367 | |||
368 | static inline int ext4_try_create_inline_dir(handle_t *handle, | ||
369 | struct inode *parent, | ||
370 | struct inode *inode) | ||
371 | { | ||
372 | return 0; | ||
373 | } | ||
374 | static inline int ext4_read_inline_dir(struct file *filp, | ||
375 | void *dirent, filldir_t filldir, | ||
376 | int *has_inline_data) | ||
377 | { | ||
378 | return 0; | ||
379 | } | ||
380 | |||
381 | static inline struct buffer_head * | ||
382 | ext4_find_inline_entry(struct inode *dir, | ||
383 | const struct qstr *d_name, | ||
384 | struct ext4_dir_entry_2 **res_dir, | ||
385 | int *has_inline_data) | ||
386 | { | ||
387 | return NULL; | ||
388 | } | ||
389 | static inline int ext4_delete_inline_entry(handle_t *handle, | ||
390 | struct inode *dir, | ||
391 | struct ext4_dir_entry_2 *de_del, | ||
392 | struct buffer_head *bh, | ||
393 | int *has_inline_data) | ||
394 | { | ||
395 | return 0; | ||
396 | } | ||
397 | |||
398 | static inline int empty_inline_dir(struct inode *dir, int *has_inline_data) | ||
399 | { | ||
400 | return 0; | ||
401 | } | ||
402 | |||
403 | static inline struct buffer_head * | ||
404 | ext4_get_first_inline_block(struct inode *inode, | ||
405 | struct ext4_dir_entry_2 **parent_de, | ||
406 | int *retval) | ||
407 | { | ||
408 | return NULL; | ||
409 | } | ||
410 | |||
411 | static inline int ext4_inline_data_fiemap(struct inode *inode, | ||
412 | struct fiemap_extent_info *fieinfo, | ||
413 | int *has_inline) | ||
414 | { | ||
415 | return 0; | ||
416 | } | ||
417 | |||
418 | static inline void ext4_inline_data_truncate(struct inode *inode, | ||
419 | int *has_inline) | ||
420 | { | ||
421 | return; | ||
422 | } | ||
423 | |||
424 | static inline int ext4_convert_inline_data(struct inode *inode) | ||
425 | { | ||
426 | return 0; | ||
427 | } | ||
428 | # endif /* CONFIG_EXT4_FS_XATTR */ | ||
429 | 194 | ||
430 | #ifdef CONFIG_EXT4_FS_SECURITY | 195 | #ifdef CONFIG_EXT4_FS_SECURITY |
431 | extern int ext4_init_security(handle_t *handle, struct inode *inode, | 196 | extern int ext4_init_security(handle_t *handle, struct inode *inode, |