Lines Matching +full:attribute +full:- +full:set

1 .. SPDX-License-Identifier: GPL-2.0
4 -------------------
11 all attribute names begin with “user”; this restriction seems to have
17 sb.inode_size = 256, then there are 256 - (128 + 28) = 100 bytes
18 available for in-inode extended attribute storage. The second place
21 block to contain a pointer to a second extended attribute block (or even
23 attribute's value to be stored in a separate data block, though as of
32 .. list-table::
34 :header-rows: 1
36 * - Offset
37 - Type
38 - Name
39 - Description
40 * - 0x0
41 - __le32
42 - h_magic
43 - Magic number for identification, 0xEA020000. This value is set by the
46 The beginning of an extended attribute block is in
49 .. list-table::
51 :header-rows: 1
53 * - Offset
54 - Type
55 - Name
56 - Description
57 * - 0x0
58 - __le32
59 - h_magic
60 - Magic number for identification, 0xEA020000.
61 * - 0x4
62 - __le32
63 - h_refcount
64 - Reference count.
65 * - 0x8
66 - __le32
67 - h_blocks
68 - Number of disk blocks used.
69 * - 0xC
70 - __le32
71 - h_hash
72 - Hash value of all attributes.
73 * - 0x10
74 - __le32
75 - h_checksum
76 - Checksum of the extended attribute block.
77 * - 0x14
78 - __u32
79 - h_reserved[3]
80 - Zero.
82 The checksum is calculated against the FS UUID, the 64-bit block number
83 of the extended attribute block, and the entire block (header +
94 .. list-table::
96 :header-rows: 1
98 * - Offset
99 - Type
100 - Name
101 - Description
102 * - 0x0
103 - __u8
104 - e_name_len
105 - Length of name.
106 * - 0x1
107 - __u8
108 - e_name_index
109 - Attribute name index. There is a discussion of this below.
110 * - 0x2
111 - __le16
112 - e_value_offs
113 - Location of this attribute's value on the disk block where it is stored.
114 Multiple attributes can share the same value. For an inode attribute
117 * - 0x4
118 - __le32
119 - e_value_inum
120 - The inode where the value is stored. Zero indicates the value is in the
123 * - 0x8
124 - __le32
125 - e_value_size
126 - Length of attribute value.
127 * - 0xC
128 - __le32
129 - e_hash
130 - Hash value of attribute name and attribute value. The kernel doesn't
131 update the hash for in-inode attributes, so for that case this value
132 must be zero, because e2fsck validates any non-zero hash regardless of
134 * - 0x10
135 - char
136 - e_name[e_name_len]
137 - Attribute name. Does not include trailing NULL.
139 Attribute values can follow the end of the entry table. There appears to
140 be a requirement that they be aligned to 4-byte boundaries. The values
144 filesystem returns -ENOSPC.
146 The first four fields of the ``ext4_xattr_entry`` are set to zero to
149 Attribute Name Indices
153 The keys are assumed to be NULL-terminated strings. To reduce the amount
154 of on-disk space that the keys consume, the beginning of the key string
155 is matched against the attribute name index. If a match is found, the
156 attribute name index field is set, and matching string is removed from
159 .. list-table::
161 :header-rows: 1
163 * - Name Index
164 - Key Prefix
165 * - 0
166 - (no prefix)
167 * - 1
168 - “user.”
169 * - 2
170 - “system.posix_acl_access”
171 * - 3
172 - “system.posix_acl_default”
173 * - 4
174 - “trusted.”
175 * - 6
176 - “security.”
177 * - 7
178 - “system.” (inline_data only?)
179 * - 8
180 - “system.richacl” (SuSE kernels only?)
182 For example, if the attribute key is “user.fubar”, the attribute name
183 index is set to 1 and the “fubar” name is recorded on disk.