diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2009-06-08 21:01:13 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2009-06-24 08:17:06 -0400 |
commit | 7a77b15d9294749809de918e24bebc39e0fbc9ab (patch) | |
tree | d5e0d6d46dbcfece1c99854fbfc642e671d12b53 /fs | |
parent | e68888bcb60ccba4dc21df9f2d8cd7325b64dce7 (diff) |
switch reiserfs to usual conventions for caching ACLs
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/reiserfs/super.c | 12 | ||||
-rw-r--r-- | fs/reiserfs/xattr_acl.c | 21 |
2 files changed, 14 insertions, 19 deletions
diff --git a/fs/reiserfs/super.c b/fs/reiserfs/super.c index 2969773cfc22..b194451fc04b 100644 --- a/fs/reiserfs/super.c +++ b/fs/reiserfs/super.c | |||
@@ -530,8 +530,8 @@ static void init_once(void *foo) | |||
530 | INIT_LIST_HEAD(&ei->i_prealloc_list); | 530 | INIT_LIST_HEAD(&ei->i_prealloc_list); |
531 | inode_init_once(&ei->vfs_inode); | 531 | inode_init_once(&ei->vfs_inode); |
532 | #ifdef CONFIG_REISERFS_FS_POSIX_ACL | 532 | #ifdef CONFIG_REISERFS_FS_POSIX_ACL |
533 | ei->i_acl_access = NULL; | 533 | ei->i_acl_access = ACL_NOT_CACHED; |
534 | ei->i_acl_default = NULL; | 534 | ei->i_acl_default = ACL_NOT_CACHED; |
535 | #endif | 535 | #endif |
536 | } | 536 | } |
537 | 537 | ||
@@ -586,14 +586,14 @@ static void reiserfs_clear_inode(struct inode *inode) | |||
586 | struct posix_acl *acl; | 586 | struct posix_acl *acl; |
587 | 587 | ||
588 | acl = REISERFS_I(inode)->i_acl_access; | 588 | acl = REISERFS_I(inode)->i_acl_access; |
589 | if (acl && !IS_ERR(acl)) | 589 | if (acl && acl != ACL_NOT_CACHED) |
590 | posix_acl_release(acl); | 590 | posix_acl_release(acl); |
591 | REISERFS_I(inode)->i_acl_access = NULL; | 591 | REISERFS_I(inode)->i_acl_access = ACL_NOT_CACHED; |
592 | 592 | ||
593 | acl = REISERFS_I(inode)->i_acl_default; | 593 | acl = REISERFS_I(inode)->i_acl_default; |
594 | if (acl && !IS_ERR(acl)) | 594 | if (acl && acl != ACL_NOT_CACHED) |
595 | posix_acl_release(acl); | 595 | posix_acl_release(acl); |
596 | REISERFS_I(inode)->i_acl_default = NULL; | 596 | REISERFS_I(inode)->i_acl_default = ACL_NOT_CACHED; |
597 | } | 597 | } |
598 | #else | 598 | #else |
599 | #define reiserfs_clear_inode NULL | 599 | #define reiserfs_clear_inode NULL |
diff --git a/fs/reiserfs/xattr_acl.c b/fs/reiserfs/xattr_acl.c index a1a7e3530e17..7b3aeb9327d3 100644 --- a/fs/reiserfs/xattr_acl.c +++ b/fs/reiserfs/xattr_acl.c | |||
@@ -192,19 +192,19 @@ static inline void iset_acl(struct inode *inode, struct posix_acl **i_acl, | |||
192 | struct posix_acl *acl) | 192 | struct posix_acl *acl) |
193 | { | 193 | { |
194 | spin_lock(&inode->i_lock); | 194 | spin_lock(&inode->i_lock); |
195 | if (*i_acl != ERR_PTR(-ENODATA)) | 195 | if (*i_acl != ACL_NOT_CACHED) |
196 | posix_acl_release(*i_acl); | 196 | posix_acl_release(*i_acl); |
197 | *i_acl = acl ? posix_acl_dup(acl) : ERR_PTR(-ENODATA); | 197 | *i_acl = posix_acl_dup(acl); |
198 | spin_unlock(&inode->i_lock); | 198 | spin_unlock(&inode->i_lock); |
199 | } | 199 | } |
200 | 200 | ||
201 | static inline struct posix_acl *iget_acl(struct inode *inode, | 201 | static inline struct posix_acl *iget_acl(struct inode *inode, |
202 | struct posix_acl **i_acl) | 202 | struct posix_acl **i_acl) |
203 | { | 203 | { |
204 | struct posix_acl *acl = ERR_PTR(-ENODATA); | 204 | struct posix_acl *acl = ACL_NOT_CACHED; |
205 | 205 | ||
206 | spin_lock(&inode->i_lock); | 206 | spin_lock(&inode->i_lock); |
207 | if (*i_acl != ERR_PTR(-ENODATA)) | 207 | if (*i_acl != ACL_NOT_CACHED) |
208 | acl = posix_acl_dup(*i_acl); | 208 | acl = posix_acl_dup(*i_acl); |
209 | spin_unlock(&inode->i_lock); | 209 | spin_unlock(&inode->i_lock); |
210 | 210 | ||
@@ -239,15 +239,13 @@ struct posix_acl *reiserfs_get_acl(struct inode *inode, int type) | |||
239 | } | 239 | } |
240 | 240 | ||
241 | acl = iget_acl(inode, p_acl); | 241 | acl = iget_acl(inode, p_acl); |
242 | if (acl && !IS_ERR(acl)) | 242 | if (acl != ACL_NOT_CACHED) |
243 | return acl; | 243 | return acl; |
244 | else if (PTR_ERR(acl) == -ENODATA) | ||
245 | return NULL; | ||
246 | 244 | ||
247 | size = reiserfs_xattr_get(inode, name, NULL, 0); | 245 | size = reiserfs_xattr_get(inode, name, NULL, 0); |
248 | if (size < 0) { | 246 | if (size < 0) { |
249 | if (size == -ENODATA || size == -ENOSYS) { | 247 | if (size == -ENODATA || size == -ENOSYS) { |
250 | *p_acl = ERR_PTR(-ENODATA); | 248 | *p_acl = NULL; |
251 | return NULL; | 249 | return NULL; |
252 | } | 250 | } |
253 | return ERR_PTR(size); | 251 | return ERR_PTR(size); |
@@ -262,7 +260,7 @@ struct posix_acl *reiserfs_get_acl(struct inode *inode, int type) | |||
262 | /* This shouldn't actually happen as it should have | 260 | /* This shouldn't actually happen as it should have |
263 | been caught above.. but just in case */ | 261 | been caught above.. but just in case */ |
264 | acl = NULL; | 262 | acl = NULL; |
265 | *p_acl = ERR_PTR(-ENODATA); | 263 | *p_acl = acl; |
266 | } else if (retval < 0) { | 264 | } else if (retval < 0) { |
267 | acl = ERR_PTR(retval); | 265 | acl = ERR_PTR(retval); |
268 | } else { | 266 | } else { |
@@ -379,11 +377,8 @@ reiserfs_inherit_default_acl(struct reiserfs_transaction_handle *th, | |||
379 | } | 377 | } |
380 | 378 | ||
381 | acl = reiserfs_get_acl(dir, ACL_TYPE_DEFAULT); | 379 | acl = reiserfs_get_acl(dir, ACL_TYPE_DEFAULT); |
382 | if (IS_ERR(acl)) { | 380 | if (IS_ERR(acl)) |
383 | if (PTR_ERR(acl) == -ENODATA) | ||
384 | goto apply_umask; | ||
385 | return PTR_ERR(acl); | 381 | return PTR_ERR(acl); |
386 | } | ||
387 | 382 | ||
388 | if (acl) { | 383 | if (acl) { |
389 | struct posix_acl *acl_copy; | 384 | struct posix_acl *acl_copy; |