linux/fs/xfs/xfs_acl.h
<<
>>
Prefs
   1/*
   2 * Copyright (c) 2001-2005 Silicon Graphics, Inc.
   3 * All Rights Reserved.
   4 *
   5 * This program is free software; you can redistribute it and/or
   6 * modify it under the terms of the GNU General Public License as
   7 * published by the Free Software Foundation.
   8 *
   9 * This program is distributed in the hope that it would be useful,
  10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12 * GNU General Public License for more details.
  13 *
  14 * You should have received a copy of the GNU General Public License
  15 * along with this program; if not, write the Free Software Foundation,
  16 * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  17 */
  18#ifndef __XFS_ACL_H__
  19#define __XFS_ACL_H__
  20
  21struct inode;
  22struct posix_acl;
  23struct xfs_inode;
  24
  25#define XFS_ACL_NOT_PRESENT (-1)
  26
  27/* On-disk XFS access control list structure */
  28struct xfs_acl_entry {
  29        __be32  ae_tag;
  30        __be32  ae_id;
  31        __be16  ae_perm;
  32        __be16  ae_pad;         /* fill the implicit hole in the structure */
  33};
  34
  35struct xfs_acl {
  36        __be32                  acl_cnt;
  37        struct xfs_acl_entry    acl_entry[0];
  38};
  39
  40/*
  41 * The number of ACL entries allowed is defined by the on-disk format.
  42 * For v4 superblocks, that is limited to 25 entries. For v5 superblocks, it is
  43 * limited only by the maximum size of the xattr that stores the information.
  44 */
  45#define XFS_ACL_MAX_ENTRIES(mp) \
  46        (xfs_sb_version_hascrc(&mp->m_sb) \
  47                ?  (XATTR_SIZE_MAX - sizeof(struct xfs_acl)) / \
  48                                                sizeof(struct xfs_acl_entry) \
  49                : 25)
  50
  51#define XFS_ACL_MAX_SIZE(mp) \
  52        (sizeof(struct xfs_acl) + \
  53                sizeof(struct xfs_acl_entry) * XFS_ACL_MAX_ENTRIES((mp)))
  54
  55/* On-disk XFS extended attribute names */
  56#define SGI_ACL_FILE            (unsigned char *)"SGI_ACL_FILE"
  57#define SGI_ACL_DEFAULT         (unsigned char *)"SGI_ACL_DEFAULT"
  58#define SGI_ACL_FILE_SIZE       (sizeof(SGI_ACL_FILE)-1)
  59#define SGI_ACL_DEFAULT_SIZE    (sizeof(SGI_ACL_DEFAULT)-1)
  60
  61#ifdef CONFIG_XFS_POSIX_ACL
  62extern struct posix_acl *xfs_get_acl(struct inode *inode, int type);
  63extern int xfs_inherit_acl(struct inode *inode, struct posix_acl *default_acl);
  64extern int xfs_acl_chmod(struct inode *inode);
  65extern int posix_acl_access_exists(struct inode *inode);
  66extern int posix_acl_default_exists(struct inode *inode);
  67
  68extern const struct xattr_handler xfs_xattr_acl_access_handler;
  69extern const struct xattr_handler xfs_xattr_acl_default_handler;
  70#else
  71static inline struct posix_acl *xfs_get_acl(struct inode *inode, int type)
  72{
  73        return NULL;
  74}
  75# define xfs_inherit_acl(inode, default_acl)            0
  76# define xfs_acl_chmod(inode)                           0
  77# define posix_acl_access_exists(inode)                 0
  78# define posix_acl_default_exists(inode)                0
  79#endif /* CONFIG_XFS_POSIX_ACL */
  80#endif  /* __XFS_ACL_H__ */
  81
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.