VisionFive2 Linux kernel

StarFive Tech Linux Kernel for VisionFive (JH7110) boards (mirror)

More than 9999 Commits   32 Branches   54 Tags
b24413180f560 (Greg Kroah-Hartman  2017-11-01 15:07:57 +0100   1) /* SPDX-License-Identifier: GPL-2.0 */
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700   2) /*
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700   3)   File: linux/ext2_xattr.h
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700   4) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700   5)   On-disk format of extended attributes for the ext2 filesystem.
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700   6) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700   7)   (C) 2001 Andreas Gruenbacher, <a.gruenbacher@computer.org>
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700   8) */
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700   9) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  10) #include <linux/init.h>
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  11) #include <linux/xattr.h>
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  12) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  13) /* Magic value in attribute blocks */
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  14) #define EXT2_XATTR_MAGIC		0xEA020000
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  15) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  16) /* Maximum number of references to one attribute block */
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  17) #define EXT2_XATTR_REFCOUNT_MAX		1024
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  18) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  19) /* Name indexes */
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  20) #define EXT2_XATTR_INDEX_USER			1
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  21) #define EXT2_XATTR_INDEX_POSIX_ACL_ACCESS	2
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  22) #define EXT2_XATTR_INDEX_POSIX_ACL_DEFAULT	3
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  23) #define EXT2_XATTR_INDEX_TRUSTED		4
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  24) #define	EXT2_XATTR_INDEX_LUSTRE			5
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  25) #define EXT2_XATTR_INDEX_SECURITY	        6
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  26) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  27) struct ext2_xattr_header {
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  28) 	__le32	h_magic;	/* magic number for identification */
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  29) 	__le32	h_refcount;	/* reference count */
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  30) 	__le32	h_blocks;	/* number of disk blocks used */
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  31) 	__le32	h_hash;		/* hash value of all attributes */
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  32) 	__u32	h_reserved[4];	/* zero right now */
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  33) };
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  34) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  35) struct ext2_xattr_entry {
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  36) 	__u8	e_name_len;	/* length of name */
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  37) 	__u8	e_name_index;	/* attribute name index */
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  38) 	__le16	e_value_offs;	/* offset in disk block of value */
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  39) 	__le32	e_value_block;	/* disk block attribute is stored on (n/i) */
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  40) 	__le32	e_value_size;	/* size of attribute value */
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  41) 	__le32	e_hash;		/* hash value of name and value */
c2d0699c629d3 (Gustavo A. R. Silva 2020-03-09 13:04:41 -0500  42) 	char	e_name[];	/* attribute name */
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  43) };
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  44) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  45) #define EXT2_XATTR_PAD_BITS		2
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  46) #define EXT2_XATTR_PAD		(1<<EXT2_XATTR_PAD_BITS)
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  47) #define EXT2_XATTR_ROUND		(EXT2_XATTR_PAD-1)
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  48) #define EXT2_XATTR_LEN(name_len) \
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  49) 	(((name_len) + EXT2_XATTR_ROUND + \
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  50) 	sizeof(struct ext2_xattr_entry)) & ~EXT2_XATTR_ROUND)
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  51) #define EXT2_XATTR_NEXT(entry) \
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  52) 	( (struct ext2_xattr_entry *)( \
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  53) 	  (char *)(entry) + EXT2_XATTR_LEN((entry)->e_name_len)) )
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  54) #define EXT2_XATTR_SIZE(size) \
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  55) 	(((size) + EXT2_XATTR_ROUND) & ~EXT2_XATTR_ROUND)
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  56) 
7a2508e1b657c (Jan Kara            2016-02-22 22:35:22 -0500  57) struct mb_cache;
be0726d33cb8f (Jan Kara            2016-02-22 11:56:38 -0500  58) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  59) # ifdef CONFIG_EXT2_FS_XATTR
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  60) 
749c72efa4bd9 (Stephen Hemminger   2010-05-13 17:53:16 -0700  61) extern const struct xattr_handler ext2_xattr_user_handler;
749c72efa4bd9 (Stephen Hemminger   2010-05-13 17:53:16 -0700  62) extern const struct xattr_handler ext2_xattr_trusted_handler;
749c72efa4bd9 (Stephen Hemminger   2010-05-13 17:53:16 -0700  63) extern const struct xattr_handler ext2_xattr_security_handler;
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  64) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  65) extern ssize_t ext2_listxattr(struct dentry *, char *, size_t);
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  66) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  67) extern int ext2_xattr_get(struct inode *, int, const char *, void *, size_t);
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  68) extern int ext2_xattr_set(struct inode *, int, const char *, const void *, size_t, int);
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  69) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  70) extern void ext2_xattr_delete_inode(struct inode *);
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  71) 
7a2508e1b657c (Jan Kara            2016-02-22 22:35:22 -0500  72) extern struct mb_cache *ext2_xattr_create_cache(void);
7a2508e1b657c (Jan Kara            2016-02-22 22:35:22 -0500  73) extern void ext2_xattr_destroy_cache(struct mb_cache *cache);
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  74) 
749c72efa4bd9 (Stephen Hemminger   2010-05-13 17:53:16 -0700  75) extern const struct xattr_handler *ext2_xattr_handlers[];
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  76) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  77) # else  /* CONFIG_EXT2_FS_XATTR */
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  78) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  79) static inline int
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  80) ext2_xattr_get(struct inode *inode, int name_index,
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  81) 	       const char *name, void *buffer, size_t size)
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  82) {
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  83) 	return -EOPNOTSUPP;
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  84) }
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  85) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  86) static inline int
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  87) ext2_xattr_set(struct inode *inode, int name_index, const char *name,
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  88) 	       const void *value, size_t size, int flags)
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  89) {
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  90) 	return -EOPNOTSUPP;
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  91) }
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  92) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  93) static inline void
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  94) ext2_xattr_delete_inode(struct inode *inode)
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  95) {
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  96) }
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  97) 
7a2508e1b657c (Jan Kara            2016-02-22 22:35:22 -0500  98) static inline void ext2_xattr_destroy_cache(struct mb_cache *cache)
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  99) {
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 100) }
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 101) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 102) #define ext2_xattr_handlers NULL
91a087153d9db (Chengguang Xu       2020-05-22 12:40:35 +0800 103) #define ext2_listxattr NULL
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 104) 
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 105) # endif  /* CONFIG_EXT2_FS_XATTR */
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700 106) 
10f47e6a1b8b2 (Stephen Smalley     2005-09-09 13:01:39 -0700 107) #ifdef CONFIG_EXT2_FS_SECURITY
2a7dba391e562 (Eric Paris          2011-02-01 11:05:39 -0500 108) extern int ext2_init_security(struct inode *inode, struct inode *dir,
2a7dba391e562 (Eric Paris          2011-02-01 11:05:39 -0500 109) 			      const struct qstr *qstr);
10f47e6a1b8b2 (Stephen Smalley     2005-09-09 13:01:39 -0700 110) #else
2a7dba391e562 (Eric Paris          2011-02-01 11:05:39 -0500 111) static inline int ext2_init_security(struct inode *inode, struct inode *dir,
2a7dba391e562 (Eric Paris          2011-02-01 11:05:39 -0500 112) 				     const struct qstr *qstr)
10f47e6a1b8b2 (Stephen Smalley     2005-09-09 13:01:39 -0700 113) {
10f47e6a1b8b2 (Stephen Smalley     2005-09-09 13:01:39 -0700 114) 	return 0;
10f47e6a1b8b2 (Stephen Smalley     2005-09-09 13:01:39 -0700 115) }
10f47e6a1b8b2 (Stephen Smalley     2005-09-09 13:01:39 -0700 116) #endif