diff options
| -rw-r--r-- | fs/reiserfs/xattr.c | 45 |
1 files changed, 22 insertions, 23 deletions
diff --git a/fs/reiserfs/xattr.c b/fs/reiserfs/xattr.c index 2237e10c7c7c..cf949646dd57 100644 --- a/fs/reiserfs/xattr.c +++ b/fs/reiserfs/xattr.c | |||
| @@ -685,20 +685,6 @@ out: | |||
| 685 | return err; | 685 | return err; |
| 686 | } | 686 | } |
| 687 | 687 | ||
| 688 | /* Actual operations that are exported to VFS-land */ | ||
| 689 | struct xattr_handler *reiserfs_xattr_handlers[] = { | ||
| 690 | &reiserfs_xattr_user_handler, | ||
| 691 | &reiserfs_xattr_trusted_handler, | ||
| 692 | #ifdef CONFIG_REISERFS_FS_SECURITY | ||
| 693 | &reiserfs_xattr_security_handler, | ||
| 694 | #endif | ||
| 695 | #ifdef CONFIG_REISERFS_FS_POSIX_ACL | ||
| 696 | &reiserfs_posix_acl_access_handler, | ||
| 697 | &reiserfs_posix_acl_default_handler, | ||
| 698 | #endif | ||
| 699 | NULL | ||
| 700 | }; | ||
| 701 | |||
| 702 | /* | 688 | /* |
| 703 | * In order to implement different sets of xattr operations for each xattr | 689 | * In order to implement different sets of xattr operations for each xattr |
| 704 | * prefix with the generic xattr API, a filesystem should create a | 690 | * prefix with the generic xattr API, a filesystem should create a |
| @@ -922,6 +908,28 @@ static int create_privroot(struct dentry *dentry) | |||
| 922 | return 0; | 908 | return 0; |
| 923 | } | 909 | } |
| 924 | 910 | ||
| 911 | #else | ||
| 912 | int __init reiserfs_xattr_register_handlers(void) { return 0; } | ||
| 913 | void reiserfs_xattr_unregister_handlers(void) {} | ||
| 914 | static int create_privroot(struct dentry *dentry) { return 0; } | ||
| 915 | #endif | ||
| 916 | |||
| 917 | /* Actual operations that are exported to VFS-land */ | ||
| 918 | struct xattr_handler *reiserfs_xattr_handlers[] = { | ||
| 919 | #ifdef CONFIG_REISERFS_FS_XATTR | ||
| 920 | &reiserfs_xattr_user_handler, | ||
| 921 | &reiserfs_xattr_trusted_handler, | ||
| 922 | #endif | ||
| 923 | #ifdef CONFIG_REISERFS_FS_SECURITY | ||
| 924 | &reiserfs_xattr_security_handler, | ||
| 925 | #endif | ||
| 926 | #ifdef CONFIG_REISERFS_FS_POSIX_ACL | ||
| 927 | &reiserfs_posix_acl_access_handler, | ||
| 928 | &reiserfs_posix_acl_default_handler, | ||
| 929 | #endif | ||
| 930 | NULL | ||
| 931 | }; | ||
| 932 | |||
| 925 | static int xattr_mount_check(struct super_block *s) | 933 | static int xattr_mount_check(struct super_block *s) |
| 926 | { | 934 | { |
| 927 | /* We need generation numbers to ensure that the oid mapping is correct | 935 | /* We need generation numbers to ensure that the oid mapping is correct |
| @@ -941,11 +949,6 @@ static int xattr_mount_check(struct super_block *s) | |||
| 941 | return 0; | 949 | return 0; |
| 942 | } | 950 | } |
| 943 | 951 | ||
| 944 | #else | ||
| 945 | int __init reiserfs_xattr_register_handlers(void) { return 0; } | ||
| 946 | void reiserfs_xattr_unregister_handlers(void) {} | ||
| 947 | #endif | ||
| 948 | |||
| 949 | /* This will catch lookups from the fs root to .reiserfs_priv */ | 952 | /* This will catch lookups from the fs root to .reiserfs_priv */ |
| 950 | static int | 953 | static int |
| 951 | xattr_lookup_poison(struct dentry *dentry, struct qstr *q1, struct qstr *name) | 954 | xattr_lookup_poison(struct dentry *dentry, struct qstr *q1, struct qstr *name) |
| @@ -992,7 +995,6 @@ int reiserfs_xattr_init(struct super_block *s, int mount_flags) | |||
| 992 | int err = 0; | 995 | int err = 0; |
| 993 | struct dentry *privroot = REISERFS_SB(s)->priv_root; | 996 | struct dentry *privroot = REISERFS_SB(s)->priv_root; |
| 994 | 997 | ||
| 995 | #ifdef CONFIG_REISERFS_FS_XATTR | ||
| 996 | err = xattr_mount_check(s); | 998 | err = xattr_mount_check(s); |
| 997 | if (err) | 999 | if (err) |
| 998 | goto error; | 1000 | goto error; |
| @@ -1023,14 +1025,11 @@ error: | |||
| 1023 | clear_bit(REISERFS_XATTRS_USER, &(REISERFS_SB(s)->s_mount_opt)); | 1025 | clear_bit(REISERFS_XATTRS_USER, &(REISERFS_SB(s)->s_mount_opt)); |
| 1024 | clear_bit(REISERFS_POSIXACL, &(REISERFS_SB(s)->s_mount_opt)); | 1026 | clear_bit(REISERFS_POSIXACL, &(REISERFS_SB(s)->s_mount_opt)); |
| 1025 | } | 1027 | } |
| 1026 | #endif | ||
| 1027 | 1028 | ||
| 1028 | /* The super_block MS_POSIXACL must mirror the (no)acl mount option. */ | 1029 | /* The super_block MS_POSIXACL must mirror the (no)acl mount option. */ |
| 1029 | #ifdef CONFIG_REISERFS_FS_POSIX_ACL | ||
| 1030 | if (reiserfs_posixacl(s)) | 1030 | if (reiserfs_posixacl(s)) |
| 1031 | s->s_flags |= MS_POSIXACL; | 1031 | s->s_flags |= MS_POSIXACL; |
| 1032 | else | 1032 | else |
| 1033 | #endif | ||
| 1034 | s->s_flags &= ~MS_POSIXACL; | 1033 | s->s_flags &= ~MS_POSIXACL; |
| 1035 | 1034 | ||
| 1036 | return err; | 1035 | return err; |
