home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / linux / reiserfs_acl.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  2.4 KB  |  108 lines

  1. #include <linux/init.h>
  2. #include <linux/posix_acl.h>
  3.  
  4. #define REISERFS_ACL_VERSION    0x0001
  5.  
  6. typedef struct {
  7.     __le16 e_tag;
  8.     __le16 e_perm;
  9.     __le32 e_id;
  10. } reiserfs_acl_entry;
  11.  
  12. typedef struct {
  13.     __le16 e_tag;
  14.     __le16 e_perm;
  15. } reiserfs_acl_entry_short;
  16.  
  17. typedef struct {
  18.     __le32 a_version;
  19. } reiserfs_acl_header;
  20.  
  21. static inline size_t reiserfs_acl_size(int count)
  22. {
  23.     if (count <= 4) {
  24.         return sizeof(reiserfs_acl_header) +
  25.             count * sizeof(reiserfs_acl_entry_short);
  26.     } else {
  27.         return sizeof(reiserfs_acl_header) +
  28.             4 * sizeof(reiserfs_acl_entry_short) +
  29.             (count - 4) * sizeof(reiserfs_acl_entry);
  30.     }
  31. }
  32.  
  33. static inline int reiserfs_acl_count(size_t size)
  34. {
  35.     ssize_t s;
  36.     size -= sizeof(reiserfs_acl_header);
  37.     s = size - 4 * sizeof(reiserfs_acl_entry_short);
  38.     if (s < 0) {
  39.         if (size % sizeof(reiserfs_acl_entry_short))
  40.             return -1;
  41.         return size / sizeof(reiserfs_acl_entry_short);
  42.     } else {
  43.         if (s % sizeof(reiserfs_acl_entry))
  44.             return -1;
  45.         return s / sizeof(reiserfs_acl_entry) + 4;
  46.     }
  47. }
  48.  
  49. #ifdef CONFIG_REISERFS_FS_POSIX_ACL
  50. struct posix_acl *reiserfs_get_acl(struct inode *inode, int type);
  51. int reiserfs_acl_chmod(struct inode *inode);
  52. int reiserfs_inherit_default_acl(struct inode *dir, struct dentry *dentry,
  53.                  struct inode *inode);
  54. int reiserfs_cache_default_acl(struct inode *dir);
  55. extern int reiserfs_xattr_posix_acl_init(void) __init;
  56. extern int reiserfs_xattr_posix_acl_exit(void);
  57. extern struct reiserfs_xattr_handler posix_acl_default_handler;
  58. extern struct reiserfs_xattr_handler posix_acl_access_handler;
  59.  
  60. static inline void reiserfs_init_acl_access(struct inode *inode)
  61. {
  62.     REISERFS_I(inode)->i_acl_access = NULL;
  63. }
  64.  
  65. static inline void reiserfs_init_acl_default(struct inode *inode)
  66. {
  67.     REISERFS_I(inode)->i_acl_default = NULL;
  68. }
  69. #else
  70.  
  71. #define reiserfs_cache_default_acl(inode) 0
  72.  
  73. static inline struct posix_acl *reiserfs_get_acl(struct inode *inode, int type)
  74. {
  75.     return NULL;
  76. }
  77.  
  78. static inline int reiserfs_xattr_posix_acl_init(void)
  79. {
  80.     return 0;
  81. }
  82.  
  83. static inline int reiserfs_xattr_posix_acl_exit(void)
  84. {
  85.     return 0;
  86. }
  87.  
  88. static inline int reiserfs_acl_chmod(struct inode *inode)
  89. {
  90.     return 0;
  91. }
  92.  
  93. static inline int
  94. reiserfs_inherit_default_acl(const struct inode *dir, struct dentry *dentry,
  95.                  struct inode *inode)
  96. {
  97.     return 0;
  98. }
  99.  
  100. static inline void reiserfs_init_acl_access(struct inode *inode)
  101. {
  102. }
  103.  
  104. static inline void reiserfs_init_acl_default(struct inode *inode)
  105. {
  106. }
  107. #endif
  108.