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);
  52int reiserfs_set_acl(struct inode *inode, struct posix_acl *acl, int type);
  53int reiserfs_acl_chmod(struct inode *inode);
  54int reiserfs_inherit_default_acl(struct reiserfs_transaction_handle *th,
  55                                 struct inode *dir, struct dentry *dentry,
  56                                 struct inode *inode);
  57int 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
  65static inline int reiserfs_acl_chmod(struct inode *inode)
  66{
  67        return 0;
  68}
  69
  70static inline int
  71reiserfs_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
  78