diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2009-06-08 19:54:52 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2009-06-24 08:17:04 -0400 |
commit | 05fc0790b6c9c611129f2f712d00b6a8a364e8d2 (patch) | |
tree | aeecb1d6cab36ed133d1432127b6f8095f267b0a | |
parent | d4bfe2f76d785cc77611a4bda8cedaff358d8c7d (diff) |
switch jfs to inode->i_acl
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r-- | fs/jfs/acl.c | 22 | ||||
-rw-r--r-- | fs/jfs/jfs_incore.h | 6 | ||||
-rw-r--r-- | fs/jfs/super.c | 16 | ||||
-rw-r--r-- | fs/jfs/xattr.c | 12 |
4 files changed, 15 insertions, 41 deletions
diff --git a/fs/jfs/acl.c b/fs/jfs/acl.c index 06ca1b8d2054..5fcfc9857c11 100644 --- a/fs/jfs/acl.c +++ b/fs/jfs/acl.c | |||
@@ -31,7 +31,6 @@ static struct posix_acl *jfs_get_acl(struct inode *inode, int type) | |||
31 | { | 31 | { |
32 | struct posix_acl *acl; | 32 | struct posix_acl *acl; |
33 | char *ea_name; | 33 | char *ea_name; |
34 | struct jfs_inode_info *ji = JFS_IP(inode); | ||
35 | struct posix_acl **p_acl; | 34 | struct posix_acl **p_acl; |
36 | int size; | 35 | int size; |
37 | char *value = NULL; | 36 | char *value = NULL; |
@@ -39,17 +38,17 @@ static struct posix_acl *jfs_get_acl(struct inode *inode, int type) | |||
39 | switch(type) { | 38 | switch(type) { |
40 | case ACL_TYPE_ACCESS: | 39 | case ACL_TYPE_ACCESS: |
41 | ea_name = POSIX_ACL_XATTR_ACCESS; | 40 | ea_name = POSIX_ACL_XATTR_ACCESS; |
42 | p_acl = &ji->i_acl; | 41 | p_acl = &inode->i_acl; |
43 | break; | 42 | break; |
44 | case ACL_TYPE_DEFAULT: | 43 | case ACL_TYPE_DEFAULT: |
45 | ea_name = POSIX_ACL_XATTR_DEFAULT; | 44 | ea_name = POSIX_ACL_XATTR_DEFAULT; |
46 | p_acl = &ji->i_default_acl; | 45 | p_acl = &inode->i_default_acl; |
47 | break; | 46 | break; |
48 | default: | 47 | default: |
49 | return ERR_PTR(-EINVAL); | 48 | return ERR_PTR(-EINVAL); |
50 | } | 49 | } |
51 | 50 | ||
52 | if (*p_acl != JFS_ACL_NOT_CACHED) | 51 | if (*p_acl != ACL_NOT_CACHED) |
53 | return posix_acl_dup(*p_acl); | 52 | return posix_acl_dup(*p_acl); |
54 | 53 | ||
55 | size = __jfs_getxattr(inode, ea_name, NULL, 0); | 54 | size = __jfs_getxattr(inode, ea_name, NULL, 0); |
@@ -80,7 +79,6 @@ static int jfs_set_acl(tid_t tid, struct inode *inode, int type, | |||
80 | struct posix_acl *acl) | 79 | struct posix_acl *acl) |
81 | { | 80 | { |
82 | char *ea_name; | 81 | char *ea_name; |
83 | struct jfs_inode_info *ji = JFS_IP(inode); | ||
84 | struct posix_acl **p_acl; | 82 | struct posix_acl **p_acl; |
85 | int rc; | 83 | int rc; |
86 | int size = 0; | 84 | int size = 0; |
@@ -92,11 +90,11 @@ static int jfs_set_acl(tid_t tid, struct inode *inode, int type, | |||
92 | switch(type) { | 90 | switch(type) { |
93 | case ACL_TYPE_ACCESS: | 91 | case ACL_TYPE_ACCESS: |
94 | ea_name = POSIX_ACL_XATTR_ACCESS; | 92 | ea_name = POSIX_ACL_XATTR_ACCESS; |
95 | p_acl = &ji->i_acl; | 93 | p_acl = &inode->i_acl; |
96 | break; | 94 | break; |
97 | case ACL_TYPE_DEFAULT: | 95 | case ACL_TYPE_DEFAULT: |
98 | ea_name = POSIX_ACL_XATTR_DEFAULT; | 96 | ea_name = POSIX_ACL_XATTR_DEFAULT; |
99 | p_acl = &ji->i_default_acl; | 97 | p_acl = &inode->i_default_acl; |
100 | if (!S_ISDIR(inode->i_mode)) | 98 | if (!S_ISDIR(inode->i_mode)) |
101 | return acl ? -EACCES : 0; | 99 | return acl ? -EACCES : 0; |
102 | break; | 100 | break; |
@@ -117,7 +115,7 @@ out: | |||
117 | kfree(value); | 115 | kfree(value); |
118 | 116 | ||
119 | if (!rc) { | 117 | if (!rc) { |
120 | if (*p_acl && (*p_acl != JFS_ACL_NOT_CACHED)) | 118 | if (*p_acl && (*p_acl != ACL_NOT_CACHED)) |
121 | posix_acl_release(*p_acl); | 119 | posix_acl_release(*p_acl); |
122 | *p_acl = posix_acl_dup(acl); | 120 | *p_acl = posix_acl_dup(acl); |
123 | } | 121 | } |
@@ -126,17 +124,15 @@ out: | |||
126 | 124 | ||
127 | static int jfs_check_acl(struct inode *inode, int mask) | 125 | static int jfs_check_acl(struct inode *inode, int mask) |
128 | { | 126 | { |
129 | struct jfs_inode_info *ji = JFS_IP(inode); | 127 | if (inode->i_acl == ACL_NOT_CACHED) { |
130 | |||
131 | if (ji->i_acl == JFS_ACL_NOT_CACHED) { | ||
132 | struct posix_acl *acl = jfs_get_acl(inode, ACL_TYPE_ACCESS); | 128 | struct posix_acl *acl = jfs_get_acl(inode, ACL_TYPE_ACCESS); |
133 | if (IS_ERR(acl)) | 129 | if (IS_ERR(acl)) |
134 | return PTR_ERR(acl); | 130 | return PTR_ERR(acl); |
135 | posix_acl_release(acl); | 131 | posix_acl_release(acl); |
136 | } | 132 | } |
137 | 133 | ||
138 | if (ji->i_acl) | 134 | if (inode->i_acl) |
139 | return posix_acl_permission(inode, ji->i_acl, mask); | 135 | return posix_acl_permission(inode, inode->i_acl, mask); |
140 | return -EAGAIN; | 136 | return -EAGAIN; |
141 | } | 137 | } |
142 | 138 | ||
diff --git a/fs/jfs/jfs_incore.h b/fs/jfs/jfs_incore.h index 439901d205fe..1439f119ec83 100644 --- a/fs/jfs/jfs_incore.h +++ b/fs/jfs/jfs_incore.h | |||
@@ -74,10 +74,6 @@ struct jfs_inode_info { | |||
74 | /* xattr_sem allows us to access the xattrs without taking i_mutex */ | 74 | /* xattr_sem allows us to access the xattrs without taking i_mutex */ |
75 | struct rw_semaphore xattr_sem; | 75 | struct rw_semaphore xattr_sem; |
76 | lid_t xtlid; /* lid of xtree lock on directory */ | 76 | lid_t xtlid; /* lid of xtree lock on directory */ |
77 | #ifdef CONFIG_JFS_POSIX_ACL | ||
78 | struct posix_acl *i_acl; | ||
79 | struct posix_acl *i_default_acl; | ||
80 | #endif | ||
81 | union { | 77 | union { |
82 | struct { | 78 | struct { |
83 | xtpage_t _xtroot; /* 288: xtree root */ | 79 | xtpage_t _xtroot; /* 288: xtree root */ |
@@ -107,8 +103,6 @@ struct jfs_inode_info { | |||
107 | #define i_inline u.link._inline | 103 | #define i_inline u.link._inline |
108 | #define i_inline_ea u.link._inline_ea | 104 | #define i_inline_ea u.link._inline_ea |
109 | 105 | ||
110 | #define JFS_ACL_NOT_CACHED ((void *)-1) | ||
111 | |||
112 | #define IREAD_LOCK(ip, subclass) \ | 106 | #define IREAD_LOCK(ip, subclass) \ |
113 | down_read_nested(&JFS_IP(ip)->rdwrlock, subclass) | 107 | down_read_nested(&JFS_IP(ip)->rdwrlock, subclass) |
114 | #define IREAD_UNLOCK(ip) up_read(&JFS_IP(ip)->rdwrlock) | 108 | #define IREAD_UNLOCK(ip) up_read(&JFS_IP(ip)->rdwrlock) |
diff --git a/fs/jfs/super.c b/fs/jfs/super.c index 09b1b6ee2186..37e6dcda8fc8 100644 --- a/fs/jfs/super.c +++ b/fs/jfs/super.c | |||
@@ -128,18 +128,6 @@ static void jfs_destroy_inode(struct inode *inode) | |||
128 | ji->active_ag = -1; | 128 | ji->active_ag = -1; |
129 | } | 129 | } |
130 | spin_unlock_irq(&ji->ag_lock); | 130 | spin_unlock_irq(&ji->ag_lock); |
131 | |||
132 | #ifdef CONFIG_JFS_POSIX_ACL | ||
133 | if (ji->i_acl != JFS_ACL_NOT_CACHED) { | ||
134 | posix_acl_release(ji->i_acl); | ||
135 | ji->i_acl = JFS_ACL_NOT_CACHED; | ||
136 | } | ||
137 | if (ji->i_default_acl != JFS_ACL_NOT_CACHED) { | ||
138 | posix_acl_release(ji->i_default_acl); | ||
139 | ji->i_default_acl = JFS_ACL_NOT_CACHED; | ||
140 | } | ||
141 | #endif | ||
142 | |||
143 | kmem_cache_free(jfs_inode_cachep, ji); | 131 | kmem_cache_free(jfs_inode_cachep, ji); |
144 | } | 132 | } |
145 | 133 | ||
@@ -798,10 +786,6 @@ static void init_once(void *foo) | |||
798 | init_rwsem(&jfs_ip->xattr_sem); | 786 | init_rwsem(&jfs_ip->xattr_sem); |
799 | spin_lock_init(&jfs_ip->ag_lock); | 787 | spin_lock_init(&jfs_ip->ag_lock); |
800 | jfs_ip->active_ag = -1; | 788 | jfs_ip->active_ag = -1; |
801 | #ifdef CONFIG_JFS_POSIX_ACL | ||
802 | jfs_ip->i_acl = JFS_ACL_NOT_CACHED; | ||
803 | jfs_ip->i_default_acl = JFS_ACL_NOT_CACHED; | ||
804 | #endif | ||
805 | inode_init_once(&jfs_ip->vfs_inode); | 789 | inode_init_once(&jfs_ip->vfs_inode); |
806 | } | 790 | } |
807 | 791 | ||
diff --git a/fs/jfs/xattr.c b/fs/jfs/xattr.c index 61dfa8173ebc..f6e90e343593 100644 --- a/fs/jfs/xattr.c +++ b/fs/jfs/xattr.c | |||
@@ -727,10 +727,10 @@ static int can_set_system_xattr(struct inode *inode, const char *name, | |||
727 | /* | 727 | /* |
728 | * We're changing the ACL. Get rid of the cached one | 728 | * We're changing the ACL. Get rid of the cached one |
729 | */ | 729 | */ |
730 | acl =JFS_IP(inode)->i_acl; | 730 | acl =inode->i_acl; |
731 | if (acl != JFS_ACL_NOT_CACHED) | 731 | if (acl != ACL_NOT_CACHED) |
732 | posix_acl_release(acl); | 732 | posix_acl_release(acl); |
733 | JFS_IP(inode)->i_acl = JFS_ACL_NOT_CACHED; | 733 | inode->i_acl = ACL_NOT_CACHED; |
734 | 734 | ||
735 | return 0; | 735 | return 0; |
736 | } else if (strcmp(name, POSIX_ACL_XATTR_DEFAULT) == 0) { | 736 | } else if (strcmp(name, POSIX_ACL_XATTR_DEFAULT) == 0) { |
@@ -746,10 +746,10 @@ static int can_set_system_xattr(struct inode *inode, const char *name, | |||
746 | /* | 746 | /* |
747 | * We're changing the default ACL. Get rid of the cached one | 747 | * We're changing the default ACL. Get rid of the cached one |
748 | */ | 748 | */ |
749 | acl =JFS_IP(inode)->i_default_acl; | 749 | acl = inode->i_default_acl; |
750 | if (acl && (acl != JFS_ACL_NOT_CACHED)) | 750 | if (acl && (acl != ACL_NOT_CACHED)) |
751 | posix_acl_release(acl); | 751 | posix_acl_release(acl); |
752 | JFS_IP(inode)->i_default_acl = JFS_ACL_NOT_CACHED; | 752 | inode->i_default_acl = ACL_NOT_CACHED; |
753 | 753 | ||
754 | return 0; | 754 | return 0; |
755 | } | 755 | } |