€•ˉŒsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ//translations/zh_CN/filesystems/ext4/attributes”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ//translations/zh_TW/filesystems/ext4/attributes”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ//translations/it_IT/filesystems/ext4/attributes”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ//translations/ja_JP/filesystems/ext4/attributes”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ//translations/ko_KR/filesystems/ext4/attributes”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ//translations/pt_BR/filesystems/ext4/attributes”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ//translations/sp_SP/filesystems/ext4/attributes”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒI/var/lib/git/docbuild/linux/Documentation/filesystems/ext4/attributes.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒExtended Attributes”h]”hŒExtended Attributes”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hXÊExtended attributes (xattrs) are typically stored in a separate data block on the disk and referenced from inodes via ``inode.i_file_acl*``. The first use of extended attributes seems to have been for storing file ACLs and other security data (selinux). With the ``user_xattr`` mount option it is possible for users to store extended attributes so long as all attribute names begin with “userâ€�; this restriction seems to have disappeared as of Linux 3.0.”h]”(hŒvExtended attributes (xattrs) are typically stored in a separate data block on the disk and referenced from inodes via ”…”�”}”(hhßh²hh³Nh´NubhŒliteral”“”)�”}”(hŒ``inode.i_file_acl*``”h]”hŒinode.i_file_acl*”…”�”}”(hhéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhhßubhŒ|. The first use of extended attributes seems to have been for storing file ACLs and other security data (selinux). With the ”…”�”}”(hhßh²hh³Nh´Nubhè)�”}”(hŒ``user_xattr``”h]”hŒ user_xattr”…”�”}”(hhûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhhßubhŒµ mount option it is possible for users to store extended attributes so long as all attribute names begin with “userâ€�; this restriction seems to have disappeared as of Linux 3.0.”…”�”}”(hhßh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhÞ)�”}”(hXØThere are two places where extended attributes can be found. The first place is between the end of each inode entry and the beginning of the next inode entry. For example, if inode.i_extra_isize = 28 and sb.inode_size = 256, then there are 256 - (128 + 28) = 100 bytes available for in-inode extended attribute storage. The second place where extended attributes can be found is in the block pointed to by ``inode.i_file_acl``. As of Linux 3.11, it is not possible for this block to contain a pointer to a second extended attribute block (or even the remaining blocks of a cluster). In theory it is possible for each attribute's value to be stored in a separate data block, though as of Linux 3.11 the code does not permit this.”h]”(hX–There are two places where extended attributes can be found. The first place is between the end of each inode entry and the beginning of the next inode entry. For example, if inode.i_extra_isize = 28 and sb.inode_size = 256, then there are 256 - (128 + 28) = 100 bytes available for in-inode extended attribute storage. The second place where extended attributes can be found is in the block pointed to by ”…”�”}”(hjh²hh³Nh´Nubhè)�”}”(hŒ``inode.i_file_acl``”h]”hŒinode.i_file_acl”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjubhX0. As of Linux 3.11, it is not possible for this block to contain a pointer to a second extended attribute block (or even the remaining blocks of a cluster). In theory it is possible for each attribute’s value to be stored in a separate data block, though as of Linux 3.11 the code does not permit this.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhÞ)�”}”(hŒ^Keys are generally assumed to be ASCIIZ strings, whereas values can be strings or binary data.”h]”hŒ^Keys are generally assumed to be ASCIIZ strings, whereas values can be strings or binary data.”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhÞ)�”}”(hŒqExtended attributes, when stored after the inode, have a header ``ext4_xattr_ibody_header`` that is 4 bytes long:”h]”(hŒ@Extended attributes, when stored after the inode, have a header ”…”�”}”(hjAh²hh³Nh´Nubhè)�”}”(hŒ``ext4_xattr_ibody_header``”h]”hŒext4_xattr_ibody_header”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjAubhŒ that is 4 bytes long:”…”�”}”(hjAh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhŒtable”“”)�”}”(hhh]”hŒtgroup”“”)�”}”(hhh]”(hŒcolspec”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jkhjhubjl)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”jvKuh1jkhjhubjl)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”jvKuh1jkhjhubjl)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”jvK(uh1jkhjhubhŒthead”“”)�”}”(hhh]”hŒrow”“”)�”}”(hhh]”(hŒentry”“”)�”}”(hhh]”hÞ)�”}”(hŒOffset”h]”hŒOffset”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K$hjžubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj™ubj�)�”}”(hhh]”hÞ)�”}”(hŒType”h]”hŒType”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K%hjµubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj™ubj�)�”}”(hhh]”hÞ)�”}”(hŒName”h]”hŒName”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K&hjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj™ubj�)�”}”(hhh]”hÞ)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K'hjãubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—hj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j’hjhubhŒtbody”“”)�”}”(hhh]”j˜)�”}”(hhh]”(j�)�”}”(hhh]”hÞ)�”}”(hŒ0x0”h]”hŒ0x0”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K(hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj ubj�)�”}”(hhh]”hÞ)�”}”(hŒ__le32”h]”hŒ__le32”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K)hj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj ubj�)�”}”(hhh]”hÞ)�”}”(hŒh_magic”h]”hŒh_magic”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K*hj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj ubj�)�”}”(hhh]”hÞ)�”}”(hŒ€Magic number for identification, 0xEA020000. This value is set by the Linux driver, though e2fsprogs doesn't seem to check it(?)”h]”hŒ‚Magic number for identification, 0xEA020000. This value is set by the Linux driver, though e2fsprogs doesn’t seem to check it(?)”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K+hjSubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjhubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jfhjcubah}”(h]”h ]”Œcolwidths-given”ah"]”h$]”h&]”uh1jahhÊh²hh³Nh´NubhÞ)�”}”(hŒhThe beginning of an extended attribute block is in ``struct ext4_xattr_header``, which is 32 bytes long:”h]”(hŒ3The beginning of an extended attribute block is in ”…”�”}”(hj„h²hh³Nh´Nubhè)�”}”(hŒ``struct ext4_xattr_header``”h]”hŒstruct ext4_xattr_header”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj„ubhŒ, which is 32 bytes long:”…”�”}”(hj„h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K.hhÊh²hubjb)�”}”(hhh]”jg)�”}”(hhh]”(jl)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”jvKuh1jkhj§ubjl)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”jvKuh1jkhj§ubjl)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”jvKuh1jkhj§ubjl)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”jvK(uh1jkhj§ubj“)�”}”(hhh]”j˜)�”}”(hhh]”(j�)�”}”(hhh]”hÞ)�”}”(hŒOffset”h]”hŒOffset”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K5hjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjÑubj�)�”}”(hhh]”hÞ)�”}”(hŒType”h]”hŒType”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K6hjëubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjÑubj�)�”}”(hhh]”hÞ)�”}”(hŒName”h]”hŒName”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K7hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjÑubj�)�”}”(hhh]”hÞ)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K8hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—hjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1j’hj§ubj)�”}”(hhh]”(j˜)�”}”(hhh]”(j�)�”}”(hhh]”hÞ)�”}”(hŒ0x0”h]”hŒ0x0”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K9hjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj?ubj�)�”}”(hhh]”hÞ)�”}”(hŒ__le32”h]”hŒ__le32”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K:hjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj?ubj�)�”}”(hhh]”hÞ)�”}”(hŒh_magic”h]”hŒh_magic”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K;hjpubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj?ubj�)�”}”(hhh]”hÞ)�”}”(hŒ,Magic number for identification, 0xEA020000.”h]”hŒ,Magic number for identification, 0xEA020000.”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj¤ubj�)�”}”(hhh]”hÞ)�”}”(hŒ h_refcount”h]”hŒ h_refcount”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K?hjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj¤ubj�)�”}”(hhh]”hÞ)�”}”(hŒReference count.”h]”hŒReference count.”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K@hjìubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—hj<ubj˜)�”}”(hhh]”(j�)�”}”(hhh]”hÞ)�”}”(hŒ0x8”h]”hŒ0x8”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KAhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj ubj�)�”}”(hhh]”hÞ)�”}”(hŒ__le32”h]”hŒ__le32”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KBhj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj ubj�)�”}”(hhh]”hÞ)�”}”(hŒh_blocks”h]”hŒh_blocks”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KChj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj ubj�)�”}”(hhh]”hÞ)�”}”(hŒNumber of disk blocks used.”h]”hŒNumber of disk blocks used.”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KDhjQubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—hj<ubj˜)�”}”(hhh]”(j�)�”}”(hhh]”hÞ)�”}”(hŒ0xC”h]”hŒ0xC”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KEhjqubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjnubj�)�”}”(hhh]”hÞ)�”}”(hŒ__le32”h]”hŒ__le32”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KFhjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjnubj�)�”}”(hhh]”hÞ)�”}”(hŒh_hash”h]”hŒh_hash”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KGhjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjnubj�)�”}”(hhh]”hÞ)�”}”(hŒHash value of all attributes.”h]”hŒHash value of all attributes.”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KHhj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjnubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—hj<ubj˜)�”}”(hhh]”(j�)�”}”(hhh]”hÞ)�”}”(hŒ0x10”h]”hŒ0x10”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KIhjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjÓubj�)�”}”(hhh]”hÞ)�”}”(hŒ__le32”h]”hŒ__le32”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KJhjíubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjÓubj�)�”}”(hhh]”hÞ)�”}”(hŒ h_checksum”h]”hŒ h_checksum”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KKhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjÓubj�)�”}”(hhh]”hÞ)�”}”(hŒ)Checksum of the extended attribute block.”h]”hŒ)Checksum of the extended attribute block.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KLhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—hj<ubj˜)�”}”(hhh]”(j�)�”}”(hhh]”hÞ)�”}”(hŒ0x14”h]”hŒ0x14”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KMhj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj8ubj�)�”}”(hhh]”hÞ)�”}”(hŒ__u32”h]”hŒ__u32”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KNhjRubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj8ubj�)�”}”(hhh]”hÞ)�”}”(hŒ h_reserved[3]”h]”hŒ h_reserved[3]”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KOhjiubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj8ubj�)�”}”(hhh]”hÞ)�”}”(hŒZero.”h]”hŒZero.”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KPhj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—hj<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj§ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jfhj¤ubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jahhÊh²hh³Nh´NubhÞ)�”}”(hŒ‘The checksum is calculated against the FS UUID, the 64-bit block number of the extended attribute block, and the entire block (header + entries).”h]”hŒ‘The checksum is calculated against the FS UUID, the 64-bit block number of the extended attribute block, and the entire block (header + entries).”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KRhhÊh²hubhÞ)�”}”(hX±Following the ``struct ext4_xattr_header`` or ``struct ext4_xattr_ibody_header`` is an array of ``struct ext4_xattr_entry``; each of these entries is at least 16 bytes long. When stored in an external block, the ``struct ext4_xattr_entry`` entries must be stored in sorted order. The sort order is ``e_name_index``, then ``e_name_len``, and finally ``e_name``. Attributes stored inside an inode do not need be stored in sorted order.”h]”(hŒFollowing the ”…”�”}”(hj¾h²hh³Nh´Nubhè)�”}”(hŒ``struct ext4_xattr_header``”h]”hŒstruct ext4_xattr_header”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj¾ubhŒ or ”…”�”}”(hj¾h²hh³Nh´Nubhè)�”}”(hŒ"``struct ext4_xattr_ibody_header``”h]”hŒstruct ext4_xattr_ibody_header”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj¾ubhŒ is an array of ”…”�”}”(hj¾h²hh³Nh´Nubhè)�”}”(hŒ``struct ext4_xattr_entry``”h]”hŒstruct ext4_xattr_entry”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj¾ubhŒY; each of these entries is at least 16 bytes long. When stored in an external block, the ”…”�”}”(hj¾h²hh³Nh´Nubhè)�”}”(hŒ``struct ext4_xattr_entry``”h]”hŒstruct ext4_xattr_entry”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj¾ubhŒ; entries must be stored in sorted order. The sort order is ”…”�”}”(hj¾h²hh³Nh´Nubhè)�”}”(hŒ``e_name_index``”h]”hŒ e_name_index”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj¾ubhŒ, then ”…”�”}”(hj¾h²hh³Nh´Nubhè)�”}”(hŒ``e_name_len``”h]”hŒ e_name_len”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj¾ubhŒ, and finally ”…”�”}”(hj¾h²hh³Nh´Nubhè)�”}”(hŒ ``e_name``”h]”hŒe_name”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj¾ubhŒJ. Attributes stored inside an inode do not need be stored in sorted order.”…”�”}”(hj¾h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KVhhÊh²hubjb)�”}”(hhh]”jg)�”}”(hhh]”(jl)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”jvKuh1jkhjMubjl)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”jvKuh1jkhjMubjl)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”jvKuh1jkhjMubjl)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”jvK(uh1jkhjMubj“)�”}”(hhh]”j˜)�”}”(hhh]”(j�)�”}”(hhh]”hÞ)�”}”(hŒOffset”h]”hŒOffset”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kbhjzubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjwubj�)�”}”(hhh]”hÞ)�”}”(hŒType”h]”hŒType”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kchj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjwubj�)�”}”(hhh]”hÞ)�”}”(hŒName”h]”hŒName”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kdhj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjwubj�)�”}”(hhh]”hÞ)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kehj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjwubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—hjtubah}”(h]”h ]”h"]”h$]”h&]”uh1j’hjMubj)�”}”(hhh]”(j˜)�”}”(hhh]”(j�)�”}”(hhh]”hÞ)�”}”(hŒ0x0”h]”hŒ0x0”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kfhjèubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjåubj�)�”}”(hhh]”hÞ)�”}”(hŒ__u8”h]”hŒ__u8”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kghjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjåubj�)�”}”(hhh]”hÞ)�”}”(hŒ e_name_len”h]”hŒ e_name_len”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjåubj�)�”}”(hhh]”hÞ)�”}”(hŒLength of name.”h]”hŒLength of name.”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kihj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjåubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—hjâubj˜)�”}”(hhh]”(j�)�”}”(hhh]”hÞ)�”}”(hŒ0x1”h]”hŒ0x1”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KjhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjJubj�)�”}”(hhh]”hÞ)�”}”(hŒ__u8”h]”hŒ__u8”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kkhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjJubj�)�”}”(hhh]”hÞ)�”}”(hŒ e_name_index”h]”hŒ e_name_index”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Klhj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjJubj�)�”}”(hhh]”hÞ)�”}”(hŒ:Attribute name index. There is a discussion of this below.”h]”hŒ:Attribute name index. There is a discussion of this below.”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kmhj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—hjâubj˜)�”}”(hhh]”(j�)�”}”(hhh]”hÞ)�”}”(hŒ0x2”h]”hŒ0x2”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Knhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj¯ubj�)�”}”(hhh]”hÞ)�”}”(hŒ__le16”h]”hŒ__le16”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KohjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj¯ubj�)�”}”(hhh]”hÞ)�”}”(hŒ e_value_offs”h]”hŒ e_value_offs”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kphjàubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj¯ubj�)�”}”(hhh]”hÞ)�”}”(hXLocation of this attribute's value on the disk block where it is stored. Multiple attributes can share the same value. For an inode attribute this value is relative to the start of the first entry; for a block this value is relative to the start of the block (i.e. the header).”h]”hXLocation of this attribute’s value on the disk block where it is stored. Multiple attributes can share the same value. For an inode attribute this value is relative to the start of the first entry; for a block this value is relative to the start of the block (i.e. the header).”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kqhj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—hjâubj˜)�”}”(hhh]”(j�)�”}”(hhh]”hÞ)�”}”(hŒ0x4”h]”hŒ0x4”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kuhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjubj�)�”}”(hhh]”hÞ)�”}”(hŒ__le32”h]”hŒ__le32”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kvhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjubj�)�”}”(hhh]”hÞ)�”}”(hŒ e_value_inum”h]”hŒ e_value_inum”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KwhjEubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjubj�)�”}”(hhh]”hÞ)�”}”(hŒ¦The inode where the value is stored. Zero indicates the value is in the same block as this entry. This field is only used if the INCOMPAT_EA_INODE feature is enabled.”h]”hŒ¦The inode where the value is stored. Zero indicates the value is in the same block as this entry. This field is only used if the INCOMPAT_EA_INODE feature is enabled.”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kxhj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—hjâubj˜)�”}”(hhh]”(j�)�”}”(hhh]”hÞ)�”}”(hŒ0x8”h]”hŒ0x8”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K{hj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjyubj�)�”}”(hhh]”hÞ)�”}”(hŒ__le32”h]”hŒ__le32”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K|hj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjyubj�)�”}”(hhh]”hÞ)�”}”(hŒ e_value_size”h]”hŒ e_value_size”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K}hjªubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjyubj�)�”}”(hhh]”hÞ)�”}”(hŒLength of attribute value.”h]”hŒLength of attribute value.”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K~hjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjyubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—hjâubj˜)�”}”(hhh]”(j�)�”}”(hhh]”hÞ)�”}”(hŒ0xC”h]”hŒ0xC”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjáubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjÞubj�)�”}”(hhh]”hÞ)�”}”(hŒ__le32”h]”hŒ__le32”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K€hjøubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjÞubj�)�”}”(hhh]”hÞ)�”}”(hŒe_hash”h]”hŒe_hash”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K�hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjÞubj�)�”}”(hhh]”hÞ)�”}”(hŒçHash value of attribute name and attribute value. The kernel doesn't update the hash for in-inode attributes, so for that case this value must be zero, because e2fsck validates any non-zero hash regardless of where the xattr lives.”h]”hŒéHash value of attribute name and attribute value. The kernel doesn’t update the hash for in-inode attributes, so for that case this value must be zero, because e2fsck validates any non-zero hash regardless of where the xattr lives.”…”�”}”(hj) h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K‚hj& ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—hjâubj˜)�”}”(hhh]”(j�)�”}”(hhh]”hÞ)�”}”(hŒ0x10”h]”hŒ0x10”…”�”}”(hjI h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K†hjF ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjC ubj�)�”}”(hhh]”hÞ)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj` h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K‡hj] ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjC ubj�)�”}”(hhh]”hÞ)�”}”(hŒe_name[e_name_len]”h]”hŒe_name[e_name_len]”…”�”}”(hjw h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kˆhjt ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjC ubj�)�”}”(hhh]”hÞ)�”}”(hŒ/Attribute name. Does not include trailing NULL.”h]”hŒ/Attribute name. Does not include trailing NULL.”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K‰hj‹ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjC ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—hjâubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjMubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jfhjJubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jahhÊh²hh³Nh´NubhÞ)�”}”(hXrAttribute values can follow the end of the entry table. There appears to be a requirement that they be aligned to 4-byte boundaries. The values are stored starting at the end of the block and grow towards the xattr_header/xattr_entry table. When the two collide, the overflow is put into a separate disk block. If the disk block fills up, the filesystem returns -ENOSPC.”h]”hXrAttribute values can follow the end of the entry table. There appears to be a requirement that they be aligned to 4-byte boundaries. The values are stored starting at the end of the block and grow towards the xattr_header/xattr_entry table. When the two collide, the overflow is put into a separate disk block. If the disk block fills up, the filesystem returns -ENOSPC.”…”�”}”(hj» h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K‹hhÊh²hubhÞ)�”}”(hŒbThe first four fields of the ``ext4_xattr_entry`` are set to zero to mark the end of the key list.”h]”(hŒThe first four fields of the ”…”�”}”(hjÉ h²hh³Nh´Nubhè)�”}”(hŒ``ext4_xattr_entry``”h]”hŒext4_xattr_entry”…”�”}”(hjÑ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjÉ ubhŒ1 are set to zero to mark the end of the key list.”…”�”}”(hjÉ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K’hhÊh²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒAttribute Name Indices”h]”hŒAttribute Name Indices”…”�”}”(hjì h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjé h²hh³hÇh´K–ubhÞ)�”}”(hX¨Logically speaking, extended attributes are a series of key=value pairs. The keys are assumed to be NULL-terminated strings. To reduce the amount of on-disk space that the keys consume, the beginning of the key string is matched against the attribute name index. If a match is found, the attribute name index field is set, and matching string is removed from the key name. Here is a map of name index values to key prefixes:”h]”hX¨Logically speaking, extended attributes are a series of key=value pairs. The keys are assumed to be NULL-terminated strings. To reduce the amount of on-disk space that the keys consume, the beginning of the key string is matched against the attribute name index. If a match is found, the attribute name index field is set, and matching string is removed from the key name. Here is a map of name index values to key prefixes:”…”�”}”(hjú h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K˜hjé h²hubjb)�”}”(hhh]”jg)�”}”(hhh]”(jl)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”jvKuh1jkhj ubjl)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”jvK@uh1jkhj ubj“)�”}”(hhh]”j˜)�”}”(hhh]”(j�)�”}”(hhh]”hÞ)�”}”(hŒ Name Index”h]”hŒ Name Index”…”�”}”(hj) h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K£hj& ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj# ubj�)�”}”(hhh]”hÞ)�”}”(hŒ Key Prefix”h]”hŒ Key Prefix”…”�”}”(hj@ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¤hj= ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj# ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j’hj ubj)�”}”(hhh]”(j˜)�”}”(hhh]”(j�)�”}”(hhh]”hÞ)�”}”(hŒ0”h]”hŒ0”…”�”}”(hji h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¥hjf ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjc ubj�)�”}”(hhh]”hÞ)�”}”(hŒ (no prefix)”h]”hŒ (no prefix)”…”�”}”(hj€ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¦hj} ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjc ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—hj` ubj˜)�”}”(hhh]”(j�)�”}”(hhh]”hÞ)�”}”(hŒ1”h]”hŒ1”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K§hj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjš ubj�)�”}”(hhh]”hÞ)�”}”(hŒ “user.â€�”h]”hŒ “user.â€�”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¨hj´ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjš ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—hj` ubj˜)�”}”(hhh]”(j�)�”}”(hhh]”hÞ)�”}”(hŒ2”h]”hŒ2”…”�”}”(hj× h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K©hjÔ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjÑ ubj�)�”}”(hhh]”hÞ)�”}”(hŒ“system.posix_acl_accessâ€�”h]”hŒ“system.posix_acl_accessâ€�”…”�”}”(hjî h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kªhjë ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjÑ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—hj` ubj˜)�”}”(hhh]”(j�)�”}”(hhh]”hÞ)�”}”(hŒ3”h]”hŒ3”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K«hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj ubj�)�”}”(hhh]”hÞ)�”}”(hŒ“system.posix_acl_defaultâ€�”h]”hŒ“system.posix_acl_defaultâ€�”…”�”}”(hj% h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¬hj" ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—hj` ubj˜)�”}”(hhh]”(j�)�”}”(hhh]”hÞ)�”}”(hŒ4”h]”hŒ4”…”�”}”(hjE h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K­hjB ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj? ubj�)�”}”(hhh]”hÞ)�”}”(hŒ“trusted.â€�”h]”hŒ“trusted.â€�”…”�”}”(hj\ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K®hjY ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj? ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—hj` ubj˜)�”}”(hhh]”(j�)�”}”(hhh]”hÞ)�”}”(hŒ6”h]”hŒ6”…”�”}”(hj| h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¯hjy ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjv ubj�)�”}”(hhh]”hÞ)�”}”(hŒ“security.â€�”h]”hŒ“security.â€�”…”�”}”(hj“ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K°hj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjv ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—hj` ubj˜)�”}”(hhh]”(j�)�”}”(hhh]”hÞ)�”}”(hŒ7”h]”hŒ7”…”�”}”(hj³ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K±hj° ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj­ ubj�)�”}”(hhh]”hÞ)�”}”(hŒ!“system.â€� (inline_data only?)”h]”hŒ!“system.â€� (inline_data only?)”…”�”}”(hjÊ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K²hjÇ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj­ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—hj` ubj˜)�”}”(hhh]”(j�)�”}”(hhh]”hÞ)�”}”(hŒ8”h]”hŒ8”…”�”}”(hjê h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K³hjç ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjä ubj�)�”}”(hhh]”hÞ)�”}”(hŒ)“system.richaclâ€� (SuSE kernels only?)”h]”hŒ)“system.richaclâ€� (SuSE kernels only?)”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K´hjþ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjä ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j—hj` ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jfhj ubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jahjé h²hh³Nh´NubhÞ)�”}”(hŒ‰For example, if the attribute key is “user.fubarâ€�, the attribute name index is set to 1 and the “fubarâ€� name is recorded on disk.”h]”hŒ‰For example, if the attribute key is “user.fubarâ€�, the attribute name index is set to 1 and the “fubarâ€� name is recorded on disk.”…”�”}”(hj. h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¶hjé h²hubeh}”(h]”Œattribute-name-indices”ah ]”h"]”Œattribute name indices”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K–ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ POSIX ACLs”h]”hŒ POSIX ACLs”…”�”}”(hjG h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjD h²hh³hÇh´KºubhÞ)�”}”(hŒæPOSIX ACLs are stored in a reduced version of the Linux kernel (and libacl's) internal ACL format. The key difference is that the version number is different (1) and the ``e_id`` field is only stored for named user and group ACLs.”h]”(hŒ¬POSIX ACLs are stored in a reduced version of the Linux kernel (and libacl’s) internal ACL format. The key difference is that the version number is different (1) and the ”…”�”}”(hjU h²hh³Nh´Nubhè)�”}”(hŒ``e_id``”h]”hŒe_id”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjU ubhŒ4 field is only stored for named user and group ACLs.”…”�”}”(hjU h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¼hjD h²hubeh}”(h]”Œ posix-acls”ah ]”h"]”Œ posix acls”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´Kºubeh}”(h]”Œextended-attributes”ah ]”h"]”Œextended attributes”ah$]”h&]”uh1hÈhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hÍNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”jœŒfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j§ Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(j‚ j jA j> jz jw uŒ nametypes”}”(j‚ ‰jA ‰jz ‰uh}”(j hÊj> jé jw jD uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.