root/fs/reiserfs/acl.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. reiserfs_acl_size
  2. reiserfs_acl_count
  3. reiserfs_acl_chmod
  4. reiserfs_inherit_default_acl

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 #include <linux/init.h>
   3 #include <linux/posix_acl.h>
   4 
   5 #define REISERFS_ACL_VERSION    0x0001
   6 
   7 typedef struct {
   8         __le16 e_tag;
   9         __le16 e_perm;
  10         __le32 e_id;
  11 } reiserfs_acl_entry;
  12 
  13 typedef struct {
  14         __le16 e_tag;
  15         __le16 e_perm;
  16 } reiserfs_acl_entry_short;
  17 
  18 typedef struct {
  19         __le32 a_version;
  20 } reiserfs_acl_header;
  21 
  22 static inline size_t reiserfs_acl_size(int count)
  23 {
  24         if (count <= 4) {
  25                 return sizeof(reiserfs_acl_header) +
  26                     count * sizeof(reiserfs_acl_entry_short);
  27         } else {
  28                 return sizeof(reiserfs_acl_header) +
  29                     4 * sizeof(reiserfs_acl_entry_short) +
  30                     (count - 4) * sizeof(reiserfs_acl_entry);
  31         }
  32 }
  33 
  34 static inline int reiserfs_acl_count(size_t size)
  35 {
  36         ssize_t s;
  37         size -= sizeof(reiserfs_acl_header);
  38         s = size - 4 * sizeof(reiserfs_acl_entry_short);
  39         if (s < 0) {
  40                 if (size % sizeof(reiserfs_acl_entry_short))
  41                         return -1;
  42                 return size / sizeof(reiserfs_acl_entry_short);
  43         } else {
  44                 if (s % sizeof(reiserfs_acl_entry))
  45                         return -1;
  46                 return s / sizeof(reiserfs_acl_entry) + 4;
  47         }
  48 }
  49 
  50 #ifdef CONFIG_REISERFS_FS_POSIX_ACL
  51 struct posix_acl *reiserfs_get_acl(struct inode *inode, int type);
  52 int reiserfs_set_acl(struct inode *inode, struct posix_acl *acl, int type);
  53 int reiserfs_acl_chmod(struct inode *inode);
  54 int reiserfs_inherit_default_acl(struct reiserfs_transaction_handle *th,
  55                                  struct inode *dir, struct dentry *dentry,
  56                                  struct inode *inode);
  57 int reiserfs_cache_default_acl(struct inode *dir);
  58 
  59 #else
  60 
  61 #define reiserfs_cache_default_acl(inode) 0
  62 #define reiserfs_get_acl NULL
  63 #define reiserfs_set_acl NULL
  64 
  65 static inline int reiserfs_acl_chmod(struct inode *inode)
  66 {
  67         return 0;
  68 }
  69 
  70 static inline int
  71 reiserfs_inherit_default_acl(struct reiserfs_transaction_handle *th,
  72                              const struct inode *dir, struct dentry *dentry,
  73                              struct inode *inode)
  74 {
  75         return 0;
  76 }
  77 #endif

/* [<][>][^][v][top][bottom][index][help] */