Blame view
fs/ext4/xattr.h
4.47 KB
ac27a0ec1 [PATCH] ext4: ini... |
1 |
/* |
617ba13b3 [PATCH] ext4: ren... |
2 |
File: fs/ext4/xattr.h |
ac27a0ec1 [PATCH] ext4: ini... |
3 |
|
617ba13b3 [PATCH] ext4: ren... |
4 |
On-disk format of extended attributes for the ext4 filesystem. |
ac27a0ec1 [PATCH] ext4: ini... |
5 6 7 8 9 10 11 |
(C) 2001 Andreas Gruenbacher, <a.gruenbacher@computer.org> */ #include <linux/xattr.h> /* Magic value in attribute blocks */ |
617ba13b3 [PATCH] ext4: ren... |
12 |
#define EXT4_XATTR_MAGIC 0xEA020000 |
ac27a0ec1 [PATCH] ext4: ini... |
13 14 |
/* Maximum number of references to one attribute block */ |
617ba13b3 [PATCH] ext4: ren... |
15 |
#define EXT4_XATTR_REFCOUNT_MAX 1024 |
ac27a0ec1 [PATCH] ext4: ini... |
16 17 |
/* Name indexes */ |
617ba13b3 [PATCH] ext4: ren... |
18 19 20 21 22 23 |
#define EXT4_XATTR_INDEX_USER 1 #define EXT4_XATTR_INDEX_POSIX_ACL_ACCESS 2 #define EXT4_XATTR_INDEX_POSIX_ACL_DEFAULT 3 #define EXT4_XATTR_INDEX_TRUSTED 4 #define EXT4_XATTR_INDEX_LUSTRE 5 #define EXT4_XATTR_INDEX_SECURITY 6 |
67cf5b09a ext4: add the bas... |
24 |
#define EXT4_XATTR_INDEX_SYSTEM 7 |
fd03d8daf ext4: reserve xat... |
25 |
#define EXT4_XATTR_INDEX_RICHACL 8 |
887e2c452 ext4 crypto: add ... |
26 |
#define EXT4_XATTR_INDEX_ENCRYPTION 9 |
3980bd3b4 ext4: reserve xat... |
27 |
#define EXT4_XATTR_INDEX_HURD 10 /* Reserved for Hurd */ |
617ba13b3 [PATCH] ext4: ren... |
28 29 |
struct ext4_xattr_header { |
ac27a0ec1 [PATCH] ext4: ini... |
30 31 32 33 |
__le32 h_magic; /* magic number for identification */ __le32 h_refcount; /* reference count */ __le32 h_blocks; /* number of disk blocks used */ __le32 h_hash; /* hash value of all attributes */ |
e61539189 ext4: change on-d... |
34 35 36 |
__le32 h_checksum; /* crc32c(uuid+id+xattrblock) */ /* id = inum if refcount=1, blknum otherwise */ __u32 h_reserved[3]; /* zero right now */ |
ac27a0ec1 [PATCH] ext4: ini... |
37 |
}; |
617ba13b3 [PATCH] ext4: ren... |
38 |
struct ext4_xattr_ibody_header { |
ac27a0ec1 [PATCH] ext4: ini... |
39 40 |
__le32 h_magic; /* magic number for identification */ }; |
617ba13b3 [PATCH] ext4: ren... |
41 |
struct ext4_xattr_entry { |
ac27a0ec1 [PATCH] ext4: ini... |
42 43 44 45 46 47 48 49 |
__u8 e_name_len; /* length of name */ __u8 e_name_index; /* attribute name index */ __le16 e_value_offs; /* offset in disk block of value */ __le32 e_value_block; /* disk block attribute is stored on (n/i) */ __le32 e_value_size; /* size of attribute value */ __le32 e_hash; /* hash value of name and value */ char e_name[0]; /* attribute name */ }; |
617ba13b3 [PATCH] ext4: ren... |
50 51 52 53 54 55 56 |
#define EXT4_XATTR_PAD_BITS 2 #define EXT4_XATTR_PAD (1<<EXT4_XATTR_PAD_BITS) #define EXT4_XATTR_ROUND (EXT4_XATTR_PAD-1) #define EXT4_XATTR_LEN(name_len) \ (((name_len) + EXT4_XATTR_ROUND + \ sizeof(struct ext4_xattr_entry)) & ~EXT4_XATTR_ROUND) #define EXT4_XATTR_NEXT(entry) \ |
af5bc92dd ext4: Fix whitesp... |
57 58 |
((struct ext4_xattr_entry *)( \ (char *)(entry) + EXT4_XATTR_LEN((entry)->e_name_len))) |
617ba13b3 [PATCH] ext4: ren... |
59 60 |
#define EXT4_XATTR_SIZE(size) \ (((size) + EXT4_XATTR_ROUND) & ~EXT4_XATTR_ROUND) |
ac27a0ec1 [PATCH] ext4: ini... |
61 |
|
6dd4ee7ca ext4: Expand extr... |
62 63 64 65 66 67 |
#define IHDR(inode, raw_inode) \ ((struct ext4_xattr_ibody_header *) \ ((void *)raw_inode + \ EXT4_GOOD_OLD_INODE_SIZE + \ EXT4_I(inode)->i_extra_isize)) #define IFIRST(hdr) ((struct ext4_xattr_entry *)((hdr)+1)) |
879b38257 ext4: export inli... |
68 69 70 71 |
#define BHDR(bh) ((struct ext4_xattr_header *)((bh)->b_data)) #define ENTRY(ptr) ((struct ext4_xattr_entry *)(ptr)) #define BFIRST(bh) ENTRY(BHDR(bh)+1) #define IS_LAST_ENTRY(entry) (*(__u32 *)(entry) == 0) |
bd9926e80 ext4: zero out in... |
72 |
#define EXT4_ZERO_XATTR_VALUE ((void *)-1) |
879b38257 ext4: export inli... |
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
struct ext4_xattr_info { int name_index; const char *name; const void *value; size_t value_len; }; struct ext4_xattr_search { struct ext4_xattr_entry *first; void *base; void *end; struct ext4_xattr_entry *here; int not_found; }; struct ext4_xattr_ibody_find { struct ext4_xattr_search s; struct ext4_iloc iloc; }; |
11e275280 ext4: constify xa... |
93 94 |
extern const struct xattr_handler ext4_xattr_user_handler; extern const struct xattr_handler ext4_xattr_trusted_handler; |
11e275280 ext4: constify xa... |
95 |
extern const struct xattr_handler ext4_xattr_security_handler; |
ac27a0ec1 [PATCH] ext4: ini... |
96 |
|
887e2c452 ext4 crypto: add ... |
97 |
#define EXT4_XATTR_NAME_ENCRYPTION_CONTEXT "c" |
617ba13b3 [PATCH] ext4: ren... |
98 |
extern ssize_t ext4_listxattr(struct dentry *, char *, size_t); |
ac27a0ec1 [PATCH] ext4: ini... |
99 |
|
617ba13b3 [PATCH] ext4: ren... |
100 |
extern int ext4_xattr_get(struct inode *, int, const char *, void *, size_t); |
617ba13b3 [PATCH] ext4: ren... |
101 102 |
extern int ext4_xattr_set(struct inode *, int, const char *, const void *, size_t, int); extern int ext4_xattr_set_handle(handle_t *, struct inode *, int, const char *, const void *, size_t, int); |
ac27a0ec1 [PATCH] ext4: ini... |
103 |
|
617ba13b3 [PATCH] ext4: ren... |
104 |
extern void ext4_xattr_delete_inode(handle_t *, struct inode *); |
ac27a0ec1 [PATCH] ext4: ini... |
105 |
|
6dd4ee7ca ext4: Expand extr... |
106 107 |
extern int ext4_expand_extra_isize_ea(struct inode *inode, int new_extra_isize, struct ext4_inode *raw_inode, handle_t *handle); |
11e275280 ext4: constify xa... |
108 |
extern const struct xattr_handler *ext4_xattr_handlers[]; |
ac27a0ec1 [PATCH] ext4: ini... |
109 |
|
879b38257 ext4: export inli... |
110 111 112 113 114 |
extern int ext4_xattr_ibody_find(struct inode *inode, struct ext4_xattr_info *i, struct ext4_xattr_ibody_find *is); extern int ext4_xattr_ibody_get(struct inode *inode, int name_index, const char *name, void *buffer, size_t buffer_size); |
0d812f77b ext4: evict inlin... |
115 116 117 |
extern int ext4_xattr_ibody_inline_set(handle_t *handle, struct inode *inode, struct ext4_xattr_info *i, struct ext4_xattr_ibody_find *is); |
879b38257 ext4: export inli... |
118 |
|
7a2508e1b mbcache2: rename ... |
119 120 |
extern struct mb_cache *ext4_xattr_create_cache(void); extern void ext4_xattr_destroy_cache(struct mb_cache *); |
9c191f701 ext4: each filesy... |
121 |
|
03010a335 ext4: Rename ext4... |
122 |
#ifdef CONFIG_EXT4_FS_SECURITY |
617ba13b3 [PATCH] ext4: ren... |
123 |
extern int ext4_init_security(handle_t *handle, struct inode *inode, |
2a7dba391 fs/vfs/security: ... |
124 |
struct inode *dir, const struct qstr *qstr); |
ac27a0ec1 [PATCH] ext4: ini... |
125 |
#else |
617ba13b3 [PATCH] ext4: ren... |
126 |
static inline int ext4_init_security(handle_t *handle, struct inode *inode, |
2a7dba391 fs/vfs/security: ... |
127 |
struct inode *dir, const struct qstr *qstr) |
ac27a0ec1 [PATCH] ext4: ini... |
128 129 130 131 |
{ return 0; } #endif |