linux/fs/reiserfs/acl.h
<<
>>
Prefs
   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
   7typedef struct {
   8        __le16 e_tag;
   9        __le16 e_perm;
  10        __le32 e_id;
  11} reiserfs_acl_entry;
  12
  13typedef struct {
  14        __le16 e_tag;
  15        __le16 e_perm;
  16} reiserfs_acl_entry_short;
  17
  18typedef struct {
  19        __le32 a_version;
  20} reiserfs_acl_header;
  21
  22static 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
  34static 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
  51struct posix_acl *reiserfs_get_acl(struct inode *inode, int type, bool rcu);
  52int reiserfs_set_acl(struct user_namespace *mnt_userns, struct inode *inode,
  53                     struct posix_acl *acl, int type);
  54int reiserfs_acl_chmod(struct inode *inode);
  55int reiserfs_inherit_default_acl(struct reiserfs_transaction_handle *th,
  56                                 struct inode *dir, struct dentry *dentry,
  57                                 struct inode *inode);
  58int reiserfs_cache_default_acl(struct inode *dir);
  59
  60#else
  61
  62#define reiserfs_cache_default_acl(inode) 0
  63#define reiserfs_get_acl NULL
  64#define reiserfs_set_acl NULL
  65
  66static inline int reiserfs_acl_chmod(struct inode *inode)
  67{
  68        return 0;
  69}
  70
  71static inline int
  72reiserfs_inherit_default_acl(struct reiserfs_transaction_handle *th,
  73                             const struct inode *dir, struct dentry *dentry,
  74                             struct inode *inode)
  75{
  76        return 0;
  77}
  78#endif
  79