LCOV - code coverage report
Current view: top level - lkbce/fs/ext2 - xattr.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 5 5 100.0 %
Date: 2017-01-25 Functions: 0 0 -

          Line data    Source code
       1             : /*
       2             :   File: linux/ext2_xattr.h
       3             : 
       4             :   On-disk format of extended attributes for the ext2 filesystem.
       5             : 
       6             :   (C) 2001 Andreas Gruenbacher, <a.gruenbacher@computer.org>
       7             : */
       8             : 
       9             : #include <linux/init.h>
      10             : #include <linux/xattr.h>
      11             : 
      12             : /* Magic value in attribute blocks */
      13             : #define EXT2_XATTR_MAGIC                0xEA020000
      14             : 
      15             : /* Maximum number of references to one attribute block */
      16             : #define EXT2_XATTR_REFCOUNT_MAX         1024
      17             : 
      18             : /* Name indexes */
      19             : #define EXT2_XATTR_INDEX_USER                   1
      20             : #define EXT2_XATTR_INDEX_POSIX_ACL_ACCESS       2
      21             : #define EXT2_XATTR_INDEX_POSIX_ACL_DEFAULT      3
      22             : #define EXT2_XATTR_INDEX_TRUSTED                4
      23             : #define EXT2_XATTR_INDEX_LUSTRE                 5
      24             : #define EXT2_XATTR_INDEX_SECURITY               6
      25             : 
      26             : struct ext2_xattr_header {
      27             :         __le32  h_magic;        /* magic number for identification */
      28             :         __le32  h_refcount;     /* reference count */
      29             :         __le32  h_blocks;       /* number of disk blocks used */
      30             :         __le32  h_hash;         /* hash value of all attributes */
      31             :         __u32   h_reserved[4];  /* zero right now */
      32             : };
      33           1 : 
      34             : struct ext2_xattr_entry {
      35             :         __u8    e_name_len;     /* length of name */
      36             :         __u8    e_name_index;   /* attribute name index */
      37             :         __le16  e_value_offs;   /* offset in disk block of value */
      38             :         __le32  e_value_block;  /* disk block attribute is stored on (n/i) */
      39             :         __le32  e_value_size;   /* size of attribute value */
      40             :         __le32  e_hash;         /* hash value of name and value */
      41             :         char    e_name[0];      /* attribute name */
      42             : };
      43             : 
      44             : #define EXT2_XATTR_PAD_BITS             2
      45             : #define EXT2_XATTR_PAD          (1<<EXT2_XATTR_PAD_BITS)
      46             : #define EXT2_XATTR_ROUND                (EXT2_XATTR_PAD-1)
      47             : #define EXT2_XATTR_LEN(name_len) \
      48             :         (((name_len) + EXT2_XATTR_ROUND + \
      49             :         sizeof(struct ext2_xattr_entry)) & ~EXT2_XATTR_ROUND)
      50             : #define EXT2_XATTR_NEXT(entry) \
      51             :         ( (struct ext2_xattr_entry *)( \
      52             :           (char *)(entry) + EXT2_XATTR_LEN((entry)->e_name_len)) )
      53             : #define EXT2_XATTR_SIZE(size) \
      54             :         (((size) + EXT2_XATTR_ROUND) & ~EXT2_XATTR_ROUND)
      55             : 
      56             : # ifdef CONFIG_EXT2_FS_XATTR
      57             : 
      58           1 : extern struct xattr_handler ext2_xattr_user_handler;
      59           1 : extern struct xattr_handler ext2_xattr_trusted_handler;
      60             : extern struct xattr_handler ext2_xattr_acl_access_handler;
      61             : extern struct xattr_handler ext2_xattr_acl_default_handler;
      62           1 : extern struct xattr_handler ext2_xattr_security_handler;
      63             : 
      64             : extern ssize_t ext2_listxattr(struct dentry *, char *, size_t);
      65             : 
      66             : extern int ext2_xattr_get(struct inode *, int, const char *, void *, size_t);
      67             : extern int ext2_xattr_set(struct inode *, int, const char *, const void *, size_t, int);
      68             : 
      69             : extern void ext2_xattr_delete_inode(struct inode *);
      70             : extern void ext2_xattr_put_super(struct super_block *);
      71             : 
      72             : extern int init_ext2_xattr(void);
      73             : extern void exit_ext2_xattr(void);
      74             : 
      75           1 : extern struct xattr_handler *ext2_xattr_handlers[];
      76             : 
      77             : # else  /* CONFIG_EXT2_FS_XATTR */
      78             : 
      79             : static inline int
      80             : ext2_xattr_get(struct inode *inode, int name_index,
      81             :                const char *name, void *buffer, size_t size)
      82             : {
      83             :         return -EOPNOTSUPP;
      84             : }
      85             : 
      86             : static inline int
      87             : ext2_xattr_set(struct inode *inode, int name_index, const char *name,
      88             :                const void *value, size_t size, int flags)
      89             : {
      90             :         return -EOPNOTSUPP;
      91             : }
      92             : 
      93             : static inline void
      94             : ext2_xattr_delete_inode(struct inode *inode)
      95             : {
      96             : }
      97             : 
      98             : static inline void
      99             : ext2_xattr_put_super(struct super_block *sb)
     100             : {
     101             : }
     102             : 
     103             : static inline int
     104             : init_ext2_xattr(void)
     105             : {
     106             :         return 0;
     107             : }
     108             : 
     109             : static inline void
     110             : exit_ext2_xattr(void)
     111             : {
     112             : }
     113             : 
     114             : #define ext2_xattr_handlers NULL
     115             : 
     116             : # endif  /* CONFIG_EXT2_FS_XATTR */
     117             : 
     118             : #ifdef CONFIG_EXT2_FS_SECURITY
     119             : extern int ext2_init_security(struct inode *inode, struct inode *dir);
     120             : #else
     121             : static inline int ext2_init_security(struct inode *inode, struct inode *dir)
     122             : {
     123             :         return 0;
     124             : }
     125             : #endif

Generated by: LCOV version 1.10