linux/fs/ext2/acl.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/*
   3  File: fs/ext2/acl.h
   4
   5  (C) 2001 Andreas Gruenbacher, <a.gruenbacher@computer.org>
   6*/
   7
   8#include <linux/posix_acl_xattr.h>
   9
  10#define EXT2_ACL_VERSION        0x0001
  11
  12typedef struct {
  13        __le16          e_tag;
  14        __le16          e_perm;
  15        __le32          e_id;
  16} ext2_acl_entry;
  17
  18typedef struct {
  19        __le16          e_tag;
  20        __le16          e_perm;
  21} ext2_acl_entry_short;
  22
  23typedef struct {
  24        __le32          a_version;
  25} ext2_acl_header;
  26
  27static inline size_t ext2_acl_size(int count)
  28{
  29        if (count <= 4) {
  30                return sizeof(ext2_acl_header) +
  31                       count * sizeof(ext2_acl_entry_short);
  32        } else {
  33                return sizeof(ext2_acl_header) +
  34                       4 * sizeof(ext2_acl_entry_short) +
  35                       (count - 4) * sizeof(ext2_acl_entry);
  36        }
  37}
  38
  39static inline int ext2_acl_count(size_t size)
  40{
  41        ssize_t s;
  42        size -= sizeof(ext2_acl_header);
  43        s = size - 4 * sizeof(ext2_acl_entry_short);
  44        if (s < 0) {
  45                if (size % sizeof(ext2_acl_entry_short))
  46                        return -1;
  47                return size / sizeof(ext2_acl_entry_short);
  48        } else {
  49                if (s % sizeof(ext2_acl_entry))
  50                        return -1;
  51                return s / sizeof(ext2_acl_entry) + 4;
  52        }
  53}
  54
  55#ifdef CONFIG_EXT2_FS_POSIX_ACL
  56
  57/* acl.c */
  58extern struct posix_acl *ext2_get_acl(struct inode *inode, int type);
  59extern int ext2_set_acl(struct inode *inode, struct posix_acl *acl, int type);
  60extern int ext2_init_acl (struct inode *, struct inode *);
  61
  62#else
  63#include <linux/sched.h>
  64#define ext2_get_acl    NULL
  65#define ext2_set_acl    NULL
  66
  67static inline int ext2_init_acl (struct inode *inode, struct inode *dir)
  68{
  69        return 0;
  70}
  71#endif
  72
  73