͇sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget)/translations/zh_CN/mm/memfd_preservationmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/zh_TW/mm/memfd_preservationmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/it_IT/mm/memfd_preservationmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/ja_JP/mm/memfd_preservationmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/ko_KR/mm/memfd_preservationmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/pt_BR/mm/memfd_preservationmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/sp_SP/mm/memfd_preservationmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h)SPDX-License-Identifier: GPL-2.0-or-laterh]h)SPDX-License-Identifier: GPL-2.0-or-later}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhC/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation.rsthKubhsection)}(hhh](htitle)}(hMemfd Preservation via LUOh]hMemfd Preservation via LUO}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hOverviewh]hOverview}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhNhNubh paragraph)}(hMemory 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]hMemory 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.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chKhhubh)}(hThe 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]hThe 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.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chKhhubhnote)}(hThe 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)}(hThe 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]hThe LUO API is not stabilized yet, so the preserved properties of a memfd are also not stable and are subject to backwards incompatible changes.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chKhjubah}(h]h ]h"]h$]h&]uh1jhhubj)}(hkCurrently a memfd backed by Hugetlb is not supported. Memfds created with ``MFD_HUGETLB`` will be rejected.h]h)}(hkCurrently a memfd backed by Hugetlb is not supported. Memfds created with ``MFD_HUGETLB`` will be rejected.h](hJCurrently a memfd backed by Hugetlb is not supported. Memfds created with }(hj-hhhNhNubhliteral)}(h``MFD_HUGETLB``h]h MFD_HUGETLB}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j5hj-ubh will be rejected.}(hj-hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chKhj)ubah}(h]h ]h"]h$]h&]uh1jhhubeh}(h]overviewah ]h"]overviewah$]h&]uh1hhhhhhNhNubh)}(hhh](h)}(hPreserved Propertiesh]hPreserved Properties}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^hNhNubh)}(hAThe following properties of the memfd are preserved across kexec:h]hAThe following properties of the memfd are preserved across kexec:}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chK"hj^ubhdefinition_list)}(hhh](hdefinition_list_item)}(h8File Contents All data stored in the file is preserved. h](hterm)}(h File Contentsh]h File Contents}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chK%hjubh definition)}(hhh]h)}(h)All data stored in the file is preserved.h]h)All data stored in the file is preserved.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK%hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK%hjubj)}(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 Sizeh]h File Size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chK)hjubj)}(hhh]h)}(hqThe size of the file is preserved. Holes in the file are filled by allocating pages for them during preservation.h]hqThe size of the file is preserved. Holes in the file are filled by allocating pages for them during preservation.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chK(hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK)hjubj)}(hFile Position The current file position is preserved, allowing applications to continue reading/writing from their last position. h](j)}(h File Positionh]h File Position}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chK-hjubj)}(hhh]h)}(hsThe current file position is preserved, allowing applications to continue reading/writing from their last position.h]hsThe current file position is preserved, allowing applications to continue reading/writing from their last position.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chK,hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK-hjubj)}(hmFile Status Flags memfds are always opened with ``O_RDWR`` and ``O_LARGEFILE``. This property is maintained. h](j)}(hFile Status Flagsh]hFile Status Flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chK1hjubj)}(hhh]h)}(hZmemfds are always opened with ``O_RDWR`` and ``O_LARGEFILE``. This property is maintained.h](hmemfds are always opened with }(hj1hhhNhNubj6)}(h ``O_RDWR``h]hO_RDWR}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j5hj1ubh and }(hj1hhhNhNubj6)}(h``O_LARGEFILE``h]h O_LARGEFILE}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1j5hj1ubh. This property is maintained.}(hj1hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chK0hj.ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj-hK1hjubj)}(hSeals 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)}(hSealsh]hSeals}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chK6hjpubj)}(hhh]h)}(hFile 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](hoFile seals set on the memfd are preserved and re-applied on restore. Only seals known to this LUO version (see }(hjhhhNhNubj6)}(h``MEMFD_LUO_ALL_SEALS``h]hMEMFD_LUO_ALL_SEALS}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j5hjubh*) may be present; preservation fails with }(hjhhhNhNubj6)}(h``-EOPNOTSUPP``h]h -EOPNOTSUPP}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j5hjubh otherwise.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chK4hjubah}(h]h ]h"]h$]h&]uh1jhjpubeh}(h]h ]h"]h$]h&]uh1jhjhK6hjubeh}(h]h ]h"]h$]h&]uh1j~hj^ubeh}(h]preserved-propertiesah ]h"]preserved propertiesah$]h&]uh1hhhhhhNhNubh)}(hhh](h)}(hNon-Preserved Propertiesh]hNon-Preserved Properties}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhNhNubh)}(hAll 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]hAll 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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chK;hjubj)}(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`` flagh](j6)}(h``FD_CLOEXEC``h]h FD_CLOEXEC}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j5hjubh flag}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chKChjubj)}(hhh]h)}(hA 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 }(hjhhhNhNubj6)}(h``MFD_CLOEXEC``h]h MFD_CLOEXEC}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1j5hjubh flag that sets the }(hjhhhNhNubj6)}(h``FD_CLOEXEC``h]h FD_CLOEXEC}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1j5hjubhQ on the file. This flag is not preserved and must be set again after restore via }(hjhhhNhNubj6)}(h ``fcntl()``h]hfcntl()}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1j5hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhS/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:7: ./mm/memfd_luo.chK@hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKChjubah}(h]h ]h"]h$]h&]uh1j~hjubeh}(h]non-preserved-propertiesah ]h"]non-preserved propertiesah$]h&]uh1hhhhhhNhNubh)}(hhh](h)}(hMemfd Preservation ABIh]hMemfd Preservation ABI}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjyhhhhhK ubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singleMEMFD_LUO_FOLIO_DIRTY (C macro)c.MEMFD_LUO_FOLIO_DIRTYhNtauh1jhjyhhhNhNubhdesc)}(hhh](hdesc_signature)}(hMEMFD_LUO_FOLIO_DIRTYh]hdesc_signature_line)}(hMEMFD_LUO_FOLIO_DIRTYh]h desc_name)}(hMEMFD_LUO_FOLIO_DIRTYh]h desc_sig_name)}(hjh]hMEMFD_LUO_FOLIO_DIRTY}(hjhhhNhNubah}(h]h ]nah"]h$]h&]uh1jhjubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1jhjhhhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhK ubah}(h]h ]h"]h$]h&]hhƌ add_permalinkuh1jsphinx_line_type declaratorhjhhhjhK ubah}(h]jah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1jhjhK hjhhubh desc_content)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjhhhjhK ubeh}(h]h ](cmacroeh"]h$]h&]domainjobjtypejdesctypejnoindex noindexentrynocontentsentryuh1jhhhjyhNhNubh)}(h``MEMFD_LUO_FOLIO_DIRTY``h]j6)}(hjh]hMEMFD_LUO_FOLIO_DIRTY}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j5hjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhK"hjyhhubh 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](j)}(hThe folio is dirty. h]h)}(hThe folio is dirty.h]hThe folio is dirty.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhK hjubah}(h]h ]h"]h$]h&]uh1jhj(hK hjubh)}(h**Description**h]hstrong)}(hj1h]h Description}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj/ubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhK"hjubh)}(hThis 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]hThis 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.}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhK!hjubeh}(h]h ]h"]h$]h&]uh1jhj(hK hjyhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j"MEMFD_LUO_FOLIO_UPTODATE (C macro)c.MEMFD_LUO_FOLIO_UPTODATEhNtauh1jhjyhhhNhNubj)}(hhh](j)}(hMEMFD_LUO_FOLIO_UPTODATEh]j)}(hMEMFD_LUO_FOLIO_UPTODATEh]j)}(hMEMFD_LUO_FOLIO_UPTODATEh]j)}(hjqh]hMEMFD_LUO_FOLIO_UPTODATE}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubah}(h]h ](jjeh"]h$]h&]hhuh1jhjshhhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhK(ubah}(h]h ]h"]h$]h&]hhjuh1jjjhjohhhjhK(ubah}(h]jjah ](jjeh"]h$]h&]jj)jhuh1jhjhK(hjlhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjlhhhjhK(ubeh}(h]h ](jmacroeh"]h$]h&]jjjjjjjjjuh1jhhhjyhNhNubh)}(h``MEMFD_LUO_FOLIO_UPTODATE``h]j6)}(hjh]hMEMFD_LUO_FOLIO_UPTODATE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j5hjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhK*hjyhhubj)}(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](j)}(hThe folio is up-to-date. h]h)}(hThe folio is up-to-date.h]hThe folio is up-to-date.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhK(hjubah}(h]h ]h"]h$]h&]uh1jhjhK(hjubh)}(h**Description**h]j4)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhK*hjubh)}(hzAn up-to-date folio has been zeroed out. shmem zeroes out folios on first use. This flag tracks which folios need zeroing.h]hzAn up-to-date folio has been zeroed out. shmem zeroes out folios on first use. This flag tracks which folios need zeroing.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhK)hjubeh}(h]h ]h"]h$]h&]uh1jhjhK(hjyhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmemfd_luo_folio_ser (C struct)c.memfd_luo_folio_serhNtauh1jhjyhhhNhNubj)}(hhh](j)}(hmemfd_luo_folio_serh]j)}(hstruct memfd_luo_folio_serh](hdesc_sig_keyword)}(hstructh]hstruct}(hj(hhhNhNubah}(h]h ]kah"]h$]h&]uh1j&hj"hhhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhK/ubhdesc_sig_space)}(h h]h }(hj:hhhNhNubah}(h]h ]wah"]h$]h&]uh1j8hj"hhhj7hK/ubj)}(hmemfd_luo_folio_serh]j)}(hj h]hmemfd_luo_folio_ser}(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubah}(h]h ](jjeh"]h$]h&]hhuh1jhj"hhhj7hK/ubeh}(h]h ]h"]h$]h&]hhjuh1jjjhjhhhj7hK/ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhj7hK/hjhhubj)}(hhh]h)}(h#Serialized state of a single folio.h]h#Serialized state of a single folio.}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhK0hjlhhubah}(h]h ]h"]h$]h&]uh1jhjhhhj7hK/ubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jhhhjyhNhNubh 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](j4)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhK4hjubh literal_block)}(hPstruct memfd_luo_folio_ser { u64 pfn:52; u64 flags:12; u64 index; };h]hPstruct memfd_luo_folio_ser { u64 pfn:52; u64 flags:12; u64 index; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhK6hjubh)}(h **Members**h]j4)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhKhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj:ubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhKVhj ubj)}(hhh](j)}(h-``pos`` The file's current position (f_pos). h](j)}(h``pos``h]j6)}(hj[h]hpos}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1j5hjYubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhKIhjUubj)}(hhh]h)}(h$The file's current position (f_pos).h]h&The file’s current position (f_pos).}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hhjphKIhjqubah}(h]h ]h"]h$]h&]uh1jhjUubeh}(h]h ]h"]h$]h&]uh1jhjphKIhjRubj)}(h7``size`` The total size of the file in bytes (i_size). h](j)}(h``size``h]j6)}(hjh]hsize}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j5hjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhKJhjubj)}(hhh]h)}(h-The total size of the file in bytes (i_size).h]h-The total size of the file in bytes (i_size).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKJhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKJhjRubj)}(hl``seals`` The seals present on the memfd. The seals are uABI so it is safe to directly use them in the ABI. h](j)}(h ``seals``h]j6)}(hjh]hseals}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j5hjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhKLhjubj)}(hhh]h)}(haThe seals present on the memfd. The seals are uABI so it is safe to directly use them in the ABI.h]haThe seals present on the memfd. The seals are uABI so it is safe to directly use them in the ABI.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhKKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKLhjRubj)}(hA``flags`` Flags for the file. Unused flag bits must be set to 0. h](j)}(h ``flags``h]j6)}(hjh]hflags}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j5hjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhKMhjubj)}(hhh]h)}(h6Flags for the file. Unused flag bits must be set to 0.h]h6Flags for the file. Unused flag bits must be set to 0.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKMhjRubj)}(h4``nr_folios`` Number of folios in the folios array. h](j)}(h ``nr_folios``h]j6)}(hj@h]h nr_folios}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j5hj>ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhKNhj:ubj)}(hhh]h)}(h%Number of folios in the folios array.h]h%Number of folios in the folios array.}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUhKNhjVubah}(h]h ]h"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]uh1jhjUhKNhjRubj)}(hV``folios`` KHO vmalloc descriptor pointing to the array of struct memfd_luo_folio_ser.h](j)}(h ``folios``h]j6)}(hjyh]hfolios}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1j5hjwubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/mm/memfd_preservation:16: ./include/linux/kho/abi/memfd.hhKOhjsubj)}(hhh]h)}(hKKHO vmalloc descriptor pointing to the array of struct memfd_luo_folio_ser.h]hKKHO vmalloc descriptor pointing to the array of struct memfd_luo_folio_ser.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKOhjubah}(h]h ]h"]h$]h&]uh1jhjsubeh}(h]h ]h"]h$]h&]uh1jhjhKOhjRubeh}(h]h ]h"]h$]h&]uh1j~hj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjyhhhNhNubeh}(h]memfd-preservation-abiah ]h"]memfd preservation abiah$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(hSee Alsoh]hSee Also}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh bullet_list)}(hhh](h list_item)}(h:doc:`/core-api/liveupdate`h]h)}(hjh]h)}(hjh]hinline)}(hjh]h/core-api/liveupdate}(hjhhhNhNubah}(h]h ](xrefstdstd-doceh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocmm/memfd_preservation refdomainjreftypedoc refexplicitrefwarn reftarget/core-api/liveupdateuh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(h:doc:`/core-api/kho/index`h]h)}(hj h]h)}(hj h]j)}(hj h]h/core-api/kho/index}(hj hhhNhNubah}(h]h ](jstdstd-doceh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocj refdomainj$ reftypedoc refexplicitrefwarnj /core-api/kho/indexuh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubeh}(h]h ]h"]h$]h&]bullet-uh1jhhhKhjhhubeh}(h]see-alsoah ]h"]see alsoah$]h&]uh1hhhhhhhhKubeh}(h]memfd-preservation-via-luoah ]h"]memfd preservation via luoah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj} error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourcehnj _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(jW jT j[jXjjjvjsjjjO jL u nametypes}(jW j[jjvjjO uh}(jT hjXhjj^jsjjjyjjjjjojjjjjL ju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.