€•ŽŒ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/mm/memfd_preservation”Œ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/mm/memfd_preservation”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ)/translations/it_IT/mm/memfd_preservation”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ)/translations/ja_JP/mm/memfd_preservation”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ)/translations/ko_KR/mm/memfd_preservation”Œ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/mm/memfd_preservation”Œ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/mm/memfd_preservation”Œ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-or-later”h]”hŒ)SPDX-License-Identifier: GPL-2.0-or-later”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒC/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒMemfd Preservation via LUO”h]”hŒMemfd Preservation via LUO”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒOverview”h]”hŒOverview”…”�”}”(hhàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÝh³Nh´NubhŒ paragraph”“”)�”}”(hŒÑMemory file descriptors (memfd) can be preserved over a kexec using the Live Update Orchestrator (LUO) file preservation. This allows userspace to transfer its memory contents to the next kernel after a kexec.”h]”hŒÑMemory file descriptors (memfd) can be preserved over a kexec using the Live Update Orchestrator (LUO) file preservation. This allows userspace to transfer its memory contents to the next kernel after a kexec.”…”�”}”(hhðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³ŒS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.c”h´KhhÝubhï)�”}”(hŒ´The preservation is not intended to be transparent. Only select properties of the file are preserved. All others are reset to default. The preserved properties are described below.”h]”hŒ´The preservation is not intended to be transparent. Only select properties of the file are preserved. All others are reset to default. The preserved properties are described below.”…”�”}”(hhÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³ŒS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.c”h´KhhÝubhŒnote”“”)�”}”(hŒ�The LUO API is not stabilized yet, so the preserved properties of a memfd are also not stable and are subject to backwards incompatible changes.”h]”hï)�”}”(hŒ�The LUO API is not stabilized yet, so the preserved properties of a memfd are also not stable and are subject to backwards incompatible changes.”h]”hŒ�The LUO API is not stabilized yet, so the preserved properties of a memfd are also not stable and are subject to backwards incompatible changes.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³ŒS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.c”h´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhÝubj)�”}”(hŒkCurrently a memfd backed by Hugetlb is not supported. Memfds created with ``MFD_HUGETLB`` will be rejected.”h]”hï)�”}”(hŒkCurrently a memfd backed by Hugetlb is not supported. Memfds created with ``MFD_HUGETLB`` will be rejected.”h]”(hŒJCurrently a memfd backed by Hugetlb is not supported. Memfds created with ”…”�”}”(hj-h²hh³Nh´NubhŒliteral”“”)�”}”(hŒ``MFD_HUGETLB``”h]”hŒ MFD_HUGETLB”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj-ubhŒ will be rejected.”…”�”}”(hj-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³ŒS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.c”h´Khj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhÝubeh}”(h]”Œoverview”ah ]”h"]”Œoverview”ah$]”h&]”uh1hÈhhÊh²hh³Nh´NubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒPreserved Properties”h]”hŒPreserved Properties”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj^h³Nh´Nubhï)�”}”(hŒAThe following properties of the memfd are preserved across kexec:”h]”hŒAThe following properties of the memfd are preserved across kexec:”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³ŒS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.c”h´K"hj^ubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒ8File Contents All data stored in the file is preserved. ”h]”(hŒterm”“”)�”}”(hŒ File Contents”h]”hŒ File Contents”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.c”h´K%hj…ubhŒ definition”“”)�”}”(hhh]”hï)�”}”(hŒ)All data stored in the file is preserved.”h]”hŒ)All data stored in the file is preserved.”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j™h´K%hjœubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j™h´K%hj€ubj„)�”}”(hŒ|File Size The size of the file is preserved. Holes in the file are filled by allocating pages for them during preservation. ”h]”(jŠ)�”}”(hŒ File Size”h]”hŒ File Size”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.c”h´K)hj¹ubj›)�”}”(hhh]”hï)�”}”(hŒqThe size of the file is preserved. Holes in the file are filled by allocating pages for them during preservation.”h]”hŒqThe size of the file is preserved. Holes in the file are filled by allocating pages for them during preservation.”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³ŒS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.c”h´K(hjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jËh´K)hj€ubj„)�”}”(hŒ‚File Position The current file position is preserved, allowing applications to continue reading/writing from their last position. ”h]”(jŠ)�”}”(hŒ File Position”h]”hŒ File Position”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.c”h´K-hjêubj›)�”}”(hhh]”hï)�”}”(hŒsThe current file position is preserved, allowing applications to continue reading/writing from their last position.”h]”hŒsThe current file position is preserved, allowing applications to continue reading/writing from their last position.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³ŒS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.c”h´K,hjýubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjêubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jüh´K-hj€ubj„)�”}”(hŒmFile Status Flags memfds are always opened with ``O_RDWR`` and ``O_LARGEFILE``. This property is maintained. ”h]”(jŠ)�”}”(hŒFile Status Flags”h]”hŒFile Status Flags”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.c”h´K1hjubj›)�”}”(hhh]”hï)�”}”(hŒZmemfds are always opened with ``O_RDWR`` and ``O_LARGEFILE``. This property is maintained.”h]”(hŒmemfds are always opened with ”…”�”}”(hj1h²hh³Nh´Nubj6)�”}”(hŒ ``O_RDWR``”h]”hŒO_RDWR”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj1ubhŒ and ”…”�”}”(hj1h²hh³Nh´Nubj6)�”}”(hŒ``O_LARGEFILE``”h]”hŒ O_LARGEFILE”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj1ubhŒ. This property is maintained.”…”�”}”(hj1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³ŒS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.c”h´K0hj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j-h´K1hj€ubj„)�”}”(hŒÑSeals File seals set on the memfd are preserved and re-applied on restore. Only seals known to this LUO version (see ``MEMFD_LUO_ALL_SEALS``) may be present; preservation fails with ``-EOPNOTSUPP`` otherwise. ”h]”(jŠ)�”}”(hŒSeals”h]”hŒSeals”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.c”h´K6hjpubj›)�”}”(hhh]”hï)�”}”(hŒÊFile seals set on the memfd are preserved and re-applied on restore. Only seals known to this LUO version (see ``MEMFD_LUO_ALL_SEALS``) may be present; preservation fails with ``-EOPNOTSUPP`` otherwise.”h]”(hŒoFile seals set on the memfd are preserved and re-applied on restore. Only seals known to this LUO version (see ”…”�”}”(hj†h²hh³Nh´Nubj6)�”}”(hŒ``MEMFD_LUO_ALL_SEALS``”h]”hŒMEMFD_LUO_ALL_SEALS”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj†ubhŒ*) may be present; preservation fails with ”…”�”}”(hj†h²hh³Nh´Nubj6)�”}”(hŒ``-EOPNOTSUPP``”h]”hŒ -EOPNOTSUPP”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj†ubhŒ otherwise.”…”�”}”(hj†h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³ŒS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.c”h´K4hjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j‚h´K6hj€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hj^ubeh}”(h]”Œpreserved-properties”ah ]”h"]”Œpreserved properties”ah$]”h&]”uh1hÈhhÊh²hh³Nh´NubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒNon-Preserved Properties”h]”hŒNon-Preserved Properties”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÓh³Nh´Nubhï)�”}”(hŒ™All properties which are not preserved must be assumed to be reset to default. This section describes some of those properties which may be more of note.”h]”hŒ™All properties which are not preserved must be assumed to be reset to default. This section describes some of those properties which may be more of note.”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³ŒS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.c”h´K;hjÓubj)�”}”(hhh]”j„)�”}”(hŒÄ``FD_CLOEXEC`` flag A memfd can be created with the ``MFD_CLOEXEC`` flag that sets the ``FD_CLOEXEC`` on the file. This flag is not preserved and must be set again after restore via ``fcntl()``. ”h]”(jŠ)�”}”(hŒ``FD_CLOEXEC`` flag”h]”(j6)�”}”(hŒ``FD_CLOEXEC``”h]”hŒ FD_CLOEXEC”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjúubhŒ flag”…”�”}”(hjúh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.c”h´KChjöubj›)�”}”(hhh]”hï)�”}”(hŒ®A memfd can be created with the ``MFD_CLOEXEC`` flag that sets the ``FD_CLOEXEC`` on the file. This flag is not preserved and must be set again after restore via ``fcntl()``.”h]”(hŒ A memfd can be created with the ”…”�”}”(hjh²hh³Nh´Nubj6)�”}”(hŒ``MFD_CLOEXEC``”h]”hŒ MFD_CLOEXEC”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjubhŒ flag that sets the ”…”�”}”(hjh²hh³Nh´Nubj6)�”}”(hŒ``FD_CLOEXEC``”h]”hŒ FD_CLOEXEC”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjubhŒQ on the file. This flag is not preserved and must be set again after restore via ”…”�”}”(hjh²hh³Nh´Nubj6)�”}”(hŒ ``fcntl()``”h]”hŒfcntl()”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjubhŒ.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³ŒS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.c”h´K@hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jh´KChjóubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÓubeh}”(h]”Œnon-preserved-properties”ah ]”h"]”Œnon-preserved properties”ah$]”h&]”uh1hÈhhÊh²hh³Nh´NubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒMemfd Preservation ABI”h]”hŒMemfd Preservation ABI”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjyh²hh³hÇh´K ubhï)�”}”(hŒ^memfd uses the ABI defined below for preserving its state across a kexec reboot using the LUO.”h]”hŒ^memfd uses the ABI defined below for preserving its state across a kexec reboot using the LUO.”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:13: ./include/linux/kho/abi/memfd.h”h´Khjyh²hubhï)�”}”(hŒ…The state is serialized into a packed structure `struct memfd_luo_ser` which is handed over to the next kernel via the KHO mechanism.”h]”(hŒ0The state is serialized into a packed structure ”…”�”}”(hj™h²hh³Nh´NubhŒtitle_reference”“”)�”}”(hŒ`struct memfd_luo_ser`”h]”hŒstruct memfd_luo_ser”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¡hj™ubhŒ? which is handed over to the next kernel via the KHO mechanism.”…”�”}”(hj™h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:13: ./include/linux/kho/abi/memfd.h”h´Khjyh²hubhï)�”}”(hŒÁThis interface is a contract. Any modification to the structure layout constitutes a breaking change. Such changes require incrementing the version number in the MEMFD_LUO_FH_COMPATIBLE string.”h]”hŒÁThis interface is a contract. Any modification to the structure layout constitutes a breaking change. Such changes require incrementing the version number in the MEMFD_LUO_FH_COMPATIBLE string.”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:13: ./include/linux/kho/abi/memfd.h”h´Khjyh²hubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”ŒMEMFD_LUO_FOLIO_DIRTY (C macro)”Œc.MEMFD_LUO_FOLIO_DIRTY”hNt”auh1jËhjyh²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒMEMFD_LUO_FOLIO_DIRTY”h]”hŒdesc_signature_line”“”)�”}”(hŒMEMFD_LUO_FOLIO_DIRTY”h]”hŒ desc_name”“”)�”}”(hŒMEMFD_LUO_FOLIO_DIRTY”h]”hŒ desc_sig_name”“”)�”}”(hjåh]”hŒMEMFD_LUO_FOLIO_DIRTY”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1jóhjïubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”hÅhÆuh1jíhjéh²hh³Œc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.h”h´K ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒ add_permalink”ˆuh1jçŒsphinx_line_type”Œ declarator”hjãh²hh³j h´K ubah}”(h]”jÚah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1jáh³j h´K hjÞh²hubhŒ desc_content”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j hjÞh²hh³j h´K ubeh}”(h]”h ]”(Œc”Œmacro”eh"]”h$]”h&]”Œdomain”j.Œobjtype”j/Œdesctype”j/Œnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1jÜh²hhjyh³Nh´Nubhï)�”}”(hŒ``MEMFD_LUO_FOLIO_DIRTY``”h]”j6)�”}”(hj;h]”hŒMEMFD_LUO_FOLIO_DIRTY”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.h”h´K"hjyh²hubhŒ block_quote”“”)�”}”(hŒ¸ The folio is dirty. **Description** This flag indicates the folio contains data from user. A non-dirty folio is one that was allocated (say using fallocate(2)) but not written to. ”h]”(jR)�”}”(hŒThe folio is dirty. ”h]”hï)�”}”(hŒThe folio is dirty.”h]”hŒThe folio is dirty.”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.h”h´K hjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jQh³jih´K hjSubhï)�”}”(hŒ**Description**”h]”hŒstrong”“”)�”}”(hjrh]”hŒ Description”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjpubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.h”h´K"hjSubhï)�”}”(hŒ�This flag indicates the folio contains data from user. A non-dirty folio is one that was allocated (say using fallocate(2)) but not written to.”h]”hŒ�This flag indicates the folio contains data from user. A non-dirty folio is one that was allocated (say using fallocate(2)) but not written to.”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.h”h´K!hjSubeh}”(h]”h ]”h"]”h$]”h&]”uh1jQh³jih´K hjyh²hubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒ"MEMFD_LUO_FOLIO_UPTODATE (C macro)”Œc.MEMFD_LUO_FOLIO_UPTODATE”hNt”auh1jËhjyh²hh³Nh´NubjÝ)�”}”(hhh]”(jâ)�”}”(hŒMEMFD_LUO_FOLIO_UPTODATE”h]”jè)�”}”(hŒMEMFD_LUO_FOLIO_UPTODATE”h]”jî)�”}”(hŒMEMFD_LUO_FOLIO_UPTODATE”h]”jô)�”}”(hj²h]”hŒMEMFD_LUO_FOLIO_UPTODATE”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jÿah"]”h$]”h&]”uh1jóhj¸ubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jíhj´h²hh³Œc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.h”h´K(ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jçjjhj°h²hh³jÏh´K(ubah}”(h]”j«ah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jáh³jÏh´K(hj­h²hubj!)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j hj­h²hh³jÏh´K(ubeh}”(h]”h ]”(j.Œmacro”eh"]”h$]”h&]”j3j.j4jèj5jèj6‰j7‰j8‰uh1jÜh²hhjyh³Nh´Nubhï)�”}”(hŒ``MEMFD_LUO_FOLIO_UPTODATE``”h]”j6)�”}”(hjîh]”hŒMEMFD_LUO_FOLIO_UPTODATE”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j5hjìubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.h”h´K*hjyh²hubjR)�”}”(hŒª The folio is up-to-date. **Description** An up-to-date folio has been zeroed out. shmem zeroes out folios on first use. This flag tracks which folios need zeroing. ”h]”(jR)�”}”(hŒThe folio is up-to-date. ”h]”hï)�”}”(hŒThe folio is up-to-date.”h]”hŒThe folio is up-to-date.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.h”h´K(hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jQh³jh´K(hjubhï)�”}”(hŒ**Description**”h]”ju)�”}”(hj#h]”hŒ Description”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.h”h´K*hjubhï)�”}”(hŒzAn up-to-date folio has been zeroed out. shmem zeroes out folios on first use. This flag tracks which folios need zeroing.”h]”hŒzAn up-to-date folio has been zeroed out. shmem zeroes out folios on first use. This flag tracks which folios need zeroing.”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.h”h´K)hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jQh³jh´K(hjyh²hubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jØŒmemfd_luo_folio_ser (C struct)”Œc.memfd_luo_folio_ser”hNt”auh1jËhjyh²hh³Nh´NubjÝ)�”}”(hhh]”(jâ)�”}”(hŒmemfd_luo_folio_ser”h]”jè)�”}”(hŒstruct memfd_luo_folio_ser”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1jghjch²hh³Œc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.h”h´K/ubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1jyhjch²hh³jxh´K/ubjî)�”}”(hŒmemfd_luo_folio_ser”h]”jô)�”}”(hjah]”hŒmemfd_luo_folio_ser”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jÿah"]”h$]”h&]”uh1jóhjŠubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jíhjch²hh³jxh´K/ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jçjjhj_h²hh³jxh´K/ubah}”(h]”jZah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jáh³jxh´K/hj\h²hubj!)�”}”(hhh]”hï)�”}”(hŒ#Serialized state of a single folio.”h]”hŒ#Serialized state of a single folio.”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.h”h´K0hj­h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj\h²hh³jxh´K/ubeh}”(h]”h ]”(j.Œstruct”eh"]”h$]”h&]”j3j.j4jÈj5jÈj6‰j7‰j8‰uh1jÜh²hhjyh³Nh´NubhŒ container”“”)�”}”(hX-**Definition**:: struct memfd_luo_folio_ser { u64 pfn:52; u64 flags:12; u64 index; }; **Members** ``pfn`` The page frame number of the folio. ``flags`` Flags to describe the state of the folio. ``index`` The page offset (pgoff_t) of the folio within the original file.”h]”(hï)�”}”(hŒ**Definition**::”h]”(ju)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjÒubhŒ:”…”�”}”(hjÒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.h”h´K4hjÎubhŒ literal_block”“”)�”}”(hŒPstruct memfd_luo_folio_ser { u64 pfn:52; u64 flags:12; u64 index; };”h]”hŒPstruct memfd_luo_folio_ser { u64 pfn:52; u64 flags:12; u64 index; };”…”�”}”hjñsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jïh³Œc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.h”h´K6hjÎubhï)�”}”(hŒ **Members**”h]”ju)�”}”(hjh]”hŒMembers”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jthjubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.h”h´K