* Re: [PATCH] ext4: Remove CONFIG_EXT4_FS_XATTR.
2012-12-10 6:19 ` [PATCH] ext4: Remove CONFIG_EXT4_FS_XATTR Tao Ma
@ 2012-12-10 10:08 ` Jan Kara
2012-12-10 15:11 ` [PATCH V2] " Tao Ma
2012-12-10 19:21 ` [PATCH] " Theodore Ts'o
2 siblings, 0 replies; 10+ messages in thread
From: Jan Kara @ 2012-12-10 10:08 UTC (permalink / raw)
To: Tao Ma; +Cc: linux-ext4, David Brown, Jan Kara, Eric Sandeen,
Theodore Ts'o
On Mon 10-12-12 14:19:08, Tao Ma wrote:
> From: Tao Ma <boyu.mt@taobao.com>
>
> Ted has sent out a RFC about removing this feature. Eric and Jan
> confirmed that both RedHat and SUSE enable this feature in all their
> product. David also said that "As far as I know, it's enabled in
> all Android kernels that use ext4." So it seems OK for us.
>
> And what's more, as inline data depends its implementation on xattr,
> and to be frank, I don't run any test again inline data enabled while
> xattr disabled. So I think we should add inline data and remove this
> config option in the same release.
>
> Cc: David Brown <davidb@codeaurora.org>
> Cc: Jan Kara <jack@suse.cz>
> Cc: Eric Sandeen <sandeen@redhat.com>
> Cc: "Theodore Ts'o" <tytso@mit.edu>
> Signed-off-by: Tao Ma <boyu.mt@taobao.com>
The patch looks good. You can add:
Acked-by: Jan Kara <jack@suse.cz>
Honza
> ---
> fs/ext4/Kconfig | 15 ----
> fs/ext4/Makefile | 4 +-
> fs/ext4/ext4.h | 2 -
> fs/ext4/file.c | 2 -
> fs/ext4/namei.c | 4 -
> fs/ext4/super.c | 7 --
> fs/ext4/symlink.c | 4 -
> fs/ext4/xattr.h | 236 -----------------------------------------------------
> 8 files changed, 1 insertions(+), 273 deletions(-)
>
> diff --git a/fs/ext4/Kconfig b/fs/ext4/Kconfig
> index c22f170..0a475c8 100644
> --- a/fs/ext4/Kconfig
> +++ b/fs/ext4/Kconfig
> @@ -39,22 +39,8 @@ config EXT4_USE_FOR_EXT23
> compiled kernel size by using one file system driver for
> ext2, ext3, and ext4 file systems.
>
> -config EXT4_FS_XATTR
> - bool "Ext4 extended attributes"
> - depends on EXT4_FS
> - default y
> - help
> - Extended attributes are name:value pairs associated with inodes by
> - the kernel or by users (see the attr(5) manual page, or visit
> - <http://acl.bestbits.at/> for details).
> -
> - If unsure, say N.
> -
> - You need this for POSIX ACL support on ext4.
> -
> config EXT4_FS_POSIX_ACL
> bool "Ext4 POSIX Access Control Lists"
> - depends on EXT4_FS_XATTR
> select FS_POSIX_ACL
> help
> POSIX Access Control Lists (ACLs) support permissions for users and
> @@ -67,7 +53,6 @@ config EXT4_FS_POSIX_ACL
>
> config EXT4_FS_SECURITY
> bool "Ext4 Security Labels"
> - depends on EXT4_FS_XATTR
> help
> Security labels support alternative access control models
> implemented by security modules like SELinux. This option
> diff --git a/fs/ext4/Makefile b/fs/ext4/Makefile
> index e88b7a6..2eea427 100644
> --- a/fs/ext4/Makefile
> +++ b/fs/ext4/Makefile
> @@ -7,8 +7,6 @@ obj-$(CONFIG_EXT4_FS) += ext4.o
> ext4-y := balloc.o bitmap.o dir.o file.o fsync.o ialloc.o inode.o page-io.o \
> ioctl.o namei.o super.o symlink.o hash.o resize.o extents.o \
> ext4_jbd2.o migrate.o mballoc.o block_validity.o move_extent.o \
> - mmp.o indirect.o
> -
> -ext4-$(CONFIG_EXT4_FS_XATTR) += xattr.o xattr_user.o xattr_trusted.o inline.o
> + mmp.o indirect.o xattr.o xattr_user.o xattr_trusted.o inline.o
> ext4-$(CONFIG_EXT4_FS_POSIX_ACL) += acl.o
> ext4-$(CONFIG_EXT4_FS_SECURITY) += xattr_security.o
> diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
> index 2dd5824..b380147 100644
> --- a/fs/ext4/ext4.h
> +++ b/fs/ext4/ext4.h
> @@ -835,7 +835,6 @@ struct ext4_inode_info {
> #endif
> unsigned long i_flags;
>
> -#ifdef CONFIG_EXT4_FS_XATTR
> /*
> * Extended attributes can be read independently of the main file
> * data. Taking i_mutex even when reading would cause contention
> @@ -844,7 +843,6 @@ struct ext4_inode_info {
> * EAs.
> */
> struct rw_semaphore xattr_sem;
> -#endif
>
> struct list_head i_orphan; /* unlinked but open inodes */
>
> diff --git a/fs/ext4/file.c b/fs/ext4/file.c
> index bf3966b..dcda329 100644
> --- a/fs/ext4/file.c
> +++ b/fs/ext4/file.c
> @@ -326,12 +326,10 @@ const struct file_operations ext4_file_operations = {
> const struct inode_operations ext4_file_inode_operations = {
> .setattr = ext4_setattr,
> .getattr = ext4_getattr,
> -#ifdef CONFIG_EXT4_FS_XATTR
> .setxattr = generic_setxattr,
> .getxattr = generic_getxattr,
> .listxattr = ext4_listxattr,
> .removexattr = generic_removexattr,
> -#endif
> .get_acl = ext4_get_acl,
> .fiemap = ext4_fiemap,
> };
> diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
> index adf309b..b099b4c 100644
> --- a/fs/ext4/namei.c
> +++ b/fs/ext4/namei.c
> @@ -3209,23 +3209,19 @@ const struct inode_operations ext4_dir_inode_operations = {
> .mknod = ext4_mknod,
> .rename = ext4_rename,
> .setattr = ext4_setattr,
> -#ifdef CONFIG_EXT4_FS_XATTR
> .setxattr = generic_setxattr,
> .getxattr = generic_getxattr,
> .listxattr = ext4_listxattr,
> .removexattr = generic_removexattr,
> -#endif
> .get_acl = ext4_get_acl,
> .fiemap = ext4_fiemap,
> };
>
> const struct inode_operations ext4_special_inode_operations = {
> .setattr = ext4_setattr,
> -#ifdef CONFIG_EXT4_FS_XATTR
> .setxattr = generic_setxattr,
> .getxattr = generic_getxattr,
> .listxattr = ext4_listxattr,
> .removexattr = generic_removexattr,
> -#endif
> .get_acl = ext4_get_acl,
> };
> diff --git a/fs/ext4/super.c b/fs/ext4/super.c
> index 80928f7..1de7ebc 100644
> --- a/fs/ext4/super.c
> +++ b/fs/ext4/super.c
> @@ -996,9 +996,7 @@ static void init_once(void *foo)
> struct ext4_inode_info *ei = (struct ext4_inode_info *) foo;
>
> INIT_LIST_HEAD(&ei->i_orphan);
> -#ifdef CONFIG_EXT4_FS_XATTR
> init_rwsem(&ei->xattr_sem);
> -#endif
> init_rwsem(&ei->i_data_sem);
> inode_init_once(&ei->vfs_inode);
> }
> @@ -1447,13 +1445,10 @@ static const struct mount_opts {
> {Opt_data_journal, EXT4_MOUNT_JOURNAL_DATA, MOPT_DATAJ},
> {Opt_data_ordered, EXT4_MOUNT_ORDERED_DATA, MOPT_DATAJ},
> {Opt_data_writeback, EXT4_MOUNT_WRITEBACK_DATA, MOPT_DATAJ},
> -#ifdef CONFIG_EXT4_FS_XATTR
> {Opt_user_xattr, EXT4_MOUNT_XATTR_USER, MOPT_SET},
> {Opt_nouser_xattr, EXT4_MOUNT_XATTR_USER, MOPT_CLEAR},
> -#else
> {Opt_user_xattr, 0, MOPT_NOSUPPORT},
> {Opt_nouser_xattr, 0, MOPT_NOSUPPORT},
> -#endif
> #ifdef CONFIG_EXT4_FS_POSIX_ACL
> {Opt_acl, EXT4_MOUNT_POSIX_ACL, MOPT_SET},
> {Opt_noacl, EXT4_MOUNT_POSIX_ACL, MOPT_CLEAR},
> @@ -3369,9 +3364,7 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
> if (def_mount_opts & EXT4_DEFM_UID16)
> set_opt(sb, NO_UID32);
> /* xattr user namespace & acls are now defaulted on */
> -#ifdef CONFIG_EXT4_FS_XATTR
> set_opt(sb, XATTR_USER);
> -#endif
> #ifdef CONFIG_EXT4_FS_POSIX_ACL
> set_opt(sb, POSIX_ACL);
> #endif
> diff --git a/fs/ext4/symlink.c b/fs/ext4/symlink.c
> index ed9354a..ff37119 100644
> --- a/fs/ext4/symlink.c
> +++ b/fs/ext4/symlink.c
> @@ -35,22 +35,18 @@ const struct inode_operations ext4_symlink_inode_operations = {
> .follow_link = page_follow_link_light,
> .put_link = page_put_link,
> .setattr = ext4_setattr,
> -#ifdef CONFIG_EXT4_FS_XATTR
> .setxattr = generic_setxattr,
> .getxattr = generic_getxattr,
> .listxattr = ext4_listxattr,
> .removexattr = generic_removexattr,
> -#endif
> };
>
> const struct inode_operations ext4_fast_symlink_inode_operations = {
> .readlink = generic_readlink,
> .follow_link = ext4_follow_link,
> .setattr = ext4_setattr,
> -#ifdef CONFIG_EXT4_FS_XATTR
> .setxattr = generic_setxattr,
> .getxattr = generic_getxattr,
> .listxattr = ext4_listxattr,
> .removexattr = generic_removexattr,
> -#endif
> };
> diff --git a/fs/ext4/xattr.h b/fs/ext4/xattr.h
> index f959e6c..c33fa41 100644
> --- a/fs/ext4/xattr.h
> +++ b/fs/ext4/xattr.h
> @@ -92,8 +92,6 @@ struct ext4_xattr_ibody_find {
> struct ext4_iloc iloc;
> };
>
> -# ifdef CONFIG_EXT4_FS_XATTR
> -
> extern const struct xattr_handler ext4_xattr_user_handler;
> extern const struct xattr_handler ext4_xattr_trusted_handler;
> extern const struct xattr_handler ext4_xattr_acl_access_handler;
> @@ -193,240 +191,6 @@ extern int ext4_try_to_evict_inline_data(handle_t *handle,
> extern void ext4_inline_data_truncate(struct inode *inode, int *has_inline);
>
> extern int ext4_convert_inline_data(struct inode *inode);
> -# else /* CONFIG_EXT4_FS_XATTR */
> -
> -static inline int
> -ext4_xattr_get(struct inode *inode, int name_index, const char *name,
> - void *buffer, size_t size, int flags)
> -{
> - return -EOPNOTSUPP;
> -}
> -
> -static inline int
> -ext4_xattr_set(struct inode *inode, int name_index, const char *name,
> - const void *value, size_t size, int flags)
> -{
> - return -EOPNOTSUPP;
> -}
> -
> -static inline int
> -ext4_xattr_set_handle(handle_t *handle, struct inode *inode, int name_index,
> - const char *name, const void *value, size_t size, int flags)
> -{
> - return -EOPNOTSUPP;
> -}
> -
> -static inline void
> -ext4_xattr_delete_inode(handle_t *handle, struct inode *inode)
> -{
> -}
> -
> -static inline void
> -ext4_xattr_put_super(struct super_block *sb)
> -{
> -}
> -
> -static __init inline int
> -ext4_init_xattr(void)
> -{
> - return 0;
> -}
> -
> -static inline void
> -ext4_exit_xattr(void)
> -{
> -}
> -
> -static inline int
> -ext4_expand_extra_isize_ea(struct inode *inode, int new_extra_isize,
> - struct ext4_inode *raw_inode, handle_t *handle)
> -{
> - return -EOPNOTSUPP;
> -}
> -
> -#define ext4_xattr_handlers NULL
> -
> -static inline int
> -ext4_xattr_ibody_find(struct inode *inode, struct ext4_xattr_info *i,
> - struct ext4_xattr_ibody_find *is)
> -{
> - return -EOPNOTSUPP;
> -}
> -
> -static inline int
> -ext4_xattr_ibody_set(handle_t *handle, struct inode *inode,
> - struct ext4_xattr_info *i,
> - struct ext4_xattr_ibody_find *is)
> -{
> - return -EOPNOTSUPP;
> -}
> -
> -static inline int
> -ext4_xattr_ibody_get(struct inode *inode, int name_index,
> - const char *name,
> - void *buffer, size_t buffer_size)
> -{
> - return -EOPNOTSUPP;
> -}
> -
> -static inline int ext4_find_inline_data(struct inode *inode)
> -{
> - return 0;
> -}
> -
> -static inline int ext4_has_inline_data(struct inode *inode)
> -{
> - return 0;
> -}
> -
> -static inline int ext4_get_inline_size(struct inode *inode)
> -{
> - return 0;
> -}
> -
> -static inline int ext4_get_max_inline_size(struct inode *inode)
> -{
> - return 0;
> -}
> -
> -static inline void ext4_write_inline_data(struct inode *inode,
> - struct ext4_iloc *iloc,
> - void *buffer, loff_t pos,
> - unsigned int len)
> -{
> - return;
> -}
> -
> -static inline int ext4_init_inline_data(handle_t *handle,
> - struct inode *inode,
> - unsigned int len)
> -{
> - return 0;
> -}
> -
> -static inline int ext4_destroy_inline_data(handle_t *handle,
> - struct inode *inode)
> -{
> - return 0;
> -}
> -
> -static inline int ext4_readpage_inline(struct inode *inode, struct page *page)
> -{
> - return 0;
> -}
> -
> -static inline int ext4_try_to_write_inline_data(struct address_space *mapping,
> - struct inode *inode,
> - loff_t pos, unsigned len,
> - unsigned flags,
> - struct page **pagep)
> -{
> - return 0;
> -}
> -
> -static inline int ext4_write_inline_data_end(struct inode *inode,
> - loff_t pos, unsigned len,
> - unsigned copied,
> - struct page *page)
> -{
> - return 0;
> -}
> -
> -static inline struct buffer_head *
> -ext4_journalled_write_inline_data(struct inode *inode,
> - unsigned len,
> - struct page *page)
> -{
> - return NULL;
> -}
> -
> -static inline int
> -ext4_da_write_inline_data_begin(struct address_space *mapping,
> - struct inode *inode,
> - loff_t pos, unsigned len,
> - unsigned flags,
> - struct page **pagep,
> - void **fsdata)
> -{
> - return 0;
> -}
> -
> -static inline int ext4_da_write_inline_data_end(struct inode *inode, loff_t pos,
> - unsigned len, unsigned copied,
> - struct page *page)
> -{
> - return 0;
> -}
> -
> -static inline int ext4_try_add_inline_entry(handle_t *handle,
> - struct dentry *dentry,
> - struct inode *inode)
> -{
> - return 0;
> -}
> -
> -static inline int ext4_try_create_inline_dir(handle_t *handle,
> - struct inode *parent,
> - struct inode *inode)
> -{
> - return 0;
> -}
> -static inline int ext4_read_inline_dir(struct file *filp,
> - void *dirent, filldir_t filldir,
> - int *has_inline_data)
> -{
> - return 0;
> -}
> -
> -static inline struct buffer_head *
> -ext4_find_inline_entry(struct inode *dir,
> - const struct qstr *d_name,
> - struct ext4_dir_entry_2 **res_dir,
> - int *has_inline_data)
> -{
> - return NULL;
> -}
> -
> -static inline int ext4_delete_inline_entry(handle_t *handle,
> - struct inode *dir,
> - struct ext4_dir_entry_2 *de_del,
> - struct buffer_head *bh,
> - int *has_inline_data)
> -{
> - return 0;
> -}
> -
> -static inline int empty_inline_dir(struct inode *dir, int *has_inline_data)
> -{
> - return 0;
> -}
> -
> -static inline struct buffer_head *
> -ext4_get_first_inline_block(struct inode *inode,
> - struct ext4_dir_entry_2 **parent_de,
> - int *retval)
> -{
> - return NULL;
> -}
> -
> -static inline int ext4_inline_data_fiemap(struct inode *inode,
> - struct fiemap_extent_info *fieinfo,
> - int *has_inline)
> -{
> - return 0;
> -}
> -
> -static inline void ext4_inline_data_truncate(struct inode *inode,
> - int *has_inline)
> -{
> - return;
> -}
> -
> -static inline int ext4_convert_inline_data(struct inode *inode)
> -{
> - return 0;
> -}
> -# endif /* CONFIG_EXT4_FS_XATTR */
>
> #ifdef CONFIG_EXT4_FS_SECURITY
> extern int ext4_init_security(handle_t *handle, struct inode *inode,
> --
> 1.7.1
>
--
Jan Kara <jack@suse.cz>
SUSE Labs, CR
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH V2] ext4: Remove CONFIG_EXT4_FS_XATTR.
2012-12-10 6:19 ` [PATCH] ext4: Remove CONFIG_EXT4_FS_XATTR Tao Ma
2012-12-10 10:08 ` Jan Kara
@ 2012-12-10 15:11 ` Tao Ma
2012-12-10 19:21 ` [PATCH] " Theodore Ts'o
2 siblings, 0 replies; 10+ messages in thread
From: Tao Ma @ 2012-12-10 15:11 UTC (permalink / raw)
To: linux-ext4; +Cc: David Brown, Eric Sandeen, Theodore Ts'o
From: Tao Ma <boyu.mt@taobao.com>
Ted has sent out a RFC about removing this feature. Eric and Jan
confirmed that both RedHat and SUSE enable this feature in all their
product. David also said that "As far as I know, it's enabled in
all Android kernels that use ext4." So it seems OK for us.
And what's more, as inline data depends its implementation on xattr,
and to be frank, I don't run any test again inline data enabled while
xattr disabled. So I think we should add inline data and remove this
config option in the same release.
Cc: David Brown <davidb@codeaurora.org>
Acked-by: Jan Kara <jack@suse.cz>
Cc: Eric Sandeen <sandeen@redhat.com>
Cc: "Theodore Ts'o" <tytso@mit.edu>
Signed-off-by: Tao Ma <boyu.mt@taobao.com>
---
Rebase to ext4.git/dev and remove another part I forgot to remove in V1.
fs/ext4/Kconfig | 15 ----
fs/ext4/Makefile | 5 +-
fs/ext4/ext4.h | 2 -
fs/ext4/file.c | 2 -
fs/ext4/namei.c | 4 -
fs/ext4/super.c | 9 --
fs/ext4/symlink.c | 4 -
fs/ext4/xattr.h | 235 -----------------------------------------------------
8 files changed, 2 insertions(+), 274 deletions(-)
diff --git a/fs/ext4/Kconfig b/fs/ext4/Kconfig
index c22f170..0a475c8 100644
--- a/fs/ext4/Kconfig
+++ b/fs/ext4/Kconfig
@@ -39,22 +39,8 @@ config EXT4_USE_FOR_EXT23
compiled kernel size by using one file system driver for
ext2, ext3, and ext4 file systems.
-config EXT4_FS_XATTR
- bool "Ext4 extended attributes"
- depends on EXT4_FS
- default y
- help
- Extended attributes are name:value pairs associated with inodes by
- the kernel or by users (see the attr(5) manual page, or visit
- <http://acl.bestbits.at/> for details).
-
- If unsure, say N.
-
- You need this for POSIX ACL support on ext4.
-
config EXT4_FS_POSIX_ACL
bool "Ext4 POSIX Access Control Lists"
- depends on EXT4_FS_XATTR
select FS_POSIX_ACL
help
POSIX Access Control Lists (ACLs) support permissions for users and
@@ -67,7 +53,6 @@ config EXT4_FS_POSIX_ACL
config EXT4_FS_SECURITY
bool "Ext4 Security Labels"
- depends on EXT4_FS_XATTR
help
Security labels support alternative access control models
implemented by security modules like SELinux. This option
diff --git a/fs/ext4/Makefile b/fs/ext4/Makefile
index 3d96d56..b4b2a66 100644
--- a/fs/ext4/Makefile
+++ b/fs/ext4/Makefile
@@ -7,8 +7,7 @@ obj-$(CONFIG_EXT4_FS) += ext4.o
ext4-y := balloc.o bitmap.o dir.o file.o fsync.o ialloc.o inode.o page-io.o \
ioctl.o namei.o super.o symlink.o hash.o resize.o extents.o \
ext4_jbd2.o migrate.o mballoc.o block_validity.o move_extent.o \
- mmp.o indirect.o extents_status.o
-
-ext4-$(CONFIG_EXT4_FS_XATTR) += xattr.o xattr_user.o xattr_trusted.o inline.o
+ mmp.o indirect.o extents_status.o \
+ xattr.o xattr_user.o xattr_trusted.o inline.o
ext4-$(CONFIG_EXT4_FS_POSIX_ACL) += acl.o
ext4-$(CONFIG_EXT4_FS_SECURITY) += xattr_security.o
diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
index b90e272..e20dc38 100644
--- a/fs/ext4/ext4.h
+++ b/fs/ext4/ext4.h
@@ -848,7 +848,6 @@ struct ext4_inode_info {
#endif
unsigned long i_flags;
-#ifdef CONFIG_EXT4_FS_XATTR
/*
* Extended attributes can be read independently of the main file
* data. Taking i_mutex even when reading would cause contention
@@ -857,7 +856,6 @@ struct ext4_inode_info {
* EAs.
*/
struct rw_semaphore xattr_sem;
-#endif
struct list_head i_orphan; /* unlinked but open inodes */
diff --git a/fs/ext4/file.c b/fs/ext4/file.c
index 2f5759e..b64a60b 100644
--- a/fs/ext4/file.c
+++ b/fs/ext4/file.c
@@ -656,12 +656,10 @@ const struct file_operations ext4_file_operations = {
const struct inode_operations ext4_file_inode_operations = {
.setattr = ext4_setattr,
.getattr = ext4_getattr,
-#ifdef CONFIG_EXT4_FS_XATTR
.setxattr = generic_setxattr,
.getxattr = generic_getxattr,
.listxattr = ext4_listxattr,
.removexattr = generic_removexattr,
-#endif
.get_acl = ext4_get_acl,
.fiemap = ext4_fiemap,
};
diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
index b37c218..cac4482 100644
--- a/fs/ext4/namei.c
+++ b/fs/ext4/namei.c
@@ -3228,23 +3228,19 @@ const struct inode_operations ext4_dir_inode_operations = {
.mknod = ext4_mknod,
.rename = ext4_rename,
.setattr = ext4_setattr,
-#ifdef CONFIG_EXT4_FS_XATTR
.setxattr = generic_setxattr,
.getxattr = generic_getxattr,
.listxattr = ext4_listxattr,
.removexattr = generic_removexattr,
-#endif
.get_acl = ext4_get_acl,
.fiemap = ext4_fiemap,
};
const struct inode_operations ext4_special_inode_operations = {
.setattr = ext4_setattr,
-#ifdef CONFIG_EXT4_FS_XATTR
.setxattr = generic_setxattr,
.getxattr = generic_getxattr,
.listxattr = ext4_listxattr,
.removexattr = generic_removexattr,
-#endif
.get_acl = ext4_get_acl,
};
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index e1e216f..7d53adf 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -997,9 +997,7 @@ static void init_once(void *foo)
struct ext4_inode_info *ei = (struct ext4_inode_info *) foo;
INIT_LIST_HEAD(&ei->i_orphan);
-#ifdef CONFIG_EXT4_FS_XATTR
init_rwsem(&ei->xattr_sem);
-#endif
init_rwsem(&ei->i_data_sem);
inode_init_once(&ei->vfs_inode);
}
@@ -1449,13 +1447,8 @@ static const struct mount_opts {
{Opt_data_journal, EXT4_MOUNT_JOURNAL_DATA, MOPT_DATAJ},
{Opt_data_ordered, EXT4_MOUNT_ORDERED_DATA, MOPT_DATAJ},
{Opt_data_writeback, EXT4_MOUNT_WRITEBACK_DATA, MOPT_DATAJ},
-#ifdef CONFIG_EXT4_FS_XATTR
{Opt_user_xattr, EXT4_MOUNT_XATTR_USER, MOPT_SET},
{Opt_nouser_xattr, EXT4_MOUNT_XATTR_USER, MOPT_CLEAR},
-#else
- {Opt_user_xattr, 0, MOPT_NOSUPPORT},
- {Opt_nouser_xattr, 0, MOPT_NOSUPPORT},
-#endif
#ifdef CONFIG_EXT4_FS_POSIX_ACL
{Opt_acl, EXT4_MOUNT_POSIX_ACL, MOPT_SET},
{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)
if (def_mount_opts & EXT4_DEFM_UID16)
set_opt(sb, NO_UID32);
/* xattr user namespace & acls are now defaulted on */
-#ifdef CONFIG_EXT4_FS_XATTR
set_opt(sb, XATTR_USER);
-#endif
#ifdef CONFIG_EXT4_FS_POSIX_ACL
set_opt(sb, POSIX_ACL);
#endif
diff --git a/fs/ext4/symlink.c b/fs/ext4/symlink.c
index ed9354a..ff37119 100644
--- a/fs/ext4/symlink.c
+++ b/fs/ext4/symlink.c
@@ -35,22 +35,18 @@ const struct inode_operations ext4_symlink_inode_operations = {
.follow_link = page_follow_link_light,
.put_link = page_put_link,
.setattr = ext4_setattr,
-#ifdef CONFIG_EXT4_FS_XATTR
.setxattr = generic_setxattr,
.getxattr = generic_getxattr,
.listxattr = ext4_listxattr,
.removexattr = generic_removexattr,
-#endif
};
const struct inode_operations ext4_fast_symlink_inode_operations = {
.readlink = generic_readlink,
.follow_link = ext4_follow_link,
.setattr = ext4_setattr,
-#ifdef CONFIG_EXT4_FS_XATTR
.setxattr = generic_setxattr,
.getxattr = generic_getxattr,
.listxattr = ext4_listxattr,
.removexattr = generic_removexattr,
-#endif
};
diff --git a/fs/ext4/xattr.h b/fs/ext4/xattr.h
index 67ce7df..c33fa41 100644
--- a/fs/ext4/xattr.h
+++ b/fs/ext4/xattr.h
@@ -92,8 +92,6 @@ struct ext4_xattr_ibody_find {
struct ext4_iloc iloc;
};
-# ifdef CONFIG_EXT4_FS_XATTR
-
extern const struct xattr_handler ext4_xattr_user_handler;
extern const struct xattr_handler ext4_xattr_trusted_handler;
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,
extern void ext4_inline_data_truncate(struct inode *inode, int *has_inline);
extern int ext4_convert_inline_data(struct inode *inode);
-# else /* CONFIG_EXT4_FS_XATTR */
-
-static inline int
-ext4_xattr_get(struct inode *inode, int name_index, const char *name,
- void *buffer, size_t size, int flags)
-{
- return -EOPNOTSUPP;
-}
-
-static inline int
-ext4_xattr_set(struct inode *inode, int name_index, const char *name,
- const void *value, size_t size, int flags)
-{
- return -EOPNOTSUPP;
-}
-
-static inline int
-ext4_xattr_set_handle(handle_t *handle, struct inode *inode, int name_index,
- const char *name, const void *value, size_t size, int flags)
-{
- return -EOPNOTSUPP;
-}
-
-static inline void
-ext4_xattr_delete_inode(handle_t *handle, struct inode *inode)
-{
-}
-
-static inline void
-ext4_xattr_put_super(struct super_block *sb)
-{
-}
-
-static __init inline int
-ext4_init_xattr(void)
-{
- return 0;
-}
-
-static inline void
-ext4_exit_xattr(void)
-{
-}
-
-static inline int
-ext4_expand_extra_isize_ea(struct inode *inode, int new_extra_isize,
- struct ext4_inode *raw_inode, handle_t *handle)
-{
- return -EOPNOTSUPP;
-}
-
-#define ext4_xattr_handlers NULL
-
-static inline int
-ext4_xattr_ibody_find(struct inode *inode, struct ext4_xattr_info *i,
- struct ext4_xattr_ibody_find *is)
-{
- return -EOPNOTSUPP;
-}
-
-static inline int
-ext4_xattr_ibody_set(handle_t *handle, struct inode *inode,
- struct ext4_xattr_info *i,
- struct ext4_xattr_ibody_find *is)
-{
- return -EOPNOTSUPP;
-}
-
-static inline int
-ext4_xattr_ibody_get(struct inode *inode, int name_index,
- const char *name,
- void *buffer, size_t buffer_size)
-{
- return -EOPNOTSUPP;
-}
-
-static inline int ext4_find_inline_data(struct inode *inode)
-{
- return 0;
-}
-
-static inline int ext4_has_inline_data(struct inode *inode)
-{
- return 0;
-}
-
-static inline int ext4_get_inline_size(struct inode *inode)
-{
- return 0;
-}
-
-static inline int ext4_get_max_inline_size(struct inode *inode)
-{
- return 0;
-}
-
-static inline void ext4_write_inline_data(struct inode *inode,
- struct ext4_iloc *iloc,
- void *buffer, loff_t pos,
- unsigned int len)
-{
- return;
-}
-
-static inline int ext4_init_inline_data(handle_t *handle,
- struct inode *inode,
- unsigned int len)
-{
- return 0;
-}
-
-static inline int ext4_destroy_inline_data(handle_t *handle,
- struct inode *inode)
-{
- return 0;
-}
-
-static inline int ext4_readpage_inline(struct inode *inode, struct page *page)
-{
- return 0;
-}
-
-static inline int ext4_try_to_write_inline_data(struct address_space *mapping,
- struct inode *inode,
- loff_t pos, unsigned len,
- unsigned flags,
- struct page **pagep)
-{
- return 0;
-}
-
-static inline int ext4_write_inline_data_end(struct inode *inode,
- loff_t pos, unsigned len,
- unsigned copied,
- struct page *page)
-{
- return 0;
-}
-
-static inline struct buffer_head *
-ext4_journalled_write_inline_data(struct inode *inode,
- unsigned len,
- struct page *page)
-{
- return NULL;
-}
-
-static inline int
-ext4_da_write_inline_data_begin(struct address_space *mapping,
- struct inode *inode,
- loff_t pos, unsigned len,
- unsigned flags,
- struct page **pagep,
- void **fsdata)
-{
- return 0;
-}
-
-static inline int ext4_da_write_inline_data_end(struct inode *inode, loff_t pos,
- unsigned len, unsigned copied,
- struct page *page)
-{
- return 0;
-}
-
-static inline int ext4_try_add_inline_entry(handle_t *handle,
- struct dentry *dentry,
- struct inode *inode)
-{
- return 0;
-}
-
-static inline int ext4_try_create_inline_dir(handle_t *handle,
- struct inode *parent,
- struct inode *inode)
-{
- return 0;
-}
-static inline int ext4_read_inline_dir(struct file *filp,
- void *dirent, filldir_t filldir,
- int *has_inline_data)
-{
- return 0;
-}
-
-static inline struct buffer_head *
-ext4_find_inline_entry(struct inode *dir,
- const struct qstr *d_name,
- struct ext4_dir_entry_2 **res_dir,
- int *has_inline_data)
-{
- return NULL;
-}
-static inline int ext4_delete_inline_entry(handle_t *handle,
- struct inode *dir,
- struct ext4_dir_entry_2 *de_del,
- struct buffer_head *bh,
- int *has_inline_data)
-{
- return 0;
-}
-
-static inline int empty_inline_dir(struct inode *dir, int *has_inline_data)
-{
- return 0;
-}
-
-static inline struct buffer_head *
-ext4_get_first_inline_block(struct inode *inode,
- struct ext4_dir_entry_2 **parent_de,
- int *retval)
-{
- return NULL;
-}
-
-static inline int ext4_inline_data_fiemap(struct inode *inode,
- struct fiemap_extent_info *fieinfo,
- int *has_inline)
-{
- return 0;
-}
-
-static inline void ext4_inline_data_truncate(struct inode *inode,
- int *has_inline)
-{
- return;
-}
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH] ext4: Remove CONFIG_EXT4_FS_XATTR.
2012-12-10 6:19 ` [PATCH] ext4: Remove CONFIG_EXT4_FS_XATTR Tao Ma
2012-12-10 10:08 ` Jan Kara
2012-12-10 15:11 ` [PATCH V2] " Tao Ma
@ 2012-12-10 19:21 ` Theodore Ts'o
2 siblings, 0 replies; 10+ messages in thread
From: Theodore Ts'o @ 2012-12-10 19:21 UTC (permalink / raw)
To: Tao Ma; +Cc: linux-ext4, David Brown, Jan Kara, Eric Sandeen
Applied, with some minor fixups so it works with the extents_status
tree patches, and also to fix a buglet which in fs/ext4/super.c:
> @@ -1447,13 +1445,10 @@ static const struct mount_opts {
> {Opt_data_journal, EXT4_MOUNT_JOURNAL_DATA, MOPT_DATAJ},
> {Opt_data_ordered, EXT4_MOUNT_ORDERED_DATA, MOPT_DATAJ},
> {Opt_data_writeback, EXT4_MOUNT_WRITEBACK_DATA, MOPT_DATAJ},
> -#ifdef CONFIG_EXT4_FS_XATTR
> {Opt_user_xattr, EXT4_MOUNT_XATTR_USER, MOPT_SET},
> {Opt_nouser_xattr, EXT4_MOUNT_XATTR_USER, MOPT_CLEAR},
> -#else
> {Opt_user_xattr, 0, MOPT_NOSUPPORT},
> {Opt_nouser_xattr, 0, MOPT_NOSUPPORT},
> -#endif
The table entries between the #else and #endif in the above patch
chunlk needs to be removed as well.
I've fixed this in my tree.
Regards,
- Ted
^ permalink raw reply [flat|nested] 10+ messages in thread