€•Œ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/api-summary”Œ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/api-summary”Œ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/api-summary”Œ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/api-summary”Œ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/api-summary”Œ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/api-summary”Œ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/api-summary”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒLinux Filesystems API summary”h]”hŒLinux Filesystems API summary”…”�”}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³ŒE/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary.rst”h´KubhŒ paragraph”“”)�”}”(hŒXThis section contains API-level documentation, mostly taken from the source code itself.”h]”hŒXThis section contains API-level documentation, mostly taken from the source code itself.”…”�”}”(hhÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khh·h²hubh¶)�”}”(hhh]”(h»)�”}”(hŒ The Linux VFS”h]”hŒ The Linux VFS”…”�”}”(hhÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhhÛh²hh³hÊh´K ubh¶)�”}”(hhh]”(h»)�”}”(hŒThe Filesystem types”h]”hŒThe Filesystem types”…”�”}”(hhïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhhìh²hh³hÊh´K ubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œpositive_aop_returns (C enum)”Œc.positive_aop_returns”hNt”auh1hýhhìh²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒpositive_aop_returns”h]”hŒdesc_signature_line”“”)�”}”(hŒenum positive_aop_returns”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒenum”h]”hŒenum”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1jhjh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´KubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1j1hjh²hh³j0h´KubhŒ desc_name”“”)�”}”(hŒpositive_aop_returns”h]”hŒ desc_sig_name”“”)�”}”(hjh]”hŒpositive_aop_returns”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1jHhjDubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”Œ xml:space”Œpreserve”uh1jBhjh²hh³j0h´Kubeh}”(h]”h ]”h"]”h$]”h&]”j`jaŒ add_permalink”ˆuh1jŒsphinx_line_type”Œ declarator”hjh²hh³j0h´Kubah}”(h]”j ah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1jh³j0h´Khjh²hubhŒ desc_content”“”)�”}”(hhh]”hÌ)�”}”(hŒ(aop return codes with specific semantics”h]”hŒ(aop return codes with specific semantics”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M,hjxh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjh²hh³j0h´Kubeh}”(h]”h ]”(Œc”Œenum”eh"]”h$]”h&]”Œdomain”j“Œobjtype”j”Œdesctype”j”Œnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1jh²hhhìh³Nh´NubhŒ container”“”)�”}”(hX**Constants** ``AOP_WRITEPAGE_ACTIVATE`` Informs the caller that page writeback has completed, that the page is still locked, and should be considered active. The VM uses this hint to return the page to the active list -- it won't be a candidate for writeback again in the near future. Other callers must be careful to unlock the page if they get this return. Returned by writepage(); ``AOP_TRUNCATED_PAGE`` The AOP method that was handed a locked page has unlocked it and the page might have been truncated. The caller should back up to acquiring a new page and trying again. The aop will be taking reasonable precautions not to livelock. If the caller held a page reference, it should drop it before retrying. Returned by read_folio().”h]”(hÌ)�”}”(hŒ **Constants**”h]”hŒstrong”“”)�”}”(hj¦h]”hŒ Constants”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M0hj ubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hXv``AOP_WRITEPAGE_ACTIVATE`` Informs the caller that page writeback has completed, that the page is still locked, and should be considered active. The VM uses this hint to return the page to the active list -- it won't be a candidate for writeback again in the near future. Other callers must be careful to unlock the page if they get this return. Returned by writepage(); ”h]”(hŒterm”“”)�”}”(hŒ``AOP_WRITEPAGE_ACTIVATE``”h]”hŒliteral”“”)�”}”(hjÍh]”hŒAOP_WRITEPAGE_ACTIVATE”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjËubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M:hjÅubhŒ definition”“”)�”}”(hhh]”hÌ)�”}”(hXZInforms the caller that page writeback has completed, that the page is still locked, and should be considered active. The VM uses this hint to return the page to the active list -- it won't be a candidate for writeback again in the near future. Other callers must be careful to unlock the page if they get this return. Returned by writepage();”h]”hX\Informs the caller that page writeback has completed, that the page is still locked, and should be considered active. The VM uses this hint to return the page to the active list -- it won’t be a candidate for writeback again in the near future. Other callers must be careful to unlock the page if they get this return. Returned by writepage();”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M3hjçubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jäh´M:hjÀubjÄ)�”}”(hXc``AOP_TRUNCATED_PAGE`` The AOP method that was handed a locked page has unlocked it and the page might have been truncated. The caller should back up to acquiring a new page and trying again. The aop will be taking reasonable precautions not to livelock. If the caller held a page reference, it should drop it before retrying. Returned by read_folio().”h]”(jÊ)�”}”(hŒ``AOP_TRUNCATED_PAGE``”h]”jÐ)�”}”(hj h]”hŒAOP_TRUNCATED_PAGE”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MBhjubjæ)�”}”(hhh]”hÌ)�”}”(hXLThe AOP method that was handed a locked page has unlocked it and the page might have been truncated. The caller should back up to acquiring a new page and trying again. The aop will be taking reasonable precautions not to livelock. If the caller held a page reference, it should drop it before retrying. Returned by read_folio().”h]”hXLThe AOP method that was handed a locked page has unlocked it and the page might have been truncated. The caller should back up to acquiring a new page and trying again. The aop will be taking reasonable precautions not to livelock. If the caller held a page reference, it should drop it before retrying. Returned by read_folio().”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M=hj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j h´MBhjÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhìh²hh³Nh´NubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjNh]”hŒ Description”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MEhhìh²hubhÌ)�”}”(hŒïaddress_space_operation functions return these large constants to indicate special semantics to the caller. These are much larger than the bytes in a page to allow for functions that return the number of bytes operated on in a given page.”h]”hŒïaddress_space_operation functions return these large constants to indicate special semantics to the caller. These are much larger than the bytes in a page to allow for functions that return the number of bytes operated on in a given page.”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M>hhìh²hubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œaddress_space (C struct)”Œc.address_space”hNt”auh1hýhhìh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ address_space”h]”j)�”}”(hŒstruct address_space”h]”(j )�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjˆh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MFubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjˆh²hh³jšh´MFubjC)�”}”(hŒ address_space”h]”jI)�”}”(hj†h]”hŒ address_space”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj©ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjˆh²hh³jšh´MFubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj„h²hh³jšh´MFubah}”(h]”jah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jšh´MFhj�h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ)Contents of a cacheable, mappable object.”h]”hŒ)Contents of a cacheable, mappable object.”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÅhjÌh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj�h²hh³jšh´MFubeh}”(h]”h ]”(j“Œstruct”eh"]”h$]”h&]”j˜j“j™jçjšjçj›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hX**Definition**:: struct address_space { struct inode *host; struct xarray i_pages; struct rw_semaphore invalidate_lock; gfp_t gfp_mask; atomic_t i_mmap_writable; struct rb_root_cached i_mmap; unsigned long nrpages; pgoff_t writeback_index; const struct address_space_operations *a_ops; unsigned long flags; errseq_t wb_err; spinlock_t i_private_lock; struct rw_semaphore i_mmap_rwsem; }; **Members** ``host`` Owner, either the inode or the block_device. ``i_pages`` Cached pages. ``invalidate_lock`` Guards coherency between page cache contents and file offset->disk block mappings in the filesystem during invalidates. It is also used to block modification of page cache contents through memory mappings. ``gfp_mask`` Memory allocation flags to use for allocating pages. ``i_mmap_writable`` Number of VM_SHARED, VM_MAYWRITE mappings. ``i_mmap`` Tree of private and shared mappings. ``nrpages`` Number of page entries, protected by the i_pages lock. ``writeback_index`` Writeback starts here. ``a_ops`` Methods. ``flags`` Error bits and flags (AS_*). ``wb_err`` The most recent error which has occurred. ``i_private_lock`` For use by the owner of the address_space. ``i_mmap_rwsem`` Protects **i_mmap** and **i_mmap_writable**.”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j©)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjïubhŒ:”…”�”}”(hjïh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÉhjëubhŒ literal_block”“”)�”}”(hXÙstruct address_space { struct inode *host; struct xarray i_pages; struct rw_semaphore invalidate_lock; gfp_t gfp_mask; atomic_t i_mmap_writable; struct rb_root_cached i_mmap; unsigned long nrpages; pgoff_t writeback_index; const struct address_space_operations *a_ops; unsigned long flags; errseq_t wb_err; spinlock_t i_private_lock; struct rw_semaphore i_mmap_rwsem; };”h]”hXÙstruct address_space { struct inode *host; struct xarray i_pages; struct rw_semaphore invalidate_lock; gfp_t gfp_mask; atomic_t i_mmap_writable; struct rb_root_cached i_mmap; unsigned long nrpages; pgoff_t writeback_index; const struct address_space_operations *a_ops; unsigned long flags; errseq_t wb_err; spinlock_t i_private_lock; struct rw_semaphore i_mmap_rwsem; };”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j h³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MËhjëubhÌ)�”}”(hŒ **Members**”h]”j©)�”}”(hjh]”hŒMembers”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÛhjëubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ6``host`` Owner, either the inode or the block_device. ”h]”(jÊ)�”}”(hŒ``host``”h]”jÐ)�”}”(hj>h]”hŒhost”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÇhj8ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ,Owner, either the inode or the block_device.”h]”hŒ,Owner, either the inode or the block_device.”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jSh´MÇhjTubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jSh´MÇhj5ubjÄ)�”}”(hŒ``i_pages`` Cached pages. ”h]”(jÊ)�”}”(hŒ ``i_pages``”h]”jÐ)�”}”(hjwh]”hŒi_pages”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjuubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÈhjqubjæ)�”}”(hhh]”hÌ)�”}”(hŒ Cached pages.”h]”hŒ Cached pages.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jŒh´MÈhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjqubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jŒh´MÈhj5ubjÄ)�”}”(hŒâ``invalidate_lock`` Guards coherency between page cache contents and file offset->disk block mappings in the filesystem during invalidates. It is also used to block modification of page cache contents through memory mappings. ”h]”(jÊ)�”}”(hŒ``invalidate_lock``”h]”jÐ)�”}”(hj°h]”hŒinvalidate_lock”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÌhjªubjæ)�”}”(hhh]”hÌ)�”}”(hŒÍGuards coherency between page cache contents and file offset->disk block mappings in the filesystem during invalidates. It is also used to block modification of page cache contents through memory mappings.”h]”hŒÍGuards coherency between page cache contents and file offset->disk block mappings in the filesystem during invalidates. It is also used to block modification of page cache contents through memory mappings.”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÉhjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjªubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÅh´MÌhj5ubjÄ)�”}”(hŒB``gfp_mask`` Memory allocation flags to use for allocating pages. ”h]”(jÊ)�”}”(hŒ ``gfp_mask``”h]”jÐ)�”}”(hjêh]”hŒgfp_mask”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjèubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÍhjäubjæ)�”}”(hhh]”hÌ)�”}”(hŒ4Memory allocation flags to use for allocating pages.”h]”hŒ4Memory allocation flags to use for allocating pages.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÿh´MÍhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjäubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÿh´MÍhj5ubjÄ)�”}”(hŒ?``i_mmap_writable`` Number of VM_SHARED, VM_MAYWRITE mappings. ”h]”(jÊ)�”}”(hŒ``i_mmap_writable``”h]”jÐ)�”}”(hj#h]”hŒi_mmap_writable”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÎhjubjæ)�”}”(hhh]”hÌ)�”}”(hŒ*Number of VM_SHARED, VM_MAYWRITE mappings.”h]”hŒ*Number of VM_SHARED, VM_MAYWRITE mappings.”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j8h´MÎhj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j8h´MÎhj5ubjÄ)�”}”(hŒ0``i_mmap`` Tree of private and shared mappings. ”h]”(jÊ)�”}”(hŒ ``i_mmap``”h]”jÐ)�”}”(hj\h]”hŒi_mmap”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÏhjVubjæ)�”}”(hhh]”hÌ)�”}”(hŒ$Tree of private and shared mappings.”h]”hŒ$Tree of private and shared mappings.”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jqh´MÏhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjVubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jqh´MÏhj5ubjÄ)�”}”(hŒC``nrpages`` Number of page entries, protected by the i_pages lock. ”h]”(jÊ)�”}”(hŒ ``nrpages``”h]”jÐ)�”}”(hj•h]”hŒnrpages”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÑhj�ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ6Number of page entries, protected by the i_pages lock.”h]”hŒ6Number of page entries, protected by the i_pages lock.”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jªh´MÑhj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jªh´MÑhj5ubjÄ)�”}”(hŒ+``writeback_index`` Writeback starts here. ”h]”(jÊ)�”}”(hŒ``writeback_index``”h]”jÐ)�”}”(hjÎh]”hŒwriteback_index”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÒhjÈubjæ)�”}”(hhh]”hÌ)�”}”(hŒWriteback starts here.”h]”hŒWriteback starts here.”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jãh´MÒhjäubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jãh´MÒhj5ubjÄ)�”}”(hŒ``a_ops`` Methods. ”h]”(jÊ)�”}”(hŒ ``a_ops``”h]”jÐ)�”}”(hjh]”hŒa_ops”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÓhjubjæ)�”}”(hhh]”hÌ)�”}”(hŒMethods.”h]”hŒMethods.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´MÓhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jh´MÓhj5ubjÄ)�”}”(hŒ'``flags`` Error bits and flags (AS_*). ”h]”(jÊ)�”}”(hŒ ``flags``”h]”jÐ)�”}”(hj@h]”hŒflags”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÔhj:ubjæ)�”}”(hhh]”hÌ)�”}”(hŒError bits and flags (AS_*).”h]”hŒError bits and flags (AS_*).”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jUh´MÔhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jUh´MÔhj5ubjÄ)�”}”(hŒ5``wb_err`` The most recent error which has occurred. ”h]”(jÊ)�”}”(hŒ ``wb_err``”h]”jÐ)�”}”(hjyh]”hŒwb_err”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjwubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÕhjsubjæ)�”}”(hhh]”hÌ)�”}”(hŒ)The most recent error which has occurred.”h]”hŒ)The most recent error which has occurred.”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jŽh´MÕhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjsubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jŽh´MÕhj5ubjÄ)�”}”(hŒ>``i_private_lock`` For use by the owner of the address_space. ”h]”(jÊ)�”}”(hŒ``i_private_lock``”h]”jÐ)�”}”(hj²h]”hŒi_private_lock”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÖhj¬ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ*For use by the owner of the address_space.”h]”hŒ*For use by the owner of the address_space.”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÇh´MÖhjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÇh´MÖhj5ubjÄ)�”}”(hŒ=``i_mmap_rwsem`` Protects **i_mmap** and **i_mmap_writable**.”h]”(jÊ)�”}”(hŒ``i_mmap_rwsem``”h]”jÐ)�”}”(hjëh]”hŒ i_mmap_rwsem”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjéubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÏhjåubjæ)�”}”(hhh]”hÌ)�”}”(hŒ,Protects **i_mmap** and **i_mmap_writable**.”h]”(hŒ Protects ”…”�”}”(hjh²hh³Nh´Nubj©)�”}”(hŒ **i_mmap**”h]”hŒi_mmap”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjubhŒ and ”…”�”}”(hjh²hh³Nh´Nubj©)�”}”(hŒ**i_mmap_writable**”h]”hŒi_mmap_writable”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjubhŒ.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÐhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjåubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jh´MÏhj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjëubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhìh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œfile_ra_state (C struct)”Œc.file_ra_state”hNt”auh1hýhhìh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ file_ra_state”h]”j)�”}”(hŒstruct file_ra_state”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjeh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÖubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjeh²hh³jvh´MÖubjC)�”}”(hŒ file_ra_state”h]”jI)�”}”(hjch]”hŒ file_ra_state”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj…ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjeh²hh³jvh´MÖubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjah²hh³jvh´MÖubah}”(h]”j\ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jvh´MÖhj^h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒTrack a file's readahead state.”h]”hŒ!Track a file’s readahead state.”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M¬hj¨h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj^h²hh³jvh´MÖubeh}”(h]”h ]”(j“Œstruct”eh"]”h$]”h&]”j˜j“j™jÃjšjÃj›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hX***Definition**:: struct file_ra_state { pgoff_t start; unsigned int size; unsigned int async_size; unsigned int ra_pages; unsigned short order; unsigned short mmap_miss; loff_t prev_pos; }; **Members** ``start`` Where the most recent readahead started. ``size`` Number of pages read in the most recent readahead. ``async_size`` Numer of pages that were/are not needed immediately and so were/are genuinely "ahead". Start next readahead when the first of these pages is accessed. ``ra_pages`` Maximum size of a readahead request, copied from the bdi. ``order`` Preferred folio order used for most recent readahead. ``mmap_miss`` How many mmap accesses missed in the page cache. ``prev_pos`` The last byte in the most recent read request.”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j©)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjËubhŒ:”…”�”}”(hjËh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M°hjÇubj )�”}”(hŒÈstruct file_ra_state { pgoff_t start; unsigned int size; unsigned int async_size; unsigned int ra_pages; unsigned short order; unsigned short mmap_miss; loff_t prev_pos; };”h]”hŒÈstruct file_ra_state { pgoff_t start; unsigned int size; unsigned int async_size; unsigned int ra_pages; unsigned short order; unsigned short mmap_miss; loff_t prev_pos; };”…”�”}”hjèsbah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j h³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M²hjÇubhÌ)�”}”(hŒ **Members**”h]”j©)�”}”(hjùh]”hŒMembers”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M¼hjÇubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ3``start`` Where the most recent readahead started. ”h]”(jÊ)�”}”(hŒ ``start``”h]”jÐ)�”}”(hjh]”hŒstart”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M®hjubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(Where the most recent readahead started.”h]”hŒ(Where the most recent readahead started.”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j-h´M®hj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j-h´M®hjubjÄ)�”}”(hŒ<``size`` Number of pages read in the most recent readahead. ”h]”(jÊ)�”}”(hŒ``size``”h]”jÐ)�”}”(hjQh]”hŒsize”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M¯hjKubjæ)�”}”(hhh]”hÌ)�”}”(hŒ2Number of pages read in the most recent readahead.”h]”hŒ2Number of pages read in the most recent readahead.”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jfh´M¯hjgubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjKubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jfh´M¯hjubjÄ)�”}”(hŒ§``async_size`` Numer of pages that were/are not needed immediately and so were/are genuinely "ahead". Start next readahead when the first of these pages is accessed. ”h]”(jÊ)�”}”(hŒ``async_size``”h]”jÐ)�”}”(hjŠh]”hŒ async_size”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M²hj„ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ—Numer of pages that were/are not needed immediately and so were/are genuinely "ahead". Start next readahead when the first of these pages is accessed.”h]”hŒ›Numer of pages that were/are not needed immediately and so were/are genuinely “aheadâ€�. Start next readahead when the first of these pages is accessed.”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M°hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jŸh´M²hjubjÄ)�”}”(hŒG``ra_pages`` Maximum size of a readahead request, copied from the bdi. ”h]”(jÊ)�”}”(hŒ ``ra_pages``”h]”jÐ)�”}”(hjÄh]”hŒra_pages”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M³hj¾ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ9Maximum size of a readahead request, copied from the bdi.”h]”hŒ9Maximum size of a readahead request, copied from the bdi.”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÙh´M³hjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÙh´M³hjubjÄ)�”}”(hŒ@``order`` Preferred folio order used for most recent readahead. ”h]”(jÊ)�”}”(hŒ ``order``”h]”jÐ)�”}”(hjýh]”hŒorder”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjûubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M´hj÷ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ5Preferred folio order used for most recent readahead.”h]”hŒ5Preferred folio order used for most recent readahead.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´M´hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jh´M´hjubjÄ)�”}”(hŒ?``mmap_miss`` How many mmap accesses missed in the page cache. ”h]”(jÊ)�”}”(hŒ ``mmap_miss``”h]”jÐ)�”}”(hj6h]”hŒ mmap_miss”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mµhj0ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ0How many mmap accesses missed in the page cache.”h]”hŒ0How many mmap accesses missed in the page cache.”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jKh´MµhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jKh´MµhjubjÄ)�”}”(hŒ;``prev_pos`` The last byte in the most recent read request.”h]”(jÊ)�”}”(hŒ ``prev_pos``”h]”jÐ)�”}”(hjoh]”hŒprev_pos”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mµhjiubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.The last byte in the most recent read request.”h]”hŒ.The last byte in the most recent read request.”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M¶hj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjiubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j„h´Mµhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÇubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhìh²hh³Nh´NubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj²h]”hŒ Description”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M¹hhìh²hubhÌ)�”}”(hŒhWhen this structure is passed to ->readahead(), the "most recent" readahead means the current readahead.”h]”hŒlWhen this structure is passed to ->readahead(), the “most recentâ€� readahead means the current readahead.”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M¶hhìh²hubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œfile (C struct)”Œc.file”hNt”auh1hýhhìh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒfile”h]”j)�”}”(hŒ struct file”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjìh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M¼ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjìh²hh³jýh´M¼ubjC)�”}”(hŒfile”h]”jI)�”}”(hjêh]”hŒfile”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjìh²hh³jýh´M¼ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjèh²hh³jýh´M¼ubah}”(h]”jãah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jýh´M¼hjåh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒRepresents a file”h]”hŒRepresents a file”…”�”}”(hj2 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÎhj/ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjåh²hh³jýh´M¼ubeh}”(h]”h ]”(j“Œstruct”eh"]”h$]”h&]”j˜j“j™jJ jšjJ j›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hXÄ**Definition**:: struct file { spinlock_t f_lock; fmode_t f_mode; const struct file_operations *f_op; struct address_space *f_mapping; void *private_data; struct inode *f_inode; unsigned int f_flags; unsigned int f_iocb_flags; const struct cred *f_cred; struct fown_struct *f_owner; union { const struct path f_path; struct path __f_path; }; union { struct mutex f_pos_lock; u64 f_pipe; }; loff_t f_pos; #ifdef CONFIG_SECURITY; void *f_security; #endif; errseq_t f_wb_err; errseq_t f_sb_err; #ifdef CONFIG_EPOLL; struct hlist_head *f_ep; #endif; union { struct callback_head f_task_work; struct llist_node f_llist; struct file_ra_state f_ra; freeptr_t f_freeptr; }; file_ref_t f_ref; }; **Members** ``f_lock`` Protects f_ep, f_flags. Must not be taken from IRQ context. ``f_mode`` FMODE_* flags often used in hotpaths ``f_op`` file operations ``f_mapping`` Contents of a cacheable, mappable object. ``private_data`` filesystem or driver specific data ``f_inode`` cached inode ``f_flags`` file flags ``f_iocb_flags`` iocb flags ``f_cred`` stashed credentials of creator/opener ``f_owner`` file owner ``{unnamed_union}`` anonymous ``f_path`` path of the file ``__f_path`` writable alias for **f_path**; *ONLY* for core VFS and only before the file gets open ``{unnamed_union}`` anonymous ``f_pos_lock`` lock protecting file position ``f_pipe`` specific to pipes ``f_pos`` file position ``f_security`` LSM security context of this file ``f_wb_err`` writeback error ``f_sb_err`` per sb writeback errors ``f_ep`` link of all epoll hooks for this file ``{unnamed_union}`` anonymous ``f_task_work`` task work entry point ``f_llist`` work queue entrypoint ``f_ra`` file's readahead state ``f_freeptr`` Pointer used by SLAB_TYPESAFE_BY_RCU file cache (don't touch.) ``f_ref`` reference count”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j©)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjV h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjR ubhŒ:”…”�”}”(hjR h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÒhjN ubj )�”}”(hXÎstruct file { spinlock_t f_lock; fmode_t f_mode; const struct file_operations *f_op; struct address_space *f_mapping; void *private_data; struct inode *f_inode; unsigned int f_flags; unsigned int f_iocb_flags; const struct cred *f_cred; struct fown_struct *f_owner; union { const struct path f_path; struct path __f_path; }; union { struct mutex f_pos_lock; u64 f_pipe; }; loff_t f_pos; #ifdef CONFIG_SECURITY; void *f_security; #endif; errseq_t f_wb_err; errseq_t f_sb_err; #ifdef CONFIG_EPOLL; struct hlist_head *f_ep; #endif; union { struct callback_head f_task_work; struct llist_node f_llist; struct file_ra_state f_ra; freeptr_t f_freeptr; }; file_ref_t f_ref; };”h]”hXÎstruct file { spinlock_t f_lock; fmode_t f_mode; const struct file_operations *f_op; struct address_space *f_mapping; void *private_data; struct inode *f_inode; unsigned int f_flags; unsigned int f_iocb_flags; const struct cred *f_cred; struct fown_struct *f_owner; union { const struct path f_path; struct path __f_path; }; union { struct mutex f_pos_lock; u64 f_pipe; }; loff_t f_pos; #ifdef CONFIG_SECURITY; void *f_security; #endif; errseq_t f_wb_err; errseq_t f_sb_err; #ifdef CONFIG_EPOLL; struct hlist_head *f_ep; #endif; union { struct callback_head f_task_work; struct llist_node f_llist; struct file_ra_state f_ra; freeptr_t f_freeptr; }; file_ref_t f_ref; };”…”�”}”hjo sbah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j h³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÔhjN ubhÌ)�”}”(hŒ **Members**”h]”j©)�”}”(hj€ h]”hŒMembers”…”�”}”(hj‚ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj~ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MùhjN ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒG``f_lock`` Protects f_ep, f_flags. Must not be taken from IRQ context. ”h]”(jÊ)�”}”(hŒ ``f_lock``”h]”jÐ)�”}”(hjŸ h]”hŒf_lock”…”�”}”(hj¡ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÐhj™ ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ;Protects f_ep, f_flags. Must not be taken from IRQ context.”h]”hŒ;Protects f_ep, f_flags. Must not be taken from IRQ context.”…”�”}”(hj¸ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j´ h´MÐhjµ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj™ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j´ h´MÐhj– ubjÄ)�”}”(hŒ0``f_mode`` FMODE_* flags often used in hotpaths ”h]”(jÊ)�”}”(hŒ ``f_mode``”h]”jÐ)�”}”(hjØ h]”hŒf_mode”…”�”}”(hjÚ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÖ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÑhjÒ ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ$FMODE_* flags often used in hotpaths”h]”hŒ$FMODE_* flags often used in hotpaths”…”�”}”(hjñ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jí h´MÑhjî ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÒ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jí h´MÑhj– ubjÄ)�”}”(hŒ``f_op`` file operations ”h]”(jÊ)�”}”(hŒ``f_op``”h]”jÐ)�”}”(hj h]”hŒf_op”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÒhj ubjæ)�”}”(hhh]”hÌ)�”}”(hŒfile operations”h]”hŒfile operations”…”�”}”(hj* h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j& h´MÒhj' ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j& h´MÒhj– ubjÄ)�”}”(hŒ8``f_mapping`` Contents of a cacheable, mappable object. ”h]”(jÊ)�”}”(hŒ ``f_mapping``”h]”jÐ)�”}”(hjJ h]”hŒ f_mapping”…”�”}”(hjL h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjH ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÓhjD ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ)Contents of a cacheable, mappable object.”h]”hŒ)Contents of a cacheable, mappable object.”…”�”}”(hjc h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j_ h´MÓhj` ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjD ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j_ h´MÓhj– ubjÄ)�”}”(hŒ4``private_data`` filesystem or driver specific data ”h]”(jÊ)�”}”(hŒ``private_data``”h]”jÐ)�”}”(hjƒ h]”hŒ private_data”…”�”}”(hj… h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÔhj} ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ"filesystem or driver specific data”h]”hŒ"filesystem or driver specific data”…”�”}”(hjœ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j˜ h´MÔhj™ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj} ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j˜ h´MÔhj– ubjÄ)�”}”(hŒ``f_inode`` cached inode ”h]”(jÊ)�”}”(hŒ ``f_inode``”h]”jÐ)�”}”(hj¼ h]”hŒf_inode”…”�”}”(hj¾ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjº ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÕhj¶ ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ cached inode”h]”hŒ cached inode”…”�”}”(hjÕ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÑ h´MÕhjÒ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¶ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÑ h´MÕhj– ubjÄ)�”}”(hŒ``f_flags`` file flags ”h]”(jÊ)�”}”(hŒ ``f_flags``”h]”jÐ)�”}”(hjõ h]”hŒf_flags”…”�”}”(hj÷ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjó ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÖhjï ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file flags”h]”hŒ file flags”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j h´MÖhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjï ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j h´MÖhj– ubjÄ)�”}”(hŒ``f_iocb_flags`` iocb flags ”h]”(jÊ)�”}”(hŒ``f_iocb_flags``”h]”jÐ)�”}”(hj. h]”hŒ f_iocb_flags”…”�”}”(hj0 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj, ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M×hj( ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ iocb flags”h]”hŒ iocb flags”…”�”}”(hjG h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jC h´M×hjD ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj( ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jC h´M×hj– ubjÄ)�”}”(hŒ1``f_cred`` stashed credentials of creator/opener ”h]”(jÊ)�”}”(hŒ ``f_cred``”h]”jÐ)�”}”(hjg h]”hŒf_cred”…”�”}”(hji h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhje ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MØhja ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ%stashed credentials of creator/opener”h]”hŒ%stashed credentials of creator/opener”…”�”}”(hj€ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j| h´MØhj} ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhja ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j| h´MØhj– ubjÄ)�”}”(hŒ``f_owner`` file owner ”h]”(jÊ)�”}”(hŒ ``f_owner``”h]”jÐ)�”}”(hj  h]”hŒf_owner”…”�”}”(hj¢ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjž ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÙhjš ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file owner”h]”hŒ file owner”…”�”}”(hj¹ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jµ h´MÙhj¶ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjš ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jµ h´MÙhj– ubjÄ)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(jÊ)�”}”(hŒ``{unnamed_union}``”h]”jÐ)�”}”(hjÙ h]”hŒ{unnamed_union}”…”�”}”(hjÛ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj× ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´KhjÓ ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hjò h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jî h´Khjï ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÓ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jî h´Khj– ubjÄ)�”}”(hŒ``f_path`` path of the file ”h]”(jÊ)�”}”(hŒ ``f_path``”h]”jÐ)�”}”(hj h]”hŒf_path”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÚhj ubjæ)�”}”(hhh]”hÌ)�”}”(hŒpath of the file”h]”hŒpath of the file”…”�”}”(hj+ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j' h´MÚhj( ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j' h´MÚhj– ubjÄ)�”}”(hŒc``__f_path`` writable alias for **f_path**; *ONLY* for core VFS and only before the file gets open ”h]”(jÊ)�”}”(hŒ ``__f_path``”h]”jÐ)�”}”(hjK h]”hŒ__f_path”…”�”}”(hjM h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjI ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÜhjE ubjæ)�”}”(hhh]”hÌ)�”}”(hŒUwritable alias for **f_path**; *ONLY* for core VFS and only before the file gets open”h]”(hŒwritable alias for ”…”�”}”(hjd h²hh³Nh´Nubj©)�”}”(hŒ **f_path**”h]”hŒf_path”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjd ubhŒ; ”…”�”}”(hjd h²hh³Nh´NubhŒemphasis”“”)�”}”(hŒ*ONLY*”h]”hŒONLY”…”�”}”(hj€ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~ hjd ubhŒ0 for core VFS and only before the file gets open”…”�”}”(hjd h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÛhja ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjE ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j` h´MÜhj– ubjÄ)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(jÊ)�”}”(hŒ``{unnamed_union}``”h]”jÐ)�”}”(hj« h]”hŒ{unnamed_union}”…”�”}”(hj­ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj© ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Khj¥ ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hjÄ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÀ h´KhjÁ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¥ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÀ h´Khj– ubjÄ)�”}”(hŒ-``f_pos_lock`` lock protecting file position ”h]”(jÊ)�”}”(hŒ``f_pos_lock``”h]”jÐ)�”}”(hjä h]”hŒ f_pos_lock”…”�”}”(hjæ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjâ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÝhjÞ ubjæ)�”}”(hhh]”hÌ)�”}”(hŒlock protecting file position”h]”hŒlock protecting file position”…”�”}”(hjý h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jù h´MÝhjú ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÞ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jù h´MÝhj– ubjÄ)�”}”(hŒ``f_pipe`` specific to pipes ”h]”(jÊ)�”}”(hŒ ``f_pipe``”h]”jÐ)�”}”(hj h]”hŒf_pipe”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÞhj ubjæ)�”}”(hhh]”hÌ)�”}”(hŒspecific to pipes”h]”hŒspecific to pipes”…”�”}”(hj6 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j2 h´MÞhj3 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j2 h´MÞhj– ubjÄ)�”}”(hŒ``f_pos`` file position ”h]”(jÊ)�”}”(hŒ ``f_pos``”h]”jÐ)�”}”(hjV h]”hŒf_pos”…”�”}”(hjX h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjT ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MßhjP ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file position”h]”hŒ file position”…”�”}”(hjo h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jk h´Mßhjl ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjP ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jk h´Mßhj– ubjÄ)�”}”(hŒ1``f_security`` LSM security context of this file ”h]”(jÊ)�”}”(hŒ``f_security``”h]”jÐ)�”}”(hj� h]”hŒ f_security”…”�”}”(hj‘ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Màhj‰ ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ!LSM security context of this file”h]”hŒ!LSM security context of this file”…”�”}”(hj¨ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¤ h´Màhj¥ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj‰ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¤ h´Màhj– ubjÄ)�”}”(hŒ``f_wb_err`` writeback error ”h]”(jÊ)�”}”(hŒ ``f_wb_err``”h]”jÐ)�”}”(hjÈ h]”hŒf_wb_err”…”�”}”(hjÊ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÆ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Máhj ubjæ)�”}”(hhh]”hÌ)�”}”(hŒwriteback error”h]”hŒwriteback error”…”�”}”(hjá h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÝ h´MáhjÞ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÝ h´Máhj– ubjÄ)�”}”(hŒ%``f_sb_err`` per sb writeback errors ”h]”(jÊ)�”}”(hŒ ``f_sb_err``”h]”jÐ)�”}”(hjh]”hŒf_sb_err”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÿ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mâhjû ubjæ)�”}”(hhh]”hÌ)�”}”(hŒper sb writeback errors”h]”hŒper sb writeback errors”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´Mâhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjû ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jh´Mâhj– ubjÄ)�”}”(hŒ/``f_ep`` link of all epoll hooks for this file ”h]”(jÊ)�”}”(hŒ``f_ep``”h]”jÐ)�”}”(hj:h]”hŒf_ep”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mãhj4ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ%link of all epoll hooks for this file”h]”hŒ%link of all epoll hooks for this file”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jOh´MãhjPubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jOh´Mãhj– ubjÄ)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(jÊ)�”}”(hŒ``{unnamed_union}``”h]”jÐ)�”}”(hjsh]”hŒ{unnamed_union}”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjqubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Khjmubjæ)�”}”(hhh]”hÌ)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jˆh´Khj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjmubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jˆh´Khj– ubjÄ)�”}”(hŒ&``f_task_work`` task work entry point ”h]”(jÊ)�”}”(hŒ``f_task_work``”h]”jÐ)�”}”(hj¬h]”hŒ f_task_work”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjªubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mähj¦ubjæ)�”}”(hhh]”hÌ)�”}”(hŒtask work entry point”h]”hŒtask work entry point”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÁh´MähjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÁh´Mähj– ubjÄ)�”}”(hŒ"``f_llist`` work queue entrypoint ”h]”(jÊ)�”}”(hŒ ``f_llist``”h]”jÐ)�”}”(hjåh]”hŒf_llist”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjãubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Måhjßubjæ)�”}”(hhh]”hÌ)�”}”(hŒwork queue entrypoint”h]”hŒwork queue entrypoint”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³júh´Måhjûubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³júh´Måhj– ubjÄ)�”}”(hŒ ``f_ra`` file's readahead state ”h]”(jÊ)�”}”(hŒ``f_ra``”h]”jÐ)�”}”(hjh]”hŒf_ra”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mæhjubjæ)�”}”(hhh]”hÌ)�”}”(hŒfile's readahead state”h]”hŒfile’s readahead state”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j3h´Mæhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j3h´Mæhj– ubjÄ)�”}”(hŒM``f_freeptr`` Pointer used by SLAB_TYPESAFE_BY_RCU file cache (don't touch.) ”h]”(jÊ)�”}”(hŒ ``f_freeptr``”h]”jÐ)�”}”(hjWh]”hŒ f_freeptr”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MçhjQubjæ)�”}”(hhh]”hÌ)�”}”(hŒ>Pointer used by SLAB_TYPESAFE_BY_RCU file cache (don't touch.)”h]”hŒ@Pointer used by SLAB_TYPESAFE_BY_RCU file cache (don’t touch.)”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jlh´Mçhjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jlh´Mçhj– ubjÄ)�”}”(hŒ``f_ref`` reference count”h]”(jÊ)�”}”(hŒ ``f_ref``”h]”jÐ)�”}”(hj�h]”hŒf_ref”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MçhjŠubjæ)�”}”(hhh]”hÌ)�”}”(hŒreference count”h]”hŒreference count”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mèhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¥h´Mçhj– ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjN ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhìh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œi_uid_into_vfsuid (C function)”Œc.i_uid_into_vfsuid”hNt”auh1hýhhìh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒUvfsuid_t i_uid_into_vfsuid (const struct mnt_idmap *idmap, const struct inode *inode)”h]”j)�”}”(hŒTvfsuid_t i_uid_into_vfsuid(const struct mnt_idmap *idmap, const struct inode *inode)”h]”(h)�”}”(hhh]”jI)�”}”(hŒvfsuid_t”h]”hŒvfsuid_t”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjêubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”Œ identifier”Œ reftarget”jïŒmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”jŒ ASTIdentifier”“”)�”}”jŒi_uid_into_vfsuid”sbŒc.i_uid_into_vfsuid”†”asbuh1hhjæh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjæh²hh³jh´M�ubjC)�”}”(hŒi_uid_into_vfsuid”h]”jI)�”}”(hjh]”hŒi_uid_into_vfsuid”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj%ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjæh²hh³jh´M�ubhŒdesc_parameterlist”“”)�”}”(hŒ:(const struct mnt_idmap *idmap, const struct inode *inode)”h]”(hŒdesc_parameter”“”)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hŒconst”h]”hŒconst”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjDubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjDubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjDubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjDubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j„Œmodname”NŒ classname”Njj )�”}”j ]”jŒc.i_uid_into_vfsuid”†”asbuh1hhjDubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjDubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1j®hjDubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjDubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj>ubjC)�”}”(hŒconst struct inode *inode”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÔubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÔubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÔubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÔubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jŒmodname”NŒ classname”Njj )�”}”j ]”jŒc.i_uid_into_vfsuid”†”asbuh1hhjÔubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÔubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÔubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÔubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj>ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjæh²hh³jh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjâh²hh³jh´M�ubah}”(h]”jÝah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jh´M�hjßh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ3map an inode's i_uid down according to an idmapping”h]”hŒ5map an inode’s i_uid down according to an idmapping”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M�hjqh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjßh²hh³jh´M�ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jŒjšjŒj›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hX**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ``const struct inode *inode`` inode to map **Return** the inode's i_uid mapped down according to **idmap**. If the inode's i_uid has no mapping INVALID_VFSUID is returned.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj–h]”hŒ Parameters”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M¡hj�ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒN``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjµh]”hŒconst struct mnt_idmap *idmap”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mžhj¯ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+idmap of the mount the inode was found from”h]”hŒ+idmap of the mount the inode was found from”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÊh´MžhjËubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÊh´Mžhj¬ubjÄ)�”}”(hŒ+``const struct inode *inode`` inode to map ”h]”(jÊ)�”}”(hŒ``const struct inode *inode``”h]”jÐ)�”}”(hjîh]”hŒconst struct inode *inode”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjìubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MŸhjèubjæ)�”}”(hhh]”hÌ)�”}”(hŒ inode to map”h]”hŒ inode to map”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´MŸhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjèubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jh´MŸhj¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj�ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj)h]”hŒReturn”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M¡hj�ubhÌ)�”}”(hŒuthe inode's i_uid mapped down according to **idmap**. If the inode's i_uid has no mapping INVALID_VFSUID is returned.”h]”(hŒ-the inode’s i_uid mapped down according to ”…”�”}”(hj?h²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj?ubhŒC. If the inode’s i_uid has no mapping INVALID_VFSUID is returned.”…”�”}”(hj?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M¡hj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhìh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œi_uid_needs_update (C function)”Œc.i_uid_needs_update”hNt”auh1hýhhìh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒlbool i_uid_needs_update (const struct mnt_idmap *idmap, const struct iattr *attr, const struct inode *inode)”h]”j)�”}”(hŒkbool i_uid_needs_update(const struct mnt_idmap *idmap, const struct iattr *attr, const struct inode *inode)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒbool”h]”hŒbool”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1j€hj|h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M«ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj|h²hh³j‘h´M«ubjC)�”}”(hŒi_uid_needs_update”h]”jI)�”}”(hŒi_uid_needs_update”h]”hŒi_uid_needs_update”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj|h²hh³j‘h´M«ubj=)�”}”(hŒT(const struct mnt_idmap *idmap, const struct iattr *attr, const struct inode *inode)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¼ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¼ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¼ubj2•)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¼ubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjöubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jûŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj¦sbŒc.i_uid_needs_update”†”asbuh1hhj¼ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¼ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¼ubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¸ubjC)�”}”(hŒconst struct iattr *attr”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjIubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjIubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjIubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjIubh)�”}”(hhh]”jI)�”}”(hŒiattr”h]”hŒiattr”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjƒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jˆŒmodname”NŒ classname”Njj )�”}”j ]”jŒc.i_uid_needs_update”†”asbuh1hhjIubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjIubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjIubjI)�”}”(hŒattr”h]”hŒattr”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjIubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¸ubjC)�”}”(hŒconst struct inode *inode”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÔubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÔubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÔubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÔubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jŒmodname”NŒ classname”Njj )�”}”j ]”jŒc.i_uid_needs_update”†”asbuh1hhjÔubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÔubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÔubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÔubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¸ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj|h²hh³j‘h´M«ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjxh²hh³j‘h´M«ubah}”(h]”jsah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j‘h´M«hjuh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ/check whether inode's i_uid needs to be updated”h]”hŒ1check whether inode’s i_uid needs to be updated”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M«hjqh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjuh²hh³j‘h´M«ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jŒjšjŒj›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hX´**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ``const struct iattr *attr`` the new attributes of **inode** ``const struct inode *inode`` the inode to update **Description** Check whether the $inode's i_uid field needs to be updated taking idmapped mounts into account if the filesystem supports it. **Return** true if **inode**'s i_uid field needs to be updated, false if not.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj–h]”hŒ Parameters”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M¯hj�ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒN``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjµh]”hŒconst struct mnt_idmap *idmap”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M¬hj¯ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+idmap of the mount the inode was found from”h]”hŒ+idmap of the mount the inode was found from”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÊh´M¬hjËubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÊh´M¬hj¬ubjÄ)�”}”(hŒ=``const struct iattr *attr`` the new attributes of **inode** ”h]”(jÊ)�”}”(hŒ``const struct iattr *attr``”h]”jÐ)�”}”(hjîh]”hŒconst struct iattr *attr”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjìubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M­hjèubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe new attributes of **inode**”h]”(hŒthe new attributes of ”…”�”}”(hjh²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´M­hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjèubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jh´M­hj¬ubjÄ)�”}”(hŒ2``const struct inode *inode`` the inode to update ”h]”(jÊ)�”}”(hŒ``const struct inode *inode``”h]”jÐ)�”}”(hj5h]”hŒconst struct inode *inode”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M®hj/ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe inode to update”h]”hŒthe inode to update”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jJh´M®hjKubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jJh´M®hj¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj�ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjph]”hŒ Description”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjnubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M°hj�ubhÌ)�”}”(hŒ}Check whether the $inode's i_uid field needs to be updated taking idmapped mounts into account if the filesystem supports it.”h]”hŒCheck whether the $inode’s i_uid field needs to be updated taking idmapped mounts into account if the filesystem supports it.”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M¯hj�ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj—h]”hŒReturn”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M²hj�ubhÌ)�”}”(hŒBtrue if **inode**'s i_uid field needs to be updated, false if not.”h]”(hŒtrue if ”…”�”}”(hj­h²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj­ubhŒ3’s i_uid field needs to be updated, false if not.”…”�”}”(hj­h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M³hj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhìh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œi_uid_update (C function)”Œc.i_uid_update”hNt”auh1hýhhìh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ`void i_uid_update (const struct mnt_idmap *idmap, const struct iattr *attr, struct inode *inode)”h]”j)�”}”(hŒ_void i_uid_update(const struct mnt_idmap *idmap, const struct iattr *attr, struct inode *inode)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjêh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M¿ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjêh²hh³jüh´M¿ubjC)�”}”(hŒ i_uid_update”h]”jI)�”}”(hŒ i_uid_update”h]”hŒ i_uid_update”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjêh²hh³jüh´M¿ubj=)�”}”(hŒN(const struct mnt_idmap *idmap, const struct iattr *attr, struct inode *inode)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj'ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj'ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj'ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj'ubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjaubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jfŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjsbŒc.i_uid_update”†”asbuh1hhj'ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj'ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj'ubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj#ubjC)�”}”(hŒconst struct iattr *attr”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj´ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj´ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj´ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj´ubh)�”}”(hhh]”jI)�”}”(hŒiattr”h]”hŒiattr”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjîubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jóŒmodname”NŒ classname”Njj )�”}”j ]”j€Œc.i_uid_update”†”asbuh1hhj´ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj´ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj´ubjI)�”}”(hŒattr”h]”hŒattr”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj#ubjC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj?ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj?ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj^ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jcŒmodname”NŒ classname”Njj )�”}”j ]”j€Œc.i_uid_update”†”asbuh1hhj?ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj?ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj?ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj#ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjêh²hh³jüh´M¿ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjæh²hh³jüh´M¿ubah}”(h]”jáah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jüh´M¿hjãh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒupdate **inode**'s i_uid field”h]”(hŒupdate ”…”�”}”(hjÄh²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÄubhŒ’s i_uid field”…”�”}”(hjÄh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M¿hjÁh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjãh²hh³jüh´M¿ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jîjšjîj›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hXM**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ``const struct iattr *attr`` the new attributes of **inode** ``struct inode *inode`` the inode to update **Description** Safely update **inode**'s i_uid field translating the vfsuid of any idmapped mount into the filesystem kuid.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjøh]”hŒ Parameters”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjöubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÃhjòubj¿)�”}”(hhh]”(jÄ)�”}”(hŒN``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjh]”hŒconst struct mnt_idmap *idmap”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÀhjubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+idmap of the mount the inode was found from”h]”hŒ+idmap of the mount the inode was found from”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j,h´MÀhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j,h´MÀhjubjÄ)�”}”(hŒ=``const struct iattr *attr`` the new attributes of **inode** ”h]”(jÊ)�”}”(hŒ``const struct iattr *attr``”h]”jÐ)�”}”(hjPh]”hŒconst struct iattr *attr”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÁhjJubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe new attributes of **inode**”h]”(hŒthe new attributes of ”…”�”}”(hjih²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjiubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jeh´MÁhjfubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jeh´MÁhjubjÄ)�”}”(hŒ,``struct inode *inode`` the inode to update ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj—h]”hŒstruct inode *inode”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÂhj‘ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe inode to update”h]”hŒthe inode to update”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¬h´MÂhj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¬h´MÂhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjòubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÒh]”hŒ Description”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÄhjòubhÌ)�”}”(hŒlSafely update **inode**'s i_uid field translating the vfsuid of any idmapped mount into the filesystem kuid.”h]”(hŒSafely update ”…”�”}”(hjèh²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjèubhŒW’s i_uid field translating the vfsuid of any idmapped mount into the filesystem kuid.”…”�”}”(hjèh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÃhjòubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhìh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œi_gid_into_vfsgid (C function)”Œc.i_gid_into_vfsgid”hNt”auh1hýhhìh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒUvfsgid_t i_gid_into_vfsgid (const struct mnt_idmap *idmap, const struct inode *inode)”h]”j)�”}”(hŒTvfsgid_t i_gid_into_vfsgid(const struct mnt_idmap *idmap, const struct inode *inode)”h]”(h)�”}”(hhh]”jI)�”}”(hŒvfsgid_t”h]”hŒvfsgid_t”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j.Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒi_gid_into_vfsgid”sbŒc.i_gid_into_vfsgid”†”asbuh1hhj%h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÑubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj%h²hh³jMh´MÑubjC)�”}”(hŒi_gid_into_vfsgid”h]”jI)�”}”(hjJh]”hŒi_gid_into_vfsgid”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj\ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj%h²hh³jMh´MÑubj=)�”}”(hŒ:(const struct mnt_idmap *idmap, const struct inode *inode)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjwubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjwubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjwubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjwubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj±ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¶Œmodname”NŒ classname”Njj )�”}”j ]”jHŒc.i_gid_into_vfsgid”†”asbuh1hhjwubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjwubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjwubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjwubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjsubjC)�”}”(hŒconst struct inode *inode”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jAŒmodname”NŒ classname”Njj )�”}”j ]”jHŒc.i_gid_into_vfsgid”†”asbuh1hhjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjsubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj%h²hh³jMh´MÑubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj!h²hh³jMh´MÑubah}”(h]”jah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jMh´MÑhjh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ3map an inode's i_gid down according to an idmapping”h]”hŒ5map an inode’s i_gid down according to an idmapping”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÑhjŸh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjh²hh³jMh´MÑubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jºjšjºj›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hX**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ``const struct inode *inode`` inode to map **Return** the inode's i_gid mapped down according to **idmap**. If the inode's i_gid has no mapping INVALID_VFSGID is returned.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÄh]”hŒ Parameters”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÕhj¾ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒN``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjãh]”hŒconst struct mnt_idmap *idmap”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjáubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÒhjÝubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+idmap of the mount the inode was found from”h]”hŒ+idmap of the mount the inode was found from”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jøh´MÒhjùubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jøh´MÒhjÚubjÄ)�”}”(hŒ+``const struct inode *inode`` inode to map ”h]”(jÊ)�”}”(hŒ``const struct inode *inode``”h]”jÐ)�”}”(hjh]”hŒconst struct inode *inode”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÓhjubjæ)�”}”(hhh]”hÌ)�”}”(hŒ inode to map”h]”hŒ inode to map”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j1h´MÓhj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j1h´MÓhjÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj¾ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjWh]”hŒReturn”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjUubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÕhj¾ubhÌ)�”}”(hŒuthe inode's i_gid mapped down according to **idmap**. If the inode's i_gid has no mapping INVALID_VFSGID is returned.”h]”(hŒ-the inode’s i_gid mapped down according to ”…”�”}”(hjmh²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjmubhŒC. If the inode’s i_gid has no mapping INVALID_VFSGID is returned.”…”�”}”(hjmh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÕhj¾ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhìh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œi_gid_needs_update (C function)”Œc.i_gid_needs_update”hNt”auh1hýhhìh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒlbool i_gid_needs_update (const struct mnt_idmap *idmap, const struct iattr *attr, const struct inode *inode)”h]”j)�”}”(hŒkbool i_gid_needs_update(const struct mnt_idmap *idmap, const struct iattr *attr, const struct inode *inode)”h]”(j�)�”}”(hj„h]”hŒbool”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjªh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mßubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjªh²hh³j»h´MßubjC)�”}”(hŒi_gid_needs_update”h]”jI)�”}”(hŒi_gid_needs_update”h]”hŒi_gid_needs_update”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÊubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjªh²hh³j»h´Mßubj=)�”}”(hŒT(const struct mnt_idmap *idmap, const struct iattr *attr, const struct inode *inode)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjæubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjæubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjæubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjæubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j%Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÐsbŒc.i_gid_needs_update”†”asbuh1hhjæubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjæubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjæubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjæubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjâubjC)�”}”(hŒconst struct iattr *attr”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjsubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjsubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjsubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjsubh)�”}”(hhh]”jI)�”}”(hŒiattr”h]”hŒiattr”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj­ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j²Œmodname”NŒ classname”Njj )�”}”j ]”j?Œc.i_gid_needs_update”†”asbuh1hhjsubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjsubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjsubjI)�”}”(hŒattr”h]”hŒattr”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjsubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjâubjC)�”}”(hŒconst struct inode *inode”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjþubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjþubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjþubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjþubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j=Œmodname”NŒ classname”Njj )�”}”j ]”j?Œc.i_gid_needs_update”†”asbuh1hhjþubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjþubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjþubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjþubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjâubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjªh²hh³j»h´Mßubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj¦h²hh³j»h´Mßubah}”(h]”j¡ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j»h´Mßhj£h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ/check whether inode's i_gid needs to be updated”h]”hŒ1check whether inode’s i_gid needs to be updated”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mßhj›h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj£h²hh³j»h´Mßubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j¶jšj¶j›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hX´**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ``const struct iattr *attr`` the new attributes of **inode** ``const struct inode *inode`` the inode to update **Description** Check whether the $inode's i_gid field needs to be updated taking idmapped mounts into account if the filesystem supports it. **Return** true if **inode**'s i_gid field needs to be updated, false if not.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÀh]”hŒ Parameters”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mãhjºubj¿)�”}”(hhh]”(jÄ)�”}”(hŒN``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjßh]”hŒconst struct mnt_idmap *idmap”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MàhjÙubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+idmap of the mount the inode was found from”h]”hŒ+idmap of the mount the inode was found from”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jôh´Màhjõubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jôh´MàhjÖubjÄ)�”}”(hŒ=``const struct iattr *attr`` the new attributes of **inode** ”h]”(jÊ)�”}”(hŒ``const struct iattr *attr``”h]”jÐ)�”}”(hjh]”hŒconst struct iattr *attr”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Máhjubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe new attributes of **inode**”h]”(hŒthe new attributes of ”…”�”}”(hj1h²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j-h´Máhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j-h´MáhjÖubjÄ)�”}”(hŒ2``const struct inode *inode`` the inode to update ”h]”(jÊ)�”}”(hŒ``const struct inode *inode``”h]”jÐ)�”}”(hj_h]”hŒconst struct inode *inode”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MâhjYubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe inode to update”h]”hŒthe inode to update”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jth´Mâhjuubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jth´MâhjÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjºubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjšh]”hŒ Description”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MähjºubhÌ)�”}”(hŒ}Check whether the $inode's i_gid field needs to be updated taking idmapped mounts into account if the filesystem supports it.”h]”hŒCheck whether the $inode’s i_gid field needs to be updated taking idmapped mounts into account if the filesystem supports it.”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MãhjºubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjÁh]”hŒReturn”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MæhjºubhÌ)�”}”(hŒBtrue if **inode**'s i_gid field needs to be updated, false if not.”h]”(hŒtrue if ”…”�”}”(hj×h²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj×ubhŒ3’s i_gid field needs to be updated, false if not.”…”�”}”(hj×h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mçhjºubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhìh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œi_gid_update (C function)”Œc.i_gid_update”hNt”auh1hýhhìh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ`void i_gid_update (const struct mnt_idmap *idmap, const struct iattr *attr, struct inode *inode)”h]”j)�”}”(hŒ_void i_gid_update(const struct mnt_idmap *idmap, const struct iattr *attr, struct inode *inode)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Móubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjh²hh³j&h´MóubjC)�”}”(hŒ i_gid_update”h]”jI)�”}”(hŒ i_gid_update”h]”hŒ i_gid_update”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj5ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjh²hh³j&h´Móubj=)�”}”(hŒN(const struct mnt_idmap *idmap, const struct iattr *attr, struct inode *inode)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjQubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjQubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjQubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjQubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j�Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj;sbŒc.i_gid_update”†”asbuh1hhjQubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjQubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjQubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjMubjC)�”}”(hŒconst struct iattr *attr”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÞubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÞubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÞubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÞubh)�”}”(hhh]”jI)�”}”(hŒiattr”h]”hŒiattr”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j Œmodname”NŒ classname”Njj )�”}”j ]”jªŒc.i_gid_update”†”asbuh1hhjÞubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9 h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÞubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjG h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÞubjI)�”}”(hŒattr”h]”hŒattr”…”�”}”(hjT h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÞubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjMubjC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjm h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhji ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hji ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj‹ h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjˆ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j� Œmodname”NŒ classname”Njj )�”}”j ]”jªŒc.i_gid_update”†”asbuh1hhji ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj© h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hji ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hji ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjÄ h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhji ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjMubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjh²hh³j&h´Móubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjh²hh³j&h´Móubah}”(h]”j ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j&h´Móhj h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒupdate **inode**'s i_gid field”h]”(hŒupdate ”…”�”}”(hjî h²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hjö h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjî ubhŒ’s i_gid field”…”�”}”(hjî h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Móhjë h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj h²hh³j&h´Móubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j!jšj!j›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hXM**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ``const struct iattr *attr`` the new attributes of **inode** ``struct inode *inode`` the inode to update **Description** Safely update **inode**'s i_gid field translating the vfsgid of any idmapped mount into the filesystem kgid.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj"!h]”hŒ Parameters”…”�”}”(hj$!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj !ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M÷hj!ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒN``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjA!h]”hŒconst struct mnt_idmap *idmap”…”�”}”(hjC!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj?!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Môhj;!ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+idmap of the mount the inode was found from”h]”hŒ+idmap of the mount the inode was found from”…”�”}”(hjZ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jV!h´MôhjW!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj;!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jV!h´Môhj8!ubjÄ)�”}”(hŒ=``const struct iattr *attr`` the new attributes of **inode** ”h]”(jÊ)�”}”(hŒ``const struct iattr *attr``”h]”jÐ)�”}”(hjz!h]”hŒconst struct iattr *attr”…”�”}”(hj|!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjx!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mõhjt!ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe new attributes of **inode**”h]”(hŒthe new attributes of ”…”�”}”(hj“!h²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hj›!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj“!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�!h´Mõhj�!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjt!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j�!h´Mõhj8!ubjÄ)�”}”(hŒ,``struct inode *inode`` the inode to update ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjÁ!h]”hŒstruct inode *inode”…”�”}”(hjÃ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¿!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Möhj»!ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe inode to update”h]”hŒthe inode to update”…”�”}”(hjÚ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÖ!h´Möhj×!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj»!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÖ!h´Möhj8!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj!ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjü!h]”hŒ Description”…”�”}”(hjþ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjú!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Møhj!ubhÌ)�”}”(hŒlSafely update **inode**'s i_gid field translating the vfsgid of any idmapped mount into the filesystem kgid.”h]”(hŒSafely update ”…”�”}”(hj"h²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj"ubhŒW’s i_gid field translating the vfsgid of any idmapped mount into the filesystem kgid.”…”�”}”(hj"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M÷hj!ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhìh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œinode_fsuid_set (C function)”Œc.inode_fsuid_set”hNt”auh1hýhhìh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒIvoid inode_fsuid_set (struct inode *inode, const struct mnt_idmap *idmap)”h]”j)�”}”(hŒHvoid inode_fsuid_set(struct inode *inode, const struct mnt_idmap *idmap)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjS"h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjO"h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjb"h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjO"h²hh³ja"h´MubjC)�”}”(hŒinode_fsuid_set”h]”jI)�”}”(hŒinode_fsuid_set”h]”hŒinode_fsuid_set”…”�”}”(hjt"h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjp"ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjO"h²hh³ja"h´Mubj=)�”}”(hŒ4(struct inode *inode, const struct mnt_idmap *idmap)”h]”(jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj�"h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjŒ"ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�"h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjŒ"ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj®"h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj«"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j°"Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjv"sbŒc.inode_fsuid_set”†”asbuh1hhjŒ"ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎ"h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjŒ"ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÜ"h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjŒ"ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjé"h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŒ"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjˆ"ubjC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjþ"ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjþ"ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjþ"ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*#h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjþ"ubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hj;#h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj8#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j=#Œmodname”NŒ classname”Njj )�”}”j ]”jÊ"Œc.inode_fsuid_set”†”asbuh1hhjþ"ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY#h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjþ"ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjg#h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjþ"ubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hjt#h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjþ"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjˆ"ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjO"h²hh³ja"h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjK"h²hh³ja"h´Mubah}”(h]”jF"ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³ja"h´MhjH"h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ1initialize inode's i_uid field with callers fsuid”h]”hŒ3initialize inode’s i_uid field with callers fsuid”…”�”}”(hjž#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mhj›#h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjH"h²hh³ja"h´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j¶#jšj¶#j›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hX-**Parameters** ``struct inode *inode`` inode to initialize ``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from **Description** Initialize the i_uid field of **inode**. If the inode was found/created via an idmapped mount map the caller's fsuid according to **idmap**.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÀ#h]”hŒ Parameters”…”�”}”(hjÂ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¾#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M hjº#ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ,``struct inode *inode`` inode to initialize ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjß#h]”hŒstruct inode *inode”…”�”}”(hjá#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÝ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MhjÙ#ubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode to initialize”h]”hŒinode to initialize”…”�”}”(hjø#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jô#h´Mhjõ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÙ#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jô#h´MhjÖ#ubjÄ)�”}”(hŒN``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj$h]”hŒconst struct mnt_idmap *idmap”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mhj$ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+idmap of the mount the inode was found from”h]”hŒ+idmap of the mount the inode was found from”…”�”}”(hj1$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j-$h´Mhj.$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j-$h´MhjÖ#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjº#ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjS$h]”hŒ Description”…”�”}”(hjU$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjQ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M hjº#ubhÌ)�”}”(hŒŒInitialize the i_uid field of **inode**. If the inode was found/created via an idmapped mount map the caller's fsuid according to **idmap**.”h]”(hŒInitialize the i_uid field of ”…”�”}”(hji$h²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hjq$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hji$ubhŒ]. If the inode was found/created via an idmapped mount map the caller’s fsuid according to ”…”�”}”(hji$h²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hjƒ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hji$ubhŒ.”…”�”}”(hji$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mhjº#ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhìh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œinode_fsgid_set (C function)”Œc.inode_fsgid_set”hNt”auh1hýhhìh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒIvoid inode_fsgid_set (struct inode *inode, const struct mnt_idmap *idmap)”h]”j)�”}”(hŒHvoid inode_fsgid_set(struct inode *inode, const struct mnt_idmap *idmap)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¼$h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¸$h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjË$h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¸$h²hh³jÊ$h´MubjC)�”}”(hŒinode_fsgid_set”h]”jI)�”}”(hŒinode_fsgid_set”h]”hŒinode_fsgid_set”…”�”}”(hjÝ$h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÙ$ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj¸$h²hh³jÊ$h´Mubj=)�”}”(hŒ4(struct inode *inode, const struct mnt_idmap *idmap)”h]”(jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjù$h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjõ$ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjõ$ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j%Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjß$sbŒc.inode_fsgid_set”†”asbuh1hhjõ$ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7%h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjõ$ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjE%h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjõ$ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjR%h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjõ$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjñ$ubjC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjk%h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjg%ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx%h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjg%ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj†%h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjg%ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“%h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjg%ubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hj¤%h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¡%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¦%Œmodname”NŒ classname”Njj )�”}”j ]”j3%Œc.inode_fsgid_set”†”asbuh1hhjg%ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂ%h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjg%ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÐ%h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjg%ubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hjÝ%h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjg%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjñ$ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj¸$h²hh³jÊ$h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj´$h²hh³jÊ$h´Mubah}”(h]”j¯$ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÊ$h´Mhj±$h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ1initialize inode's i_gid field with callers fsgid”h]”hŒ3initialize inode’s i_gid field with callers fsgid”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mhj&h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj±$h²hh³jÊ$h´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j&jšj&j›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hX-**Parameters** ``struct inode *inode`` inode to initialize ``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from **Description** Initialize the i_gid field of **inode**. If the inode was found/created via an idmapped mount map the caller's fsgid according to **idmap**.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj)&h]”hŒ Parameters”…”�”}”(hj+&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj'&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mhj#&ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ,``struct inode *inode`` inode to initialize ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjH&h]”hŒstruct inode *inode”…”�”}”(hjJ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjF&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MhjB&ubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode to initialize”h]”hŒinode to initialize”…”�”}”(hja&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j]&h´Mhj^&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjB&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j]&h´Mhj?&ubjÄ)�”}”(hŒN``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj�&h]”hŒconst struct mnt_idmap *idmap”…”�”}”(hjƒ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mhj{&ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+idmap of the mount the inode was found from”h]”hŒ+idmap of the mount the inode was found from”…”�”}”(hjš&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j–&h´Mhj—&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj{&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j–&h´Mhj?&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj#&ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj¼&h]”hŒ Description”…”�”}”(hj¾&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjº&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mhj#&ubhÌ)�”}”(hŒŒInitialize the i_gid field of **inode**. If the inode was found/created via an idmapped mount map the caller's fsgid according to **idmap**.”h]”(hŒInitialize the i_gid field of ”…”�”}”(hjÒ&h²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hjÚ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÒ&ubhŒ]. If the inode was found/created via an idmapped mount map the caller’s fsgid according to ”…”�”}”(hjÒ&h²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hjì&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÒ&ubhŒ.”…”�”}”(hjÒ&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mhj#&ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhìh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ!fsuidgid_has_mapping (C function)”Œc.fsuidgid_has_mapping”hNt”auh1hýhhìh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒQbool fsuidgid_has_mapping (struct super_block *sb, const struct mnt_idmap *idmap)”h]”j)�”}”(hŒPbool fsuidgid_has_mapping(struct super_block *sb, const struct mnt_idmap *idmap)”h]”(j�)�”}”(hj„h]”hŒbool”…”�”}”(hj%'h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj!'h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M!ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3'h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj!'h²hh³j2'h´M!ubjC)�”}”(hŒfsuidgid_has_mapping”h]”jI)�”}”(hŒfsuidgid_has_mapping”h]”hŒfsuidgid_has_mapping”…”�”}”(hjE'h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjA'ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj!'h²hh³j2'h´M!ubj=)�”}”(hŒ7(struct super_block *sb, const struct mnt_idmap *idmap)”h]”(jC)�”}”(hŒstruct super_block *sb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hja'h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj]'ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn'h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj]'ubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj|'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j�'Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjG'sbŒc.fsuidgid_has_mapping”†”asbuh1hhj]'ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ'h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj]'ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj­'h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj]'ubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hjº'h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj]'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjY'ubjC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjÓ'h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÏ'ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà'h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÏ'ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjî'h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÏ'ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû'h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÏ'ubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hj (h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj (ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j(Œmodname”NŒ classname”Njj )�”}”j ]”j›'Œc.fsuidgid_has_mapping”†”asbuh1hhjÏ'ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*(h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÏ'ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj8(h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÏ'ubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hjE(h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÏ'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjY'ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj!'h²hh³j2'h´M!ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj'h²hh³j2'h´M!ubah}”(h]”j'ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j2'h´M!hj'h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ,check whether caller's fsuid/fsgid is mapped”h]”hŒ.check whether caller’s fsuid/fsgid is mapped”…”�”}”(hjo(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M!hjl(h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj'h²hh³j2'h´M!ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j‡(jšj‡(j›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hXµ**Parameters** ``struct super_block *sb`` the superblock we want a mapping in ``const struct mnt_idmap *idmap`` idmap of the relevant mount **Description** Check whether the caller's fsuid and fsgid have a valid mapping in the s_user_ns of the superblock **sb**. If the caller is on an idmapped mount map the caller's fsuid and fsgid according to the **idmap** first. **Return** true if fsuid and fsgid is mapped, false if not.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj‘(h]”hŒ Parameters”…”�”}”(hj“(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj�(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M%hj‹(ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ?``struct super_block *sb`` the superblock we want a mapping in ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hj°(h]”hŒstruct super_block *sb”…”�”}”(hj²(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj®(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M"hjª(ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ#the superblock we want a mapping in”h]”hŒ#the superblock we want a mapping in”…”�”}”(hjÉ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÅ(h´M"hjÆ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjª(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÅ(h´M"hj§(ubjÄ)�”}”(hŒ>``const struct mnt_idmap *idmap`` idmap of the relevant mount ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjé(h]”hŒconst struct mnt_idmap *idmap”…”�”}”(hjë(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjç(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M#hjã(ubjæ)�”}”(hhh]”hÌ)�”}”(hŒidmap of the relevant mount”h]”hŒidmap of the relevant mount”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jþ(h´M#hjÿ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjã(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jþ(h´M#hj§(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj‹(ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj$)h]”hŒ Description”…”�”}”(hj&)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj")ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M%hj‹(ubhÌ)�”}”(hŒÓCheck whether the caller's fsuid and fsgid have a valid mapping in the s_user_ns of the superblock **sb**. If the caller is on an idmapped mount map the caller's fsuid and fsgid according to the **idmap** first.”h]”(hŒeCheck whether the caller’s fsuid and fsgid have a valid mapping in the s_user_ns of the superblock ”…”�”}”(hj:)h²hh³Nh´Nubj©)�”}”(hŒ**sb**”h]”hŒsb”…”�”}”(hjB)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj:)ubhŒ\. If the caller is on an idmapped mount map the caller’s fsuid and fsgid according to the ”…”�”}”(hj:)h²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hjT)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj:)ubhŒ first.”…”�”}”(hj:)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M$hj‹(ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjo)h]”hŒReturn”…”�”}”(hjq)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjm)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M(hj‹(ubhÌ)�”}”(hŒ0true if fsuid and fsgid is mapped, false if not.”h]”hŒ0true if fsuid and fsgid is mapped, false if not.”…”�”}”(hj…)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M)hj‹(ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhìh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œinode_set_ctime (C function)”Œc.inode_set_ctime”hNt”auh1hýhhìh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒPstruct timespec64 inode_set_ctime (struct inode *inode, time64_t sec, long nsec)”h]”j)�”}”(hŒOstruct timespec64 inode_set_ctime(struct inode *inode, time64_t sec, long nsec)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj´)h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj°)h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M¥ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂ)h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj°)h²hh³jÁ)h´M¥ubh)�”}”(hhh]”jI)�”}”(hŒ timespec64”h]”hŒ timespec64”…”�”}”(hjÓ)h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÐ)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÕ)Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒinode_set_ctime”sbŒc.inode_set_ctime”†”asbuh1hhj°)h²hh³jÁ)h´M¥ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjô)h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj°)h²hh³jÁ)h´M¥ubjC)�”}”(hŒinode_set_ctime”h]”jI)�”}”(hjñ)h]”hŒinode_set_ctime”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj*ubah}”(h]”h ]”(•j[j\eh"]”h$]”h&]”j`jauh1jBhj°)h²hh³jÁ)h´M¥ubj=)�”}”(hŒ.(struct inode *inode, time64_t sec, long nsec)”h]”(jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj!*h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj*ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.*h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj*ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj?*h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj<*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jA*Œmodname”NŒ classname”Njj )�”}”j ]”jï)Œc.inode_set_ctime”†”asbuh1hhj*ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]*h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj*ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjk*h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj*ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjx*h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj*ubjC)�”}”(hŒ time64_t sec”h]”(h)�”}”(hhh]”jI)�”}”(hŒtime64_t”h]”hŒtime64_t”…”�”}”(hj”*h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‘*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j–*Œmodname”NŒ classname”Njj )�”}”j ]”jï)Œc.inode_set_ctime”†”asbuh1hhj�*ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²*h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�*ubjI)�”}”(hŒsec”h]”hŒsec”…”�”}”(hjÀ*h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj*ubjC)�”}”(hŒ long nsec”h]”(j�)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÙ*h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÕ*ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç*h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÕ*ubjI)�”}”(hŒnsec”h]”hŒnsec”…”�”}”(hjõ*h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÕ*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj*ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj°)h²hh³jÁ)h´M¥ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj¬)h²hh³jÁ)h´M¥ubah}”(h]”j§)ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÁ)h´M¥hj©)h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒset the ctime in the inode”h]”hŒset the ctime in the inode”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M¥hj+h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj©)h²hh³jÁ)h´M¥ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j7+jšj7+j›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hŒÝ**Parameters** ``struct inode *inode`` inode in which to set the ctime ``time64_t sec`` tv_sec value to set ``long nsec`` tv_nsec value to set **Description** Set the ctime in **inode** to { **sec**, **nsec** }”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjA+h]”hŒ Parameters”…”�”}”(hjC+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj?+ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M©hj;+ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ8``struct inode *inode`` inode in which to set the ctime ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj`+h]”hŒstruct inode *inode”…”�”}”(hjb+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj^+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M¦hjZ+ubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode in which to set the ctime”h]”hŒinode in which to set the ctime”…”�”}”(hjy+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ju+h´M¦hjv+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjZ+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³ju+h´M¦hjW+ubjÄ)�”}”(hŒ%``time64_t sec`` tv_sec value to set ”h]”(jÊ)�”}”(hŒ``time64_t sec``”h]”jÐ)�”}”(hj™+h]”hŒ time64_t sec”…”�”}”(hj›+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj—+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M§hj“+ubjæ)�”}”(hhh]”hÌ)�”}”(hŒtv_sec value to set”h]”hŒtv_sec value to set”…”�”}”(hj²+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j®+h´M§hj¯+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj“+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j®+h´M§hjW+ubjÄ)�”}”(hŒ#``long nsec`` tv_nsec value to set ”h]”(jÊ)�”}”(hŒ ``long nsec``”h]”jÐ)�”}”(hjÒ+h]”hŒ long nsec”…”�”}”(hjÔ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÐ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M¨hjÌ+ubjæ)�”}”(hhh]”hÌ)�”}”(hŒtv_nsec value to set”h]”hŒtv_nsec value to set”…”�”}”(hjë+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jç+h´M¨hjè+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÌ+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jç+h´M¨hjW+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj;+ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj ,h]”hŒ Description”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mªhj;+ubhÌ)�”}”(hŒ3Set the ctime in **inode** to { **sec**, **nsec** }”h]”(hŒSet the ctime in ”…”�”}”(hj#,h²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hj+,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj#,ubhŒ to { ”…”�”}”(hj#,h²hh³Nh´Nubj©)�”}”(hŒ**sec**”h]”hŒsec”…”�”}”(hj=,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj#,ubhŒ, ”…”�”}”(hj#,h²hh³Nh´Nubj©)�”}”(hŒ**nsec**”h]”hŒnsec”…”�”}”(hjO,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj#,ubhŒ }”…”�”}”(hj#,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M©hj;+ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhìh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œfile_write_started (C function)”Œc.file_write_started”hNt”auh1hýhhìh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ1bool file_write_started (const struct file *file)”h]”j)�”}”(hŒ0bool file_write_started(const struct file *file)”h]”(j�)�”}”(hj„h]”hŒbool”…”�”}”(hjˆ,h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj„,h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÃubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–,h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj„,h²hh³j•,h´MÃubjC)�”}”(hŒfile_write_started”h]”jI)�”}”(hŒfile_write_started”h]”hŒfile_write_started”…”�”}”(hj¨,h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¤,ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj„,h²hh³j•,h´MÃubj=)�”}”(hŒ(const struct file *file)”h]”jC)�”}”(hŒconst struct file *file”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjÄ,h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÀ,ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑ,h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÀ,ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjß,h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÀ,ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì,h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÀ,ubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjý,h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjú,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÿ,Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjª,sbŒc.file_write_started”†”asbuh1hhjÀ,ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÀ,ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj+-h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÀ,ubjI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj8-h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÀ,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¼,ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj„,h²hh³j•,h´MÃubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj€,h²hh³j•,h´MÃubah}”(h]”j{,ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j•,h´MÃhj},h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ check if SB_FREEZE_WRITE is held”h]”hŒ check if SB_FREEZE_WRITE is held”…”�”}”(hjb-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÃhj_-h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj},h²hh³j•,h´MÃubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jz-jšjz-j›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hŒî**Parameters** ``const struct file *file`` the file we write to **Description** May be false positive with !CONFIG_LOCKDEP/LOCK_STATE_UNKNOWN. May be false positive with !S_ISREG, because file_start_write() has no effect on !S_ISREG.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj„-h]”hŒ Parameters”…”�”}”(hj†-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‚-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÇhj~-ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ1``const struct file *file`` the file we write to ”h]”(jÊ)�”}”(hŒ``const struct file *file``”h]”jÐ)�”}”(hj£-h]”hŒconst struct file *file”…”�”}”(hj¥-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¡-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÄhj�-ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe file we write to”h]”hŒthe file we write to”…”�”}”(hj¼-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¸-h´MÄhj¹-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj�-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¸-h´MÄhjš-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj~-ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÞ-h]”hŒ Description”…”�”}”(hjà-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÜ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÆhj~-ubhÌ)�”}”(hŒ™May be false positive with !CONFIG_LOCKDEP/LOCK_STATE_UNKNOWN. May be false positive with !S_ISREG, because file_start_write() has no effect on !S_ISREG.”h]”hŒ™May be false positive with !CONFIG_LOCKDEP/LOCK_STATE_UNKNOWN. May be false positive with !S_ISREG, because file_start_write() has no effect on !S_ISREG.”…”�”}”(hjô-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÅhj~-ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhìh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ#file_write_not_started (C function)”Œc.file_write_not_started”hNt”auh1hýhhìh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ5bool file_write_not_started (const struct file *file)”h]”j)�”}”(hŒ4bool file_write_not_started(const struct file *file)”h]”(j�)�”}”(hj„h]”hŒbool”…”�”}”(hj#.h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj.h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÒubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1.h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj.h²hh³j0.h´MÒubjC)�”}”(hŒfile_write_not_started”h]”jI)�”}”(hŒfile_write_not_started”h]”hŒfile_write_not_started”…”�”}”(hjC.h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj?.ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj.h²hh³j0.h´MÒubj=)�”}”(hŒ(const struct file *file)”h]”jC)�”}”(hŒconst struct file *file”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj_.h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj[.ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjl.h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj[.ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjz.h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj[.ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡.h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj[.ubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj˜.h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj•.ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jš.Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjE.sbŒc.file_write_not_started”†”asbuh1hhj[.ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸.h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj[.ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÆ.h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj[.ubjI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjÓ.h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj[.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjW.ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj.h²hh³j0.h´MÒubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj.h²hh³j0.h´MÒubah}”(h]”j.ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j0.h´MÒhj.h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ$check if SB_FREEZE_WRITE is not held”h]”hŒ$check if SB_FREEZE_WRITE is not held”…”�”}”(hjý.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÒhjú.h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj.h²hh³j0.h´MÒubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j/jšj/j›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hŒî**Parameters** ``const struct file *file`` the file we write to **Description** May be false positive with !CONFIG_LOCKDEP/LOCK_STATE_UNKNOWN. May be false positive with !S_ISREG, because file_start_write() has no effect on !S_ISREG.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj/h]”hŒ Parameters”…”�”}”(hj!/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÖhj/ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ1``const struct file *file`` the file we write to ”h]”(jÊ)�”}”(hŒ``const struct file *file``”h]”jÐ)�”}”(hj>/h]”hŒconst struct file *file”…”�”}”(hj@/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjah"]”h$]”h&]”uh1j1hjº/h²hh³jË/h´MÛubjC)�”}”(hŒ renamedata”h]”jI)�”}”(hj¸/h]”hŒ renamedata”…”�”}”(hjÞ/h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÚ/ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjº/h²hh³jË/h´MÛubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj¶/h²hh³jË/h´MÛubah}”(h]”j±/ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jË/h´MÛhj³/h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ.contains all information required for renaming”h]”hŒ.contains all information required for renaming”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Möhjý/h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj³/h²hh³jË/h´MÛubeh}”(h]”h ]”(j“Œstruct”eh"]”h$]”h&]”j˜j“j™j0jšj0j›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hXT**Definition**:: struct renamedata { const struct mnt_idmap *mnt_idmap; struct dentry *old_parent; struct dentry *old_dentry; struct dentry *new_parent; struct dentry *new_dentry; struct delegated_inode *delegated_inode; unsigned int flags; }; **Members** ``mnt_idmap`` idmap of the mount in which the rename is happening. ``old_parent`` parent of source ``old_dentry`` source ``new_parent`` parent of destination ``new_dentry`` destination ``delegated_inode`` returns an inode needing a delegation break ``flags`` rename flags”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j©)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj$0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj 0ubhŒ:”…”�”}”(hj 0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Múhj0ubj )�”}”(hŒþstruct renamedata { const struct mnt_idmap *mnt_idmap; struct dentry *old_parent; struct dentry *old_dentry; struct dentry *new_parent; struct dentry *new_dentry; struct delegated_inode *delegated_inode; unsigned int flags; };”h]”hŒþstruct renamedata { const struct mnt_idmap *mnt_idmap; struct dentry *old_parent; struct dentry *old_dentry; struct dentry *new_parent; struct dentry *new_dentry; struct delegated_inode *delegated_inode; unsigned int flags; };”…”�”}”hj=0sbah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j h³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mühj0ubhÌ)�”}”(hŒ **Members**”h]”j©)�”}”(hjN0h]”hŒMembers”…”�”}”(hjP0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjL0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mhj0ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒC``mnt_idmap`` idmap of the mount in which the rename is happening. ”h]”(jÊ)�”}”(hŒ ``mnt_idmap``”h]”jÐ)�”}”(hjm0h]”hŒ mnt_idmap”…”�”}”(hjo0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjk0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Møhjg0ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ4idmap of the mount in which the rename is happening.”h]”hŒ4idmap of the mount in which the rename is happening.”…”�”}”(hj†0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‚0h´Møhjƒ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjg0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‚0h´Møhjd0ubjÄ)�”}”(hŒ ``old_parent`` parent of source ”h]”(jÊ)�”}”(hŒ``old_parent``”h]”jÐ)�”}”(hj¦0h]”hŒ old_parent”…”�”}”(hj¨0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¤0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mùhj 0ubjæ)�”}”(hhh]”hÌ)�”}”(hŒparent of source”h]”hŒparent of source”…”�”}”(hj¿0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j»0h´Mùhj¼0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj 0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j»0h´Mùhjd0ubjÄ)�”}”(hŒ``old_dentry`` source ”h]”(jÊ)�”}”(hŒ``old_dentry``”h]”jÐ)�”}”(hjß0h]”hŒ old_dentry”…”�”}”(hjá0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÝ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MúhjÙ0ubjæ)�”}”(hhh]”hÌ)�”}”(hŒsource”h]”hŒsource”…”�”}”(hjø0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jô0h´Múhjõ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÙ0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jô0h´Múhjd0ubjÄ)�”}”(hŒ%``new_parent`` parent of destination ”h]”(jÊ)�”}”(hŒ``new_parent``”h]”jÐ)�”}”(hj1h]”hŒ new_parent”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mûhj1ubjæ)�”}”(hhh]”hÌ)�”}”(hŒparent of destination”h]”hŒparent of destination”…”�”}”(hj11h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j-1h´Mûhj.1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j-1h´Mûhjd0ubjÄ)�”}”(hŒ``new_dentry`` destination ”h]”(jÊ)�”}”(hŒ``new_dentry``”h]”jÐ)�”}”(hjQ1h]”hŒ new_dentry”…”�”}”(hjS1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjO1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MühjK1ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ destination”h]”hŒ destination”…”�”}”(hjj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jf1h´Mühjg1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjK1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jf1h´Mühjd0ubjÄ)�”}”(hŒ@``delegated_inode`` returns an inode needing a delegation break ”h]”(jÊ)�”}”(hŒ``delegated_inode``”h]”jÐ)�”}”(hjŠ1h]”hŒdelegated_inode”…”�”}”(hjŒ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjˆ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mýhj„1ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+returns an inode needing a delegation break”h]”hŒ+returns an inode needing a delegation break”…”�”}”(hj£1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jŸ1h´Mýhj 1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj„1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jŸ1h´Mýhjd0ubjÄ)�”}”(hŒ``flags`` rename flags”h]”(jÊ)�”}”(hŒ ``flags``”h]”jÐ)�”}”(hjÃ1h]”hŒflags”…”�”}”(hjÅ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÁ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mýhj½1ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ rename flags”h]”hŒ rename flags”…”�”}”(hjÜ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MþhjÙ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj½1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jØ1h´Mýhjd0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj0ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhìh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œis_mgtime (C function)”Œ c.is_mgtime”hNt”auh1hýhhìh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ*bool is_mgtime (const struct inode *inode)”h]”j)�”}”(hŒ)bool is_mgtime(const struct inode *inode)”h]”(j�)�”}”(hj„h]”hŒbool”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj2h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+2h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj2h²hh³j*2h´M ubjC)�”}”(hŒ is_mgtime”h]”jI)�”}”(hŒ is_mgtime”h]”hŒ is_mgtime”…”�”}”(hj=2h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj92ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj2h²hh³j*2h´M ubj=)�”}”(hŒ(const struct inode *inode)”h]”jC)�”}”(hŒconst struct inode *inode”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjY2h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjU2ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf2h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjU2ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjt2h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjU2ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�2h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjU2ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj’2h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j”2Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj?2sbŒ c.is_mgtime”†”asbuh1hhjU2ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²2h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjU2ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÀ2h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjU2ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjÍ2h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjU2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjQ2ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj2h²hh³j*2h´M ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj2h²hh³j*2h´M ubah}”(h]”j2ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j*2h´M hj2h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ)is this inode using multigrain timestamps”h]”hŒ)is this inode using multigrain timestamps”…”�”}”(hj÷2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M hjô2h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj2h²hh³j*2h´M ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j3jšj3j›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hŒ¯**Parameters** ``const struct inode *inode`` inode to test for multigrain timestamps **Description** Return true if the inode uses multigrain timestamps, false otherwise.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj3h]”hŒ Parameters”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M hj3ubj¿)�”}”(hhh]”jÄ)�”}”(hŒF``const struct inode *inode`` inode to test for multigrain timestamps ”h]”(jÊ)�”}”(hŒ``const struct inode *inode``”h]”jÐ)�”}”(hj83h]”hŒconst struct inode *inode”…”�”}”(hj:3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj63ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M hj23ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ'inode to test for multigrain timestamps”h]”hŒ'inode to test for multigrain timestamps”…”�”}”(hjQ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jM3h´M hjN3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj23ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jM3h´M hj/3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj3ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjs3h]”hŒ Description”…”�”}”(hju3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjq3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M hj3ubhÌ)�”}”(hŒEReturn true if the inode uses multigrain timestamps, false otherwise.”h]”hŒEReturn true if the inode uses multigrain timestamps, false otherwise.”…”�”}”(hj‰3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M hj3ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhìh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œiput_if_not_last (C function)”Œc.iput_if_not_last”hNt”auh1hýhhìh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ+bool iput_if_not_last (struct inode *inode)”h]”j)�”}”(hŒ*bool iput_if_not_last(struct inode *inode)”h]”(j�)�”}”(hj„h]”hŒbool”…”�”}”(hj¸3h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj´3h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M€ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆ3h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj´3h²hh³jÅ3h´M€ ubjC)�”}”(hŒiput_if_not_last”h]”jI)�”}”(hŒiput_if_not_last”h]”hŒiput_if_not_last”…”�”}”(hjØ3h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÔ3ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj´3h²hh³jÅ3h´M€ ubj=)�”}”(hŒ(struct inode *inode)”h]”jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjô3h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjð3ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjð3ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j4Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÚ3sbŒc.iput_if_not_last”†”asbuh1hhjð3ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj24h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjð3ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj@4h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjð3ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjM4h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjð3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjì3ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj´3h²hh³jÅ3h´M€ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj°3h²hh³jÅ3h´M€ ubah}”(h]”j«3ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÅ3h´M€ hj­3h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ6drop an inode reference only if it is not the last one”h]”hŒ6drop an inode reference only if it is not the last one”…”�”}”(hjw4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M€ hjt4h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj­3h²hh³jÅ3h´M€ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j�4jšj�4j›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hŒØ**Parameters** ``struct inode *inode`` inode to put **Description** Returns true if the reference was dropped, false if this was the last reference and the caller must arrange for final iput() in a safe context.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj™4h]”hŒ Parameters”…”�”}”(hj›4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj—4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M„ hj“4ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ%``struct inode *inode`` inode to put ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj¸4h]”hŒstruct inode *inode”…”�”}”(hjº4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¶4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M� hj²4ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ inode to put”h]”hŒ inode to put”…”�”}”(hjÑ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÍ4h´M� hjÎ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj²4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÍ4h´M� hj¯4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj“4ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjó4h]”hŒ Description”…”�”}”(hjõ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjñ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mƒ hj“4ubhÌ)�”}”(hŒ�Returns true if the reference was dropped, false if this was the last reference and the caller must arrange for final iput() in a safe context.”h]”hŒ�Returns true if the reference was dropped, false if this was the last reference and the caller must arrange for final iput() in a safe context.”…”�”}”(hj 5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M‚ hj“4ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhìh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œis_idmapped_mnt (C function)”Œc.is_idmapped_mnt”hNt”auh1hýhhìh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ1bool is_idmapped_mnt (const struct vfsmount *mnt)”h]”j)�”}”(hŒ0bool is_idmapped_mnt(const struct vfsmount *mnt)”h]”(j�)�”}”(hj„h]”hŒbool”…”�”}”(hj85h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj45h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M² ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF5h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj45h²hh³jE5h´M² ubjC)�”}”(hŒis_idmapped_mnt”h]”jI)�”}”(hŒis_idmapped_mnt”h]”hŒis_idmapped_mnt”…”�”}”(hjX5h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjT5ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj45h²hh³jE5h´M² ubj=)�”}”(hŒ(const struct vfsmount *mnt)”h]”jC)�”}”(hŒconst struct vfsmount *mnt”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjt5h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjp5ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�5h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjp5ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj�5h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjp5ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœ5h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjp5ubh)�”}”(hhh]”jI)�”}”(hŒvfsmount”h]”hŒvfsmount”…”�”}”(hj­5h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjª5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¯5Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjZ5sbŒc.is_idmapped_mnt”†”asbuh1hhjp5ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍ5h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjp5ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÛ5h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjp5ubjI)�”}”(hŒmnt”h]”hŒmnt”…”�”}”(hjè5h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjp5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjl5ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj45h²hh³jE5h´M² ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj05h²hh³jE5h´M² ubah}”(h]”j+5ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jE5h´M² hj-5h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒcheck whether a mount is mapped”h]”hŒcheck whether a mount is mapped”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M² hj6h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj-5h²hh³jE5h´M² ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j*6jšj*6j›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hŒØ**Parameters** ``const struct vfsmount *mnt`` the mount to check **Description** If **mnt** has an non **nop_mnt_idmap** attached to it then **mnt** is mapped. **Return** true if mount is mapped, false if not.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj46h]”hŒ Parameters”…”�”}”(hj66h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj26ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M¶ hj.6ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ2``const struct vfsmount *mnt`` the mount to check ”h]”(jÊ)�”}”(hŒ``const struct vfsmount *mnt``”h]”jÐ)�”}”(hjS6h]”hŒconst struct vfsmount *mnt”…”�”}”(hjU6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjQ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M³ hjM6ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe mount to check”h]”hŒthe mount to check”…”�”}”(hjl6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh6h´M³ hji6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjM6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jh6h´M³ hjJ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj.6ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjŽ6h]”hŒ Description”…”�”}”(hj�6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjŒ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mµ hj.6ubhÌ)�”}”(hŒNIf **mnt** has an non **nop_mnt_idmap** attached to it then **mnt** is mapped.”h]”(hŒIf ”…”�”}”(hj¤6h²hh³Nh´Nubj©)�”}”(hŒ**mnt**”h]”hŒmnt”…”�”}”(hj¬6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¤6ubhŒ has an non ”…”�”}”(hj¤6h²hh³Nh´Nubj©)�”}”(hŒ**nop_mnt_idmap**”h]”hŒ nop_mnt_idmap”…”�”}”(hj¾6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¤6ubhŒ attached to it then ”…”�”}”(hj¤6h²hh³Nh´Nubj©)�”}”(hŒ**mnt**”h]”hŒmnt”…”�”}”(hjÐ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¤6ubhŒ is mapped.”…”�”}”(hj¤6h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M´ hj.6ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjë6h]”hŒReturn”…”�”}”(hjí6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjé6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M¶ hj.6ubhÌ)�”}”(hŒ&true if mount is mapped, false if not.”h]”hŒ&true if mount is mapped, false if not.”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M· hj.6ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhìh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œfile_start_write (C function)”Œc.file_start_write”hNt”auh1hýhhìh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ)void file_start_write (struct file *file)”h]”j)�”}”(hŒ(void file_start_write(struct file *file)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj07h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj,7h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÀ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?7h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj,7h²hh³j>7h´MÀ ubjC)�”}”(hŒfile_start_write”h]”jI)�”}”(hŒfile_start_write”h]”hŒfile_start_write”…”�”}”(hjQ7h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjM7ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj,7h²hh³j>7h´MÀ ubj=)�”}”(hŒ(struct file *file)”h]”jC)�”}”(hŒstruct file *file”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjm7h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhji7ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz7h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hji7ubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj‹7h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjˆ7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j�7Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjS7sbŒc.file_start_write”†”asbuh1hhji7ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«7h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hji7ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¹7h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hji7ubjI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjÆ7h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhji7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhje7ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj,7h²hh³j>7h´MÀ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj(7h²hh³j>7h´MÀ ubah}”(h]”j#7ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j>7h´MÀ hj%7h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ4get write access to a superblock for regular file io”h]”hŒ4get write access to a superblock for regular file io”…”�”}”(hjð7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÀ hjí7h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj%7h²hh³j>7h´MÀ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j8jšj8j›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hŒÔ**Parameters** ``struct file *file`` the file we want to write to **Description** This is a variant of sb_start_write() which is a noop on non-regular file. Should be matched with a call to file_end_write().”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj8h]”hŒ Parameters”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÄ hj 8ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ3``struct file *file`` the file we want to write to ”h]”(jÊ)�”}”(hŒ``struct file *file``”h]”jÐ)�”}”(hj18h]”hŒstruct file *file”…”�”}”(hj38h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj/8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÁ hj+8ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe file we want to write to”h]”hŒthe file we want to write to”…”�”}”(hjJ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jF8h´MÁ hjG8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj+8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jF8h´MÁ hj(8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj 8ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjl8h]”hŒ Description”…”�”}”(hjn8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mà hj 8ubhÌ)�”}”(hŒ}This is a variant of sb_start_write() which is a noop on non-regular file. Should be matched with a call to file_end_write().”h]”hŒ}This is a variant of sb_start_write() which is a noop on non-regular file. Should be matched with a call to file_end_write().”…”�”}”(hj‚8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M hj 8ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhìh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œfile_end_write (C function)”Œc.file_end_write”hNt”auh1hýhhìh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ'void file_end_write (struct file *file)”h]”j)�”}”(hŒ&void file_end_write(struct file *file)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj±8h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj­8h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÕ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀ8h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj­8h²hh³j¿8h´MÕ ubjC)�”}”(hŒfile_end_write”h]”jI)�”}”(hŒfile_end_write”h]”hŒfile_end_write”…”�”}”(hjÒ8h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÎ8ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj­8h²hh³j¿8h´MÕ ubj=)�”}”(hŒ(struct file *file)”h]”jC)�”}”(hŒstruct file *file”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjî8h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjê8ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû8h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjê8ubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj 9h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj 9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j9Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÔ8sbŒc.file_end_write”†”asbuh1hhjê8ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,9h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjê8ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj:9h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjê8ubjI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjG9h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjê8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjæ8ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj­8h²hh³j¿8h´MÕ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj©8h²hh³j¿8h´MÕ ubah}”(h]”j¤8ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j¿8h´MÕ hj¦8h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ3drop write access to a superblock of a regular file”h]”hŒ3drop write access to a superblock of a regular file”…”�”}”(hjq9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÕ hjn9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¦8h²hh³j¿8h´MÕ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j‰9jšj‰9j›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hŒƒ**Parameters** ``struct file *file`` the file we wrote to **Description** Should be matched with a call to file_start_write().”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj“9h]”hŒ Parameters”…”�”}”(hj•9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‘9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÙ hj�9ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ+``struct file *file`` the file we wrote to ”h]”(jÊ)�”}”(hŒ``struct file *file``”h]”jÐ)�”}”(hj²9h]”hŒstruct file *file”…”�”}”(hj´9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj°9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÖ hj¬9ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe file we wrote to”h]”hŒthe file we wrote to”…”�”}”(hjË9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÇ9h´MÖ hjÈ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¬9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÇ9h´MÖ hj©9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj�9ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjí9h]”hŒ Description”…”�”}”(hjï9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjë9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MØ hj�9ubhÌ)�”}”(hŒ4Should be matched with a call to file_start_write().”h]”hŒ4Should be matched with a call to file_start_write().”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M× hj�9ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhìh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œkiocb_start_write (C function)”Œc.kiocb_start_write”hNt”auh1hýhhìh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ+void kiocb_start_write (struct kiocb *iocb)”h]”j)�”}”(hŒ*void kiocb_start_write(struct kiocb *iocb)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj2:h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj.:h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mâ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjA:h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj.:h²hh³j@:h´Mâ ubjC)�”}”(hŒkiocb_start_write”h]”jI)�”}”(hŒkiocb_start_write”h]”hŒkiocb_start_write”…”�”}”(hjS:h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjO:ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj.:h²hh³j@:h´Mâ ubj=)�”}”(hŒ(struct kiocb *iocb)”h]”jC)�”}”(hŒstruct kiocb *iocb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjo:h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjk:ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|:h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjk:ubh)�”}”(hhh]”jI)�”}”(hŒkiocb”h]”hŒkiocb”…”�”}”(hj�:h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŠ:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j�:Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjU:sbŒc.kiocb_start_write”†”asbuh1hhjk:ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­:h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjk:ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj»:h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjk:ubjI)�”}”(hŒiocb”h]”hŒiocb”…”�”}”(hjÈ:h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjk:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjg:ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj.:h²hh³j@:h´Mâ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj*:h²hh³j@:h´Mâ ubah}”(h]”j%:ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j@:h´Mâ hj':h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ2get write access to a superblock for async file io”h]”hŒ2get write access to a superblock for async file io”…”�”}”(hjò:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mâ hjï:h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj':h²hh³j@:h´Mâ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j ;jšj ;j›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hŒÝ**Parameters** ``struct kiocb *iocb`` the io context we want to submit the write with **Description** This is a variant of sb_start_write() for async io submission. Should be matched with a call to kiocb_end_write().”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj;h]”hŒ Parameters”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mæ hj;ubj¿)�”}”(hhh]”jÄ)�”}”(hŒG``struct kiocb *iocb`` the io context we want to submit the write with ”h]”(jÊ)�”}”(hŒ``struct kiocb *iocb``”h]”jÐ)�”}”(hj3;h]”hŒstruct kiocb *iocb”…”�”}”(hj5;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj1;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mã hj-;ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ/the io context we want to submit the write with”h]”hŒ/the io context we want to submit the write with”…”�”}”(hjL;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jH;h´Mã hjI;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj-;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jH;h´Mã hj*;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj;ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjn;h]”hŒ Description”…”�”}”(hjp;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjl;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Må hj;ubhÌ)�”}”(hŒrThis is a variant of sb_start_write() for async io submission. Should be matched with a call to kiocb_end_write().”h]”hŒrThis is a variant of sb_start_write() for async io submission. Should be matched with a call to kiocb_end_write().”…”�”}”(hj„;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mä hj;ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhìh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œkiocb_end_write (C function)”Œc.kiocb_end_write”hNt”auh1hýhhìh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ)void kiocb_end_write (struct kiocb *iocb)”h]”j)�”}”(hŒ(void kiocb_end_write(struct kiocb *iocb)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj³;h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¯;h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mõ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂ;h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¯;h²hh³jÁ;h´Mõ ubjC)�”}”(hŒkiocb_end_write”h]”jI)�”}”(hŒkiocb_end_write”h]”hŒkiocb_end_write”…”�”}”(hjÔ;h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÐ;ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj¯;h²hh³jÁ;h´Mõ ubj=)�”}”(hŒ(struct kiocb *iocb)”h]”jC)�”}”(hŒstruct kiocb *iocb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjð;h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjì;ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjý;h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjì;ubh)�”}”(hhh]”jI)�”}”(hŒkiocb”h]”hŒkiocb”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj <ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j<Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÖ;sbŒc.kiocb_end_write”†”asbuh1hhjì;ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.<h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjì;ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj<<h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjì;ubjI)�”}”(hŒiocb”h]”hŒiocb”…”�”}”(hjI<h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjì;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjè;ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj¯;h²hh³jÁ;h´Mõ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj«;h²hh³jÁ;h´Mõ ubah}”(h]”j¦;ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÁ;h´Mõ hj¨;h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ5drop write access to a superblock after async file io”h]”hŒ5drop write access to a superblock after async file io”…”�”}”(hjs<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mõ hjp<h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¨;h²hh³jÁ;h´Mõ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j‹<jšj‹<j›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hŒ›**Parameters** ``struct kiocb *iocb`` the io context we sumbitted the write with **Description** Should be matched with a call to kiocb_start_write().”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj•<h]”hŒ Parameters”…”�”}”(hj—<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj“<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mù hj�<ubj¿)�”}”(hhh]”jÄ)�”}”(hŒB``struct kiocb *iocb`` the io context we sumbitted the write with ”h]”(jÊ)�”}”(hŒ``struct kiocb *iocb``”h]”jÐ)�”}”(hj´<h]”hŒstruct kiocb *iocb”…”�”}”(hj¶<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj²<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mö hj®<ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ*the io context we sumbitted the write with”h]”hŒ*the io context we sumbitted the write with”…”�”}”(hjÍ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÉ<h´Mö hjÊ<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj®<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÉ<h´Mö hj«<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj�<ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjï<h]”hŒ Description”…”�”}”(hjñ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjí<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mø hj�<ubhÌ)�”}”(hŒ5Should be matched with a call to kiocb_start_write().”h]”hŒ5Should be matched with a call to kiocb_start_write().”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M÷ hj�<ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhìh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œname_is_dot_dotdot (C function)”Œc.name_is_dot_dotdot”hNt”auh1hýhhìh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ6bool name_is_dot_dotdot (const char *name, size_t len)”h]”j)�”}”(hŒ5bool name_is_dot_dotdot(const char *name, size_t len)”h]”(j�)�”}”(hj„h]”hŒbool”…”�”}”(hj4=h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj0=h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mz ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjB=h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj0=h²hh³jA=h´Mz ubjC)�”}”(hŒname_is_dot_dotdot”h]”jI)�”}”(hŒname_is_dot_dotdot”h]”hŒname_is_dot_dotdot”…”�”}”(hjT=h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjP=ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj0=h²hh³jA=h´Mz ubj=)�”}”(hŒ(const char *name, size_t len)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjp=h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjl=ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}=h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjl=ubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj‹=h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjl=ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™=h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjl=ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj§=h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjl=ubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj´=h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjl=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjh=ubjC)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjÐ=h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÍ=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÒ=Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjV=sbŒc.name_is_dot_dotdot”†”asbuh1hhjÉ=ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð=h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÉ=ubjI)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjþ=h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÉ=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjh=ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj0=h²hh³jA=h´Mz ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj,=h²hh³jA=h´Mz ubah}”(h]”j'=ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jA=h´Mz hj)=h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ,returns true only if **name** is "." or ".."”h]”(hŒreturns true only if ”…”�”}”(hj(>h²hh³Nh´Nubj©)�”}”(hŒ**name**”h]”hŒname”…”�”}”(hj0>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj(>ubhŒ is “.â€� or “..â€�”…”�”}”(hj(>h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mz hj%>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj)=h²hh³jA=h´Mz ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jR>jšjR>j›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hŒi**Parameters** ``const char *name`` file name to check ``size_t len`` length of file name, in bytes”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj\>h]”hŒ Parameters”…”�”}”(hj^>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjZ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M~ hjV>ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ(``const char *name`` file name to check ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hj{>h]”hŒconst char *name”…”�”}”(hj}>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjy>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M{ hju>ubjæ)�”}”(hhh]”hÌ)�”}”(hŒfile name to check”h]”hŒfile name to check”…”�”}”(hj”>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�>h´M{ hj‘>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhju>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j�>h´M{ hjr>ubjÄ)�”}”(hŒ,``size_t len`` length of file name, in bytes”h]”(jÊ)�”}”(hŒ``size_t len``”h]”jÐ)�”}”(hj´>h]”hŒ size_t len”…”�”}”(hj¶>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj²>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M} hj®>ubjæ)�”}”(hhh]”hÌ)�”}”(hŒlength of file name, in bytes”h]”hŒlength of file name, in bytes”…”�”}”(hjÍ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M| hjÊ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj®>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÉ>h´M} hjr>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjV>ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhìh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ!name_contains_dotdot (C function)”Œc.name_contains_dotdot”hNt”auh1hýhhìh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ,bool name_contains_dotdot (const char *name)”h]”j)�”}”(hŒ+bool name_contains_dotdot(const char *name)”h]”(j�)�”}”(hj„h]”hŒbool”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj ?h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M… ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ?h²hh³j?h´M… ubjC)�”}”(hŒname_contains_dotdot”h]”jI)�”}”(hŒname_contains_dotdot”h]”hŒname_contains_dotdot”…”�”}”(hj.?h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj*?ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj ?h²hh³j?h´M… ubj=)�”}”(hŒ(const char *name)”h]”jC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjJ?h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjF?ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW?h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjF?ubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hje?h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjF?ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjs?h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjF?ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj�?h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjF?ubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hjŽ?h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjF?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjB?ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj ?h²hh³j?h´M… ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj?h²hh³j?h´M… ubah}”(h]”j?ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j?h´M… hj?h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ2check if a file name contains ".." path components”h]”hŒ6check if a file name contains “..â€� path components”…”�”}”(hj¸?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M… hjµ?h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj?h²hh³j?h´M… ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÐ?jšjÐ?j›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hŒƒ**Parameters** ``const char *name`` File path string to check Search for ".." surrounded by either '/' or start/end of string.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÚ?h]”hŒ Parameters”…”�”}”(hjÜ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjØ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M‰ hjÔ?ubj¿)�”}”(hhh]”jÄ)�”}”(hŒo``const char *name`` File path string to check Search for ".." surrounded by either '/' or start/end of string.”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hjù?h]”hŒconst char *name”…”�”}”(hjû?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj÷?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M† hjó?ubjæ)�”}”(hhh]”hÌ)�”}”(hŒZFile path string to check Search for ".." surrounded by either '/' or start/end of string.”h]”hŒbFile path string to check Search for “..â€� surrounded by either ‘/’ or start/end of string.”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j@h´M† hj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjó?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j@h´M† hjð?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÔ?ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhìh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œinode_dio_begin (C function)”Œc.inode_dio_begin”hNt”auh1hýhhìh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ*void inode_dio_begin (struct inode *inode)”h]”j)�”}”(hŒ)void inode_dio_begin(struct inode *inode)”h]”(j�)�”•}”(hŒvoid”h]”hŒvoid”…”�”}”(hjR@h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjN@h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mf ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hja@h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjN@h²hh³j`@h´Mf ubjC)�”}”(hŒinode_dio_begin”h]”jI)�”}”(hŒinode_dio_begin”h]”hŒinode_dio_begin”…”�”}”(hjs@h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjo@ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjN@h²hh³j`@h´Mf ubj=)�”}”(hŒ(struct inode *inode)”h]”jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj�@h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj‹@ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœ@h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‹@ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj­@h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjª@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¯@Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jju@sbŒc.inode_dio_begin”†”asbuh1hhj‹@ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍ@h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‹@ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÛ@h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj‹@ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjè@h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‹@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj‡@ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjN@h²hh³j`@h´Mf ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjJ@h²hh³j`@h´Mf ubah}”(h]”jE@ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j`@h´Mf hjG@h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ%signal start of a direct I/O requests”h]”hŒ%signal start of a direct I/O requests”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mf hjAh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjG@h²hh³j`@h´Mf ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j*Ajšj*Aj›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hŒå**Parameters** ``struct inode *inode`` inode the direct I/O happens on **Description** This is called once we've finished processing a direct I/O request, and is used to wake up callers waiting for direct I/O to be quiesced.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj4Ah]”hŒ Parameters”…”�”}”(hj6Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj2Aubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mj hj.Aubj¿)�”}”(hhh]”jÄ)�”}”(hŒ8``struct inode *inode`` inode the direct I/O happens on ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjSAh]”hŒstruct inode *inode”…”�”}”(hjUAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjQAubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mg hjMAubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode the direct I/O happens on”h]”hŒinode the direct I/O happens on”…”�”}”(hjlAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jhAh´Mg hjiAubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjMAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jhAh´Mg hjJAubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj.AubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjŽAh]”hŒ Description”…”�”}”(hj�Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjŒAubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mi hj.AubhÌ)�”}”(hŒ‰This is called once we've finished processing a direct I/O request, and is used to wake up callers waiting for direct I/O to be quiesced.”h]”hŒ‹This is called once we’ve finished processing a direct I/O request, and is used to wake up callers waiting for direct I/O to be quiesced.”…”�”}”(hj¤Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mh hj.Aubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhìh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œinode_dio_end (C function)”Œc.inode_dio_end”hNt”auh1hýhhìh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ(void inode_dio_end (struct inode *inode)”h]”j)�”}”(hŒ'void inode_dio_end(struct inode *inode)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÓAh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÏAh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mr ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâAh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÏAh²hh³jáAh´Mr ubjC)�”}”(hŒ inode_dio_end”h]”jI)�”}”(hŒ inode_dio_end”h]”hŒ inode_dio_end”…”�”}”(hjôAh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjðAubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÏAh²hh³jáAh´Mr ubj=)�”}”(hŒ(struct inode *inode)”h]”jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj Bubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj Bubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj.Bh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj+Bubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j0BŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjöAsbŒc.inode_dio_end”†”asbuh1hhj Bubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNBh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj Bubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj\Bh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj BubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjiBh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj Bubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjBubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÏAh²hh³jáAh´Mr ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjËAh²hh³jáAh´Mr ubah}”(h]”jÆAah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jáAh´Mr hjÈAh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ&signal finish of a direct I/O requests”h]”hŒ&signal finish of a direct I/O requests”…”�”}”(hj“Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mr hj�Bh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÈAh²hh³jáAh´Mr ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j«Bjšj«Bj›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hŒå**Parameters** ``struct inode *inode`` inode the direct I/O happens on **Description** This is called once we've finished processing a direct I/O request, and is used to wake up callers waiting for direct I/O to be quiesced.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjµBh]”hŒ Parameters”…”�”}”(hj·Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj³Bubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mv hj¯Bubj¿)�”}”(hhh]”jÄ)�”}”(hŒ8``struct inode *inode`` inode the direct I/O happens on ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjÔBh]”hŒstruct inode *inode”…”�”}”(hjÖBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÒBubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Ms hjÎBubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode the direct I/O happens on”h]”hŒinode the direct I/O happens on”…”�”}”(hjíBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jéBh´Ms hjêBubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÎBubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jéBh´Ms hjËBubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj¯BubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjCh]”hŒ Description”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj Cubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mu hj¯BubhÌ)�”}”(hŒ‰This is called once we've finished processing a direct I/O request, and is used to wake up callers waiting for direct I/O to be quiesced.”h]”hŒ‹This is called once we’ve finished processing a direct I/O request, and is used to wake up callers waiting for direct I/O to be quiesced.”…”�”}”(hj%Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mt hj¯Bubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhìh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ,generic_ci_validate_strict_name (C function)”Œ!c.generic_ci_validate_strict_name”hNt”auh1hýhhìh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒQbool generic_ci_validate_strict_name (struct inode *dir, const struct qstr *name)”h]”j)�”}”(hŒPbool generic_ci_validate_strict_name(struct inode *dir, const struct qstr *name)”h]”(j�)�”}”(hj„h]”hŒbool”…”�”}”(hjTCh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjPCh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M% ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbCh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjPCh²hh³jaCh´M% ubjC)�”}”(hŒgeneric_ci_validate_strict_name”h]”jI)�”}”(hŒgeneric_ci_validate_strict_name”h]”hŒgeneric_ci_validate_strict_name”…”�”}”(hjtCh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjpCubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjPCh²hh³jaCh´M% ubj=)�”}”(hŒ,(struct inode *dir, const struct qstr *name)”h]”(jC)�”}”(hŒstruct inode *dir”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj�Ch²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjŒCubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Ch²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjŒCubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj®Ch²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj«Cubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j°CŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjvCsbŒ!c.generic_ci_validate_strict_name”†”asbuh1hhjŒCubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎCh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjŒCubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÜCh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjŒCubjI)�”}”(hŒdir”h]”hŒdir”…”�”}”(hjéCh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŒCubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjˆCubjC)�”}”(hŒconst struct qstr *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjþCubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjþCubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjþCubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*Dh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjþCubh)�”}”(hhh]”jI)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(hj;Dh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj8Dubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j=DŒmodname”NŒ classname”Njj )�”}”j ]”jÊCŒ!c.generic_ci_validate_strict_name”†”asbuh1hhjþCubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYDh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjþCubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjgDh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjþCubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hjtDh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjþCubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjˆCubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjPCh²hh³jaCh´M% ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjLCh²hh³jaCh´M% ubah}”(h]”jGCah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jaCh´M% hjICh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ1Check if a given name is suitable for a directory”h]”hŒ1Check if a given name is suitable for a directory”…”�”}”(hjžDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M% hj›Dh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjICh²hh³jaCh´M% ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j¶Djšj¶Dj›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hXx**Parameters** ``struct inode *dir`` inode of the directory where the new file will be created ``const struct qstr *name`` name of the new file **Description** This functions checks if the proposed filename is valid for the parent directory. That means that only valid UTF-8 filenames will be accepted for casefold directories from filesystems created with the strict encoding flag. That also means that any name will be accepted for directories that doesn't have casefold enabled, or aren't being strict with the encoding. **Return** * True: if the filename is suitable for this directory. It can be true if a given name is not suitable for a strict encoding directory, but the directory being used isn't strict * False if the filename isn't suitable for this directory. This only happens when a directory is casefolded and the filesystem is strict about its encoding.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÀDh]”hŒ Parameters”…”�”}”(hjÂDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¾Dubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M) hjºDubj¿)�”}”(hhh]”(jÄ)�”}”(hŒP``struct inode *dir`` inode of the directory where the new file will be created ”h]”(jÊ)�”}”(hŒ``struct inode *dir``”h]”jÐ)�”}”(hjßDh]”hŒstruct inode *dir”…”�”}”(hjáDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÝDubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M/ hjÙDubjæ)�”}”(hhh]”hÌ)�”}”(hŒ9inode of the directory where the new file will be created”h]”hŒ9inode of the directory where the new file will be created”…”�”}”(hjøDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jôDh´M/ hjõDubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÙDubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jôDh´M/ hjÖDubjÄ)�”}”(hŒ1``const struct qstr *name`` name of the new file ”h]”(jÊ)�”}”(hŒ``const struct qstr *name``”h]”jÐ)�”}”(hjEh]”hŒconst struct qstr *name”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjEubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M0 hjEubjæ)�”}”(hhh]”hÌ)�”}”(hŒname of the new file”h]”hŒname of the new file”…”�”}”(hj1Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j-Eh´M0 hj.Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j-Eh´M0 hjÖDubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjºDubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjSEh]”hŒ Description”…”�”}”(hjUEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjQEubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M2 hjºDubhÌ)�”}”(hXlThis functions checks if the proposed filename is valid for the parent directory. That means that only valid UTF-8 filenames will be accepted for casefold directories from filesystems created with the strict encoding flag. That also means that any name will be accepted for directories that doesn't have casefold enabled, or aren't being strict with the encoding.”h]”hXpThis functions checks if the proposed filename is valid for the parent directory. That means that only valid UTF-8 filenames will be accepted for casefold directories from filesystems created with the strict encoding flag. That also means that any name will be accepted for directories that doesn’t have casefold enabled, or aren’t being strict with the encoding.”…”�”}”(hjiEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M& hjºDubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjzEh]”hŒReturn”…”�”}”(hj|Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjxEubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M- hjºDubhŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒ¯True: if the filename is suitable for this directory. It can be true if a given name is not suitable for a strict encoding directory, but the directory being used isn't strict”h]”hÌ)�”}”(hŒ¯True: if the filename is suitable for this directory. It can be true if a given name is not suitable for a strict encoding directory, but the directory being used isn't strict”h]”hŒ±True: if the filename is suitable for this directory. It can be true if a given name is not suitable for a strict encoding directory, but the directory being used isn’t strict”…”�”}”(hj›Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M2 hj—Eubah}”(h]”h ]”h"]”h$]”h&]”uh1j•Ehj’Eubj–E)�”}”(hŒšFalse if the filename isn't suitable for this directory. This only happens when a directory is casefolded and the filesystem is strict about its encoding.”h]”hÌ)�”}”(hŒšFalse if the filename isn't suitable for this directory. This only happens when a directory is casefolded and the filesystem is strict about its encoding.”h]”hŒœFalse if the filename isn’t suitable for this directory. This only happens when a directory is casefolded and the filesystem is strict about its encoding.”…”�”}”(hj´Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M5 hj°Eubah}”(h]”h ]”h"]”h$]”h&]”uh1j•Ehj’Eubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”j²uh1j�Eh³j©Eh´M2 hjºDubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhìh²hh³Nh´Nubeh}”(h]”Œthe-filesystem-types”ah ]”h"]”Œthe filesystem types”ah$]”h&]”uh1hµhhÛh²hh³hÊh´K ubh¶)�”}”(hhh]”(h»)�”}”(hŒThe Directory Cache”h]”hŒThe Directory Cache”…”�”}”(hjâEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjßEh²hh³hÊh´Kubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_drop (C function)”Œc.d_drop”hNt”auh1hýhjßEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ#void d_drop (struct dentry *dentry)”h]”j)�”}”(hŒ"void d_drop(struct dentry *dentry)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj Fh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjFh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mmubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjFh²hh³jFh´MmubjC)�”}”(hŒd_drop”h]”jI)�”}”(hŒd_drop”h]”hŒd_drop”…”�”}”(hj*Fh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj&Fubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjFh²hh³jFh´Mmubj=)�”}”(hŒ(struct dentry *dentry)”h]”jC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjFFh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjBFubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSFh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjBFubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjdFh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjaFubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jfFŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj,FsbŒc.d_drop”†”asbuh1hhjBFubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„Fh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjBFubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj’Fh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjBFubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjŸFh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjBFubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj>Fubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjFh²hh³jFh´Mmubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjFh²hh³jFh´Mmubah}”(h]”jüEah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jFh´MmhjþEh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ drop a dentry”h]”hŒ drop a dentry”…”�”}”(hjÉFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MmhjÆFh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjþEh²hh³jFh´Mmubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jáFjšjáFj›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hX‰**Parameters** ``struct dentry *dentry`` dentry to drop **Description** d_drop() unhashes the entry from the parent dentry hashes, so that it won't be found through a VFS lookup any more. Note that this is different from deleting the dentry - d_delete will try to mark the dentry negative if possible, giving a successful _negative_ lookup, while d_drop will just make the cache lookup fail. d_drop() is used mainly for stuff that wants to invalidate a dentry for some reason (NFS timeouts or autofs deletes). __d_drop requires dentry->d_lock ___d_drop doesn't mark dentry as "unhashed" (dentry->d_hash.pprev will be LIST_POISON2, not NULL).”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjëFh]”hŒ Parameters”…”�”}”(hjíFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjéFubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MqhjåFubj¿)�”}”(hhh]”jÄ)�”}”(hŒ)``struct dentry *dentry`` dentry to drop ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hj Gh]”hŒstruct dentry *dentry”…”�”}”(hj Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjGubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MnhjGubjæ)�”}”(hhh]”hÌ)�”}”(hŒdentry to drop”h]”hŒdentry to drop”…”�”}”(hj#Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jGh´Mnhj Gubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjGubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jGh´MnhjGubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjåFubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjEGh]”hŒ Description”…”�”}”(hjGGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjCGubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MphjåFubhÌ)�”}”(hX?d_drop() unhashes the entry from the parent dentry hashes, so that it won't be found through a VFS lookup any more. Note that this is different from deleting the dentry - d_delete will try to mark the dentry negative if possible, giving a successful _negative_ lookup, while d_drop will just make the cache lookup fail.”h]”hXAd_drop() unhashes the entry from the parent dentry hashes, so that it won’t be found through a VFS lookup any more. Note that this is different from deleting the dentry - d_delete will try to mark the dentry negative if possible, giving a successful _negative_ lookup, while d_drop will just make the cache lookup fail.”…”�”}”(hj[Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MohjåFubhÌ)�”}”(hŒud_drop() is used mainly for stuff that wants to invalidate a dentry for some reason (NFS timeouts or autofs deletes).”h]”hŒud_drop() is used mainly for stuff that wants to invalidate a dentry for some reason (NFS timeouts or autofs deletes).”…”�”}”(hjjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MuhjåFubhÌ)�”}”(hŒ __d_drop requires dentry->d_lock”h]”hŒ __d_drop requires dentry->d_lock”…”�”}”(hjyGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MxhjåFubhÌ)�”}”(hŒb___d_drop doesn't mark dentry as "unhashed" (dentry->d_hash.pprev will be LIST_POISON2, not NULL).”h]”hŒh___d_drop doesn’t mark dentry as “unhashedâ€� (dentry->d_hash.pprev will be LIST_POISON2, not NULL).”…”�”}”(hjˆGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MzhjåFubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjßEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ"__move_to_shrink_list (C function)”Œc.__move_to_shrink_list”hNt”auh1hýhjßEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒJbool __move_to_shrink_list (struct dentry *dentry, struct list_head *list)”h]”j)�”}”(hŒIbool __move_to_shrink_list(struct dentry *dentry, struct list_head *list)”h]”(j�)�”}”(hj„h]”hŒbool”…”�”}”(hj·Gh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj³Gh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MEubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅGh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj³Gh²hh³jÄGh´MEubjC)�”}”(hŒ__move_to_shrink_list”h]”jI)�”}”(hŒ__move_to_shrink_list”h]”hŒ__move_to_shrink_list”…”�”}”(hj×Gh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÓGubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj³Gh²hh³jÄGh´MEubj=)�”}”(hŒ/(struct dentry *dentry, struct list_head *list)”h]”(jC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjóGh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjïGubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjïGubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjHubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jHŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÙGsbŒc.__move_to_shrink_list”†”asbuh1hhjïGubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1Hh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjïGubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj?Hh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjïGubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjLHh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjïGubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjëGubjC)�”}”(hŒstruct list_head *list”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjeHh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjaHubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrHh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjaHubh)�”}”(hhh]”jI)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hjƒHh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj€Hubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j…HŒmodname”NŒ classname”Njj )�”}”j ]”j-HŒc.__move_to_shrink_list”†”asbuh1hhjaHubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡Hh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjaHubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¯Hh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjaHubjI)�”}”(hŒlist”h]”hŒlist”…”�”}”(hj¼Hh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjaHubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjëGubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj³Gh²hh³jÄGh´MEubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj¯Gh²hh³jÄGh´MEubah}”(h]”jªGah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÄGh´MEhj¬Gh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ(try to place a dentry into a shrink list”h]”hŒ(try to place a dentry into a shrink list”…”�”}”(hjæHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MEhjãHh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¬Gh²hh³jÄGh´MEubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jþHjšjþHj›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hXÈ**Parameters** ``struct dentry *dentry`` dentry to try putting into shrink list ``struct list_head *list`` the list to put **dentry** into. **Return** true **dentry** had been placed into **list**, false otherwise **Description** If **dentry** is idle and not already include into a shrink list, move it into **list** and return ``true``; otherwise do nothing and return ``false``. Caller must be holding **dentry->d_lock**. There must have been no calls of dentry_free(**dentry**) prior to the beginning of the RCU read-side critical area in which __move_to_shrink_list(**dentry**, **list**) is called. **list** should be thread-private and eventually emptied by passing it to shrink_dentry_list().”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjIh]”hŒ Parameters”…”�”}”(hj Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MIhjIubj¿)�”}”(hhh]”(jÄ)�”}”(hŒA``struct dentry *dentry`` dentry to try putting into shrink list ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hj'Ih]”hŒstruct dentry *dentry”…”�”}”(hj)Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj%Iubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MFhj!Iubjæ)�”}”(hhh]”hÌ)�”}”(hŒ&dentry to try putting into shrink list”h]”hŒ&dentry to try putting into shrink list”…”�”}”(hj@Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jtrue **dentry** had been placed into **list**, false otherwise”h]”(hŒtrue ”…”�”}”(hjÃIh²hh³Nh´Nubj©)�”}”(hŒ **dentry**”h]”hŒdentry”…”�”}”(hjËIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÃIubhŒ had been placed into ”…”�”}”(hjÃIh²hh³Nh´Nubj©)�”}”(hŒ**list**”h]”hŒlist”…”�”}”(hjÝIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÃIubhŒ, false otherwise”…”�”}”(hjÃIh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MHhjIubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjøIh]”hŒ Description”…”�”}”(hjúIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjöIubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MJhjIubhÌ)�”}”(hŒ—If **dentry** is idle and not already include into a shrink list, move it into **list** and return ``true``; otherwise do nothing and return ``false``.”h]”(hŒIf ”…”�”}”(hjJh²hh³Nh´Nubj©)�”}”(hŒ **dentry**”h]”hŒdentry”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjJubhŒB is idle and not already include into a shrink list, move it into ”…”�”}”(hjJh²hh³Nh´Nubj©)�”}”(hŒ**list**”h]”hŒlist”…”�”}”(hj(Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjJubhŒ and return ”…”�”}”(hjJh²hh³Nh´NubjÐ)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj:Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjJubhŒ"; otherwise do nothing and return ”…”�”}”(hjJh²hh³Nh´NubjÐ)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjLJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjJubhŒ.”…”�”}”(hjJh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MIhjIubhÌ)�”}”(hŒÞCaller must be holding **dentry->d_lock**. There must have been no calls of dentry_free(**dentry**) prior to the beginning of the RCU read-side critical area in which __move_to_shrink_list(**dentry**, **list**) is called.”h]”(hŒCaller must be holding ”…”�”}”(hjeJh²hh³Nh´Nubj©)�”}”(hŒ**dentry->d_lock**”h]”hŒdentry->d_lock”…”�”}”(hjmJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjeJubhŒ0. There must have been no calls of dentry_free(”…”�”}”(hjeJh²hh³Nh´Nubj©)�”}”(hŒ **dentry**”h]”hŒdentry”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjeJubhŒ[) prior to the beginning of the RCU read-side critical area in which __move_to_shrink_list(”…”�”}”(hjeJh²hh³Nh´Nubj©)�”}”(hŒ **dentry**”h]”hŒdentry”…”�”}”(hj‘Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjeJubhŒ, ”…”�”}”(hjeJh²hh³Nh´Nubj©)�”}”(hŒ**list**”h]”hŒlist”…”�”}”(hj£Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjeJubhŒ ) is called.”…”�”}”(hjeJh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MLhjIubhÌ)�”}”(hŒ_**list** should be thread-private and eventually emptied by passing it to shrink_dentry_list().”h]”(j©)�”}”(hŒ**list**”h]”hŒlist”…”�”}”(hjÀJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¼JubhŒW should be thread-private and eventually emptied by passing it to shrink_dentry_list().”…”�”}”(hj¼Jh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MPhjIubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjßEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_find_any_alias (C function)”Œc.d_find_any_alias”hNt”auh1hýhjßEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ6struct dentry * d_find_any_alias (struct inode *inode)”h]”j)�”}”(hŒ4struct dentry *d_find_any_alias(struct inode *inode)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjùJh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjõJh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M°ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjõJh²hh³jKh´M°ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjKubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jKŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒd_find_any_alias”sbŒc.d_find_any_alias”†”asbuh1hhjõJh²hh³jKh´M°ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9Kh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjõJh²hh³jKh´M°ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjGKh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjõJh²hh³jKh´M°ubjC)�”}”(hŒd_find_any_alias”h]”jI)�”}”(hj6Kh]”hŒd_find_any_alias”…”�”}”(hjXKh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjTKubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjõJh²hh³jKh´M°ubj=)�”}”(hŒ(struct inode *inode)”h]”jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjsKh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjoKubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€Kh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjoKubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj‘Kh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŽKubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j“KŒmodname”NŒ classname”Njj )�”}”j ]”j4KŒc.d_find_any_alias”†”asbuh1hhjoKubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯Kh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjoKubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj½Kh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjoKubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjÊKh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjoKubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjkKubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjõJh²hh³jKh´M°ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjñJh²hh³jKh´M°ubah}”(h]”jìJah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jKh´M°hjîJh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ find any alias for a given inode”h]”hŒ find any alias for a given inode”…”�”}”(hjôKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M°hjñKh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjîJh²hh³jKh´M°ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j Ljšj Lj›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hŒÔ**Parameters** ``struct inode *inode`` inode to find an alias for **Description** If any aliases exist for the given inode, take and return a reference for one of them. If no aliases exist, return ``NULL``.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjLh]”hŒ Parameters”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M´hjLubj¿)�”}”(hhh]”jÄ)�”}”(hŒ3``struct inode *inode`` inode to find an alias for ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj5Lh]”hŒstruct inode *inode”…”�”}”(hj7Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj3Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M±hj/Lubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode to find an alias for”h]”hŒinode to find an alias for”…”�”}”(hjNLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jJLh´M±hjKLubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj/Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jJLh´M±hj,Lubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjLubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjpLh]”hŒ Description”…”�”}”(hjrLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjnLubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M³hjLubhÌ)�”}”(hŒ}If any aliases exist for the given inode, take and return a reference for one of them. If no aliases exist, return ``NULL``.”h]”(hŒtIf any aliases exist for the given inode, take and return a reference for one of them. If no aliases exist, return ”…”�”}”(hj†Lh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjŽLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj†LubhŒ.”…”�”}”(hj†Lh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M²hjLubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjßEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_find_alias (C function)”Œc.d_find_alias”hNt”auh1hýhjßEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ2struct dentry * d_find_alias (struct inode *inode)”h]”j)�”}”(hŒ0struct dentry *d_find_alias(struct inode *inode)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÇLh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÃLh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MÕubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕLh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÃLh²hh³jÔLh´MÕubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjæLh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjãLubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jèLŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒ d_find_alias”sbŒc.d_find_alias”†”asbuh1hhjÃLh²hh³jÔLh´MÕubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÃLh²hh³jÔLh´MÕubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÃLh²hh³jÔLh´MÕubjC)�”}”(hŒ d_find_alias”h]”jI)�”}”(hjMh]”hŒ d_find_alias”…”�”}”(hj&Mh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj"Mubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÃLh²hh³jÔLh´MÕubj=)�”}”(hŒ(struct inode *inode)”h]”jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjAMh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj=Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNMh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj=Mubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj_Mh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj\Mubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jaMŒmodname”NŒ classname”Njj )�”}”j ]”jMŒc.d_find_alias”†”asbuh1hhj=Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}Mh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj=Mubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj‹Mh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj=MubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj˜Mh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj=Mubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj9Mubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÃLh²hh³jÔLh´MÕubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj¿Lh²hh³jÔLh´MÕubah}”(h]”jºLah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÔLh´MÕhj¼Lh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒgrab a hashed alias of inode”h]”hŒgrab a hashed alias of inode”…”�”}”(hjÂMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MÕhj¿Mh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¼Lh²hh³jÔLh´MÕubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÚMjšjÚMj›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hX0**Parameters** ``struct inode *inode`` inode in question **Description** If inode has a hashed alias, or is a directory and has any alias, acquire the reference to alias and return it. Otherwise return NULL. Notice that if inode is a directory there can be only one alias and it can be unhashed only if it has no children, or if it is the root of a filesystem, or if the directory was renamed and d_revalidate was the first vfs operation to notice. If the inode has an IS_ROOT, DCACHE_DISCONNECTED alias, then prefer any other hashed alias over that one.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjäMh]”hŒ Parameters”…”�”}”(hjæMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjâMubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MÙhjÞMubj¿)�”}”(hhh]”jÄ)�”}”(hŒ*``struct inode *inode`` inode in question ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjNh]”hŒstruct inode *inode”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MÖhjýMubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode in question”h]”hŒinode in question”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jNh´MÖhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjýMubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jNh´MÖhjúMubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÞMubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj>Nh]”hŒ Description”…”�”}”(hj@Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjah"]”h$]”h&]”uh1j1hjŽNh²hh³j Nh´MœubjC)�”}”(hŒshrink_dcache_sb”h]”jI)�”}”(hŒshrink_dcache_sb”h]”hŒshrink_dcache_sb”…”�”}”(hj³Nh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¯Nubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjŽNh²hh³j Nh´Mœubj=)�”}”(hŒ(struct super_block *sb)”h]”jC)�”}”(hŒstruct super_block *sb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÏNh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjËNubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜNh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjËNubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hjíNh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjêNubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jïNŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjµNsbŒc.shrink_dcache_sb”†”asbuh1hhjËNubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Oh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjËNubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjËNubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hj(Oh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjËNubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÇNubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjŽNh²hh³j Nh´Mœubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjŠNh²hh³j Nh´Mœubah}”(h]”j…Nah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j Nh´Mœhj‡Nh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒshrink dcache for a superblock”h]”hŒshrink dcache for a superblock”…”�”}”(hjROh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MœhjOOh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj‡Nh²hh³j Nh´Mœubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jjOjšjjOj›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hŒ»**Parameters** ``struct super_block *sb`` superblock **Description** Shrink the dcache for the specified super block. This is used to free the dcache before unmounting a file system.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjtOh]”hŒ Parameters”…”�”}”(hjvOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjrOubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M hjnOubj¿)�”}”(hhh]”jÄ)�”}”(hŒ&``struct super_block *sb`` superblock ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hj“Oh]”hŒstruct super_block *sb”…”�”}”(hj•Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj‘Oubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M�hj�Oubjæ)�”}”(hhh]”hÌ)�”}”(hŒ superblock”h]”hŒ superblock”…”�”}”(hj¬Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¨Oh´M�hj©Oubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj�Oubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¨Oh´M�hjŠOubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjnOubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÎOh]”hŒ Description”…”�”}”(hjÐOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÌOubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MŸhjnOubhÌ)�”}”(hŒqShrink the dcache for the specified super block. This is used to free the dcache before unmounting a file system.”h]”hŒqShrink the dcache for the specified super block. This is used to free the dcache before unmounting a file system.”…”�”}”(hjäOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MžhjnOubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjßEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œpath_has_submounts (C function)”Œc.path_has_submounts”hNt”auh1hýhjßEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ2int path_has_submounts (const struct path *parent)”h]”j)�”}”(hŒ1int path_has_submounts(const struct path *parent)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjPh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M=ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"Ph²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjPh²hh³j!Ph´M=ubjC)�”}”(hŒpath_has_submounts”h]”jI)�”}”(hŒpath_has_submounts”h]”hŒpath_has_submounts”…”�”}”(hj4Ph²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj0Pubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjPh²hh³j!Ph´M=ubj=)�”}”(hŒ(const struct path *parent)”h]”jC)�”}”(hŒconst struct path *parent”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjPPh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjLPubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]Ph²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjLPubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjkPh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjLPubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxPh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjLPubh)�”}”(hhh]”jI)�”}”(hŒpath”h]”hŒpath”…”�”}”(hj‰Ph²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj†Pubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j‹PŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj6PsbŒc.path_has_submounts”†”asbuh1hhjLPubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©Ph²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjLPubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj·Ph²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjLPubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjÄPh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjLPubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjHPubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjPh²hh³j!Ph´M=ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj Ph²hh³j!Ph´M=ubah}”(h]”jPah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j!Ph´M=hjPh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ8check for mounts over a dentry in the current namespace.”h]”hŒ8check for mounts over a dentry in the current namespace.”…”�”}”(hjîPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M=hjëPh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjPh²hh³j!Ph´M=ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jQjšjQj›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hŒ°**Parameters** ``const struct path *parent`` path to check. **Description** Return true if the parent or its subdirectories contain a mount point in the current namespace.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjQh]”hŒ Parameters”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MAhj Qubj¿)�”}”(hhh]”jÄ)�”}”(hŒ-``const struct path *parent`` path to check. ”h]”(jÊ)�”}”(hŒ``const struct path *parent``”h]”jÐ)�”}”(hj/Qh]”hŒconst struct path *parent”…”�”}”(hj1Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj-Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M?hj)Qubjæ)�”}”(hhh]”hÌ)�”}”(hŒpath to check.”h]”hŒpath to check.”…”�”}”(hjHQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jDQh´M?hjEQubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj)Qubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jDQh´M?hj&Qubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj QubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjjQh]”hŒ Description”…”�”}”(hjlQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjhQubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MAhj QubhÌ)�”}”(hŒ_Return true if the parent or its subdirectories contain a mount point in the current namespace.”h]”hŒ_Return true if the parent or its subdirectories contain a mount point in the current namespace.”…”�”}”(hj€Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M@hj Qubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjßEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_invalidate (C function)”Œc.d_invalidate”hNt”auh1hýhjßEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ)void d_invalidate (struct dentry *dentry)”h]”j)�”}”(hŒ(void d_invalidate(struct dentry *dentry)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¯Qh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj«Qh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mgubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾Qh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj«Qh²hh³j½Qh´MgubjC)�”}”(hŒ d_invalidate”h]”jI)�”}”(hŒ d_invalidate”h]”hŒ d_invalidate”…”�”}”(hjÐQh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÌQubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj«Qh²hh³j½Qh´Mgubj=)�”}”(hŒ(struct dentry *dentry)”h]”jC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjìQh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjèQubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùQh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjèQubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj Rh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjRubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j RŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÒQsbŒc.d_invalidate”†”asbuh1hhjèQubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*Rh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjèQubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj8Rh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjèQubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjERh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjèQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjäQubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj«Qh²hh³j½Qh´Mgubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj§Qh²hh³j½Qh´Mgubah}”(h]”j¢Qah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j½Qh´Mghj¤Qh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ(detach submounts, prune dcache, and drop”h]”hŒ(detach submounts, prune dcache, and drop”…”�”}”(hjoRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MghjlRh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¤Qh²hh³j½Qh´Mgubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j‡Rjšj‡Rj›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hŒ]**Parameters** ``struct dentry *dentry`` dentry to invalidate (aka detach, prune and drop)”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj‘Rh]”hŒ Parameters”…”�”}”(hj“Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj�Rubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mkhj‹Rubj¿)�”}”(hhh]”jÄ)�”}”(hŒK``struct dentry *dentry`` dentry to invalidate (aka detach, prune and drop)”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hj°Rh]”hŒstruct dentry *dentry”…”�”}”(hj²Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj®Rubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MmhjªRubjæ)�”}”(hhh]”hÌ)�”}”(hŒ1dentry to invalidate (aka detach, prune and drop)”h]”hŒ1dentry to invalidate (aka detach, prune and drop)”…”�”}”(hjÉRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MhhjÆRubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjªRubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÅRh´Mmhj§Rubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj‹Rubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjßEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_alloc (C function)”Œ c.d_alloc”hNt”auh1hýhjßEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒIstruct dentry * d_alloc (struct dentry * parent, const struct qstr *name)”h]”j)�”}”(hŒFstruct dentry *d_alloc(struct dentry *parent, const struct qstr *name)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj Sh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjSh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Måubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjSh²hh³jSh´Måubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj)Sh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj&Subah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j+SŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒd_alloc”sbŒ c.d_alloc”†”asbuh1hhjSh²hh³jSh´Måubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJSh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjSh²hh³jSh´Måubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjXSh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjSh²hh³jSh´MåubjC)�”}”(hŒd_alloc”h]”jI)�”}”(hjGSh]”hŒd_alloc”…”�”}”(hjiSh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjeSubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjSh²hh³jSh´Måubj=)�”}”(hŒ0(struct dentry *parent, const struct qstr *name)”h]”(jC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj„Sh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj€Subj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘Sh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj€Subh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj¢Sh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŸSubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¤SŒmodname”NŒ classname”Njj )�”}”j ]”jESŒ c.d_alloc”†”asbuh1hhj€Subj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀSh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj€Subj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÎSh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj€SubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjÛSh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj€Subeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj|SubjC)�”}”(hŒconst struct qstr *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjôSh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjðSubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjðSubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjðSubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjðSubh)�”}”(hhh]”jI)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(hj-Th²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj*Tubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j/TŒmodname”NŒ classname”Njj )�”}”j ]”jESŒ c.d_alloc”†”asbuh1hhjðSubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKTh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjðSubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjYTh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjðSubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hjfTh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjðSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj|Subeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjSh²hh³jSh´Måubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjSh²hh³jSh´Måubah}”(h]”jýRah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jSh´MåhjÿRh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒallocate a dcache entry”h]”hŒallocate a dcache entry”…”�”}”(hj�Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Måhj�Th²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÿRh²hh³jSh´Måubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j¨Tjšj¨Tj›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hXU**Parameters** ``struct dentry * parent`` parent of entry to allocate ``const struct qstr *name`` qstr of the name **Description** Allocates a dentry. It returns ``NULL`` if there is insufficient memory available. On a success the dentry is returned. The name passed in is copied and the copy passed in may be reused after this call.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj²Th]”hŒ Parameters”…”�”}”(hj´Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj°Tubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Méhj¬Tubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ7``struct dentry * parent`` parent of entry to allocate ”h]”(jÊ)�”}”(hŒ``struct dentry * parent``”h]”jÐ)�”}”(hjÑTh]”hŒstruct dentry * parent”…”�”}”(hjÓTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÏTubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MæhjËTubjæ)�”}”(hhh]”hÌ)�”}”(hŒparent of entry to allocate”h]”hŒparent of entry to allocate”…”�”}”(hjêTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jæTh´MæhjçTubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjËTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jæTh´MæhjÈTubjÄ)�”}”(hŒ-``const struct qstr *name`` qstr of the name ”h]”(jÊ)�”}”(hŒ``const struct qstr *name``”h]”jÐ)�”}”(hj Uh]”hŒconst struct qstr *name”…”�”}”(hj Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MçhjUubjæ)�”}”(hhh]”hÌ)�”}”(hŒqstr of the name”h]”hŒqstr of the name”…”�”}”(hj#Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jUh´Mçhj Uubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjUubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jUh´Mçh•jÈTubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj¬TubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjEUh]”hŒ Description”…”�”}”(hjGUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjCUubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Méhj¬TubhÌ)�”}”(hŒÊAllocates a dentry. It returns ``NULL`` if there is insufficient memory available. On a success the dentry is returned. The name passed in is copied and the copy passed in may be reused after this call.”h]”(hŒAllocates a dentry. It returns ”…”�”}”(hj[Uh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjcUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj[UubhŒ£ if there is insufficient memory available. On a success the dentry is returned. The name passed in is copied and the copy passed in may be reused after this call.”…”�”}”(hj[Uh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mèhj¬Tubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjßEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_duplicate (C function)”Œ c.d_duplicate”hNt”auh1hýhjßEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ3struct dentry * d_duplicate (struct dentry *dentry)”h]”j)�”}”(hŒ1struct dentry *d_duplicate(struct dentry *dentry)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjœUh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj˜Uh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªUh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj˜Uh²hh³j©Uh´Mubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj»Uh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¸Uubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j½UŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒ d_duplicate”sbŒ c.d_duplicate”†”asbuh1hhj˜Uh²hh³j©Uh´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜUh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj˜Uh²hh³j©Uh´Mubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjêUh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj˜Uh²hh³j©Uh´MubjC)�”}”(hŒ d_duplicate”h]”jI)�”}”(hjÙUh]”hŒ d_duplicate”…”�”}”(hjûUh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj÷Uubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj˜Uh²hh³j©Uh´Mubj=)�”}”(hŒ(struct dentry *dentry)”h]”jC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjVubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#Vh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjVubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj4Vh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj1Vubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j6VŒmodname”NŒ classname”Njj )�”}”j ]”j×UŒ c.d_duplicate”†”asbuh1hhjVubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRVh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjVubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj`Vh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjVubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjmVh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjVubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjVubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj˜Uh²hh³j©Uh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj”Uh²hh³j©Uh´Mubah}”(h]”j�Uah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j©Uh´Mhj‘Uh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ0duplicate a dentry for combined atomic operation”h]”hŒ0duplicate a dentry for combined atomic operation”…”�”}”(hj—Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mhj”Vh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj‘Uh²hh³j©Uh´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j¯Vjšj¯Vj›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hX**Parameters** ``struct dentry *dentry`` the dentry to duplicate **Description** Some rename operations need to be combined with another operation inside the filesystem: 1. A cluster filesystem when renaming to an in-use file might need to first "silly-rename" that target out of the way before the main rename 2. A filesystem that supports whiteout might want to create a whiteout in place of the file being moved. For this they need two dentries which temporarily have the same name, before one is renamed. d_duplicate() provides for this. Given a positive hashed dentry, it creates a second in-lookup dentry. Because the original dentry exists, no other thread will try to create an in-lookup dentry, so there can be no race in this create. The caller should d_move() the original to a new name, often via a rename request, and should call d_lookup_done() on the newly created dentry. If the new is instantiated then the old MUST either be moved or dropped. Parent must be locked. **Return** an in-lookup dentry, or -ENOMEM.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj¹Vh]”hŒ Parameters”…”�”}”(hj»Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj·Vubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mhj³Vubj¿)�”}”(hhh]”jÄ)�”}”(hŒ2``struct dentry *dentry`` the dentry to duplicate ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hjØVh]”hŒstruct dentry *dentry”…”�”}”(hjÚVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÖVubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MhjÒVubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe dentry to duplicate”h]”hŒthe dentry to duplicate”…”�”}”(hjñVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jíVh´MhjîVubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÒVubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jíVh´MhjÏVubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj³VubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjWh]”hŒ Description”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjWubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mhj³VubhÌ)�”}”(hŒXSome rename operations need to be combined with another operation inside the filesystem:”h]”hŒXSome rename operations need to be combined with another operation inside the filesystem:”…”�”}”(hj)Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mhj³VubhŒenumerated_list”“”)�”}”(hhh]”(j–E)�”}”(hŒ‰A cluster filesystem when renaming to an in-use file might need to first "silly-rename" that target out of the way before the main rename”h]”hÌ)�”}”(hŒ‰A cluster filesystem when renaming to an in-use file might need to first "silly-rename" that target out of the way before the main rename”h]”hŒ�A cluster filesystem when renaming to an in-use file might need to first “silly-renameâ€� that target out of the way before the main rename”…”�”}”(hjAWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mhj=Wubah}”(h]”h ]”h"]”h$]”h&]”uh1j•Ehj:Wubj–E)�”}”(hŒfA filesystem that supports whiteout might want to create a whiteout in place of the file being moved. ”h]”hÌ)�”}”(hŒeA filesystem that supports whiteout might want to create a whiteout in place of the file being moved.”h]”hŒeA filesystem that supports whiteout might want to create a whiteout in place of the file being moved.”…”�”}”(hjZWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MhjVWubah}”(h]”h ]”h"]”h$]”h&]”uh1j•Ehj:Wubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ.”uh1j8Whj³VubhÌ)�”}”(hXIFor this they need two dentries which temporarily have the same name, before one is renamed. d_duplicate() provides for this. Given a positive hashed dentry, it creates a second in-lookup dentry. Because the original dentry exists, no other thread will try to create an in-lookup dentry, so there can be no race in this create.”h]”hXIFor this they need two dentries which temporarily have the same name, before one is renamed. d_duplicate() provides for this. Given a positive hashed dentry, it creates a second in-lookup dentry. Because the original dentry exists, no other thread will try to create an in-lookup dentry, so there can be no race in this create.”…”�”}”(hjzWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M hj³VubhÌ)�”}”(hŒÙThe caller should d_move() the original to a new name, often via a rename request, and should call d_lookup_done() on the newly created dentry. If the new is instantiated then the old MUST either be moved or dropped.”h]”hŒÙThe caller should d_move() the original to a new name, often via a rename request, and should call d_lookup_done() on the newly created dentry. If the new is instantiated then the old MUST either be moved or dropped.”…”�”}”(hj‰Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mhj³VubhÌ)�”}”(hŒParent must be locked.”h]”hŒParent must be locked.”…”�”}”(hj˜Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mhj³VubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj©Wh]”hŒReturn”…”�”}”(hj«Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj§Wubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mhj³VubhÌ)�”}”(hŒ an in-lookup dentry, or -ENOMEM.”h]”hŒ an in-lookup dentry, or -ENOMEM.”…”�”}”(hj¿Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mhj³Vubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjßEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_instantiate (C function)”Œc.d_instantiate”hNt”auh1hýhjßEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ?void d_instantiate (struct dentry *entry, struct inode * inode)”h]”j)�”}”(hŒ=void d_instantiate(struct dentry *entry, struct inode *inode)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjîWh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjêWh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MÐubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýWh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjêWh²hh³jüWh´MÐubjC)�”}”(hŒ d_instantiate”h]”jI)�”}”(hŒ d_instantiate”h]”hŒ d_instantiate”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj Xubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjêWh²hh³jüWh´MÐubj=)�”}”(hŒ+(struct dentry *entry, struct inode *inode)”h]”(jC)�”}”(hŒstruct dentry *entry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj+Xh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj'Xubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8Xh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj'Xubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjIXh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjFXubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jKXŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjXsbŒc.d_instantiate”†”asbuh1hhj'Xubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiXh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj'Xubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjwXh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj'XubjI)�”}”(hŒentry”h]”hŒentry”…”�”}”(hj„Xh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj'Xubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj#XubjC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj�Xh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj™Xubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªXh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj™Xubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj»Xh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¸Xubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j½XŒmodname”NŒ classname”Njj )�”}”j ]”jeXŒc.d_instantiate”†”asbuh1hhj™Xubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙXh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj™Xubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjçXh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj™XubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjôXh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj™Xubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj#Xubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjêWh²hh³jüWh´MÐubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjæWh²hh³jüWh´MÐubah}”(h]”jáWah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jüWh´MÐhjãWh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ&fill in inode information for a dentry”h]”hŒ&fill in inode information for a dentry”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MÐhjYh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjãWh²hh³jüWh´MÐubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j6Yjšj6Yj›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hX‰**Parameters** ``struct dentry *entry`` dentry to complete ``struct inode * inode`` inode to attach to this dentry **Description** Fill in inode information in the entry. This turns negative dentries into productive full members of society. NOTE! This assumes that the inode count has been incremented (or otherwise set) by the caller to indicate that it is now in use by the dcache.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj@Yh]”hŒ Parameters”…”�”}”(hjBYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj>Yubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MÔhj:Yubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ,``struct dentry *entry`` dentry to complete ”h]”(jÊ)�”}”(hŒ``struct dentry *entry``”h]”jÐ)�”}”(hj_Yh]”hŒstruct dentry *entry”…”�”}”(hjaYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj]Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MÑhjYYubjæ)�”}”(hhh]”hÌ)�”}”(hŒdentry to complete”h]”hŒdentry to complete”…”�”}”(hjxYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jtYh´MÑhjuYubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjYYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jtYh´MÑhjVYubjÄ)�”}”(hŒ8``struct inode * inode`` inode to attach to this dentry ”h]”(jÊ)�”}”(hŒ``struct inode * inode``”h]”jÐ)�”}”(hj˜Yh]”hŒstruct inode * inode”…”�”}”(hjšYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj–Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MÒhj’Yubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode to attach to this dentry”h]”hŒinode to attach to this dentry”…”�”}”(hj±Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j­Yh´MÒhj®Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj’Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j­Yh´MÒhjVYubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj:YubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÓYh]”hŒ Description”…”�”}”(hjÕYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÑYubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MÔhj:YubhÌ)�”}”(hŒ'Fill in inode information in the entry.”h]”hŒ'Fill in inode information in the entry.”…”�”}”(hjéYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MÓhj:YubhÌ)�”}”(hŒEThis turns negative dentries into productive full members of society.”h]”hŒEThis turns negative dentries into productive full members of society.”…”�”}”(hjøYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MÕhj:YubhÌ)�”}”(hŒŽNOTE! This assumes that the inode count has been incremented (or otherwise set) by the caller to indicate that it is now in use by the dcache.”h]”hŒŽNOTE! This assumes that the inode count has been incremented (or otherwise set) by the caller to indicate that it is now in use by the dcache.”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MØhj:Yubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjßEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_obtain_alias (C function)”Œc.d_obtain_alias”hNt”auh1hýhjßEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ4struct dentry * d_obtain_alias (struct inode *inode)”h]”j)�”}”(hŒ2struct dentry *d_obtain_alias(struct inode *inode)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj6Zh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj2Zh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MK ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDZh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj2Zh²hh³jCZh´MK ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjUZh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjRZubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jWZŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒd_obtain_alias”sbŒc.d_obtain_alias”†”asbuh1hhj2Zh²hh³jCZh´MK ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvZh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj2Zh²hh³jCZh´MK ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj„Zh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj2Zh²hh³jCZh´MK ubjC)�”}”(hŒd_obtain_alias”h]”jI)�”}”(hjsZh]”hŒd_obtain_alias”…”�”}”(hj•Zh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‘Zubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj2Zh²hh³jCZh´MK ubj=)�”}”(hŒ(struct inode *inode)”h]”jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj°Zh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¬Zubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½Zh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¬Zubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjÎZh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjËZubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÐZŒmodname”NŒ classname”Njj )�”}”j ]”jqZŒc.d_obtain_alias”†”asbuh1hhj¬Zubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìZh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¬Zubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjúZh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¬ZubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¬Zubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¨Zubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj2Zh²hh³jCZh´MK ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj.Zh²hh³jCZh´MK ubah}”(h]”j)Zah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jCZh´MK hj+Zh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ8find or allocate a DISCONNECTED dentry for a given inode”h]”hŒ8find or allocate a DISCONNECTED dentry for a given inode”…”�”}”(hj1[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MK hj.[h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj+Zh²hh³jCZh´MK ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jI[jšjI[j›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hX/**Parameters** ``struct inode *inode`` inode to allocate the dentry for **Description** Obtain a dentry for an inode resulting from NFS filehandle conversion or similar open by handle operations. The returned dentry may be anonymous, or may have a full name (if the inode was already in the cache). When called on a directory inode, we must ensure that the inode only ever has one dentry. If a dentry is found, that is returned instead of allocating a new one. On successful return, the reference to the inode has been transferred to the dentry. In case of an error the reference on the inode is released. To make it easier to use in export operations a ``NULL`` or IS_ERR inode may be passed in and the error will be propagated to the return value, with a ``NULL`` **inode** replaced by ERR_PTR(-ESTALE).”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjS[h]”hŒ Parameters”…”�”}”(hjU[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjQ[ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MO hjM[ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ9``struct inode *inode`` inode to allocate the dentry for ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjr[h]”hŒstruct inode *inode”…”�”}”(hjt[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjp[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´ML hjl[ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ inode to allocate the dentry for”h]”hŒ inode to allocate the dentry for”…”�”}”(hj‹[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‡[h´ML hjˆ[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjl[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‡[h´ML hji[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjM[ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj­[h]”hŒ Description”…”�”}”(hj¯[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj«[ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MN hjM[ubhÌ)�”}”(hŒÓObtain a dentry for an inode resulting from NFS filehandle conversion or similar open by handle operations. The returned dentry may be anonymous, or may have a full name (if the inode was already in the cache).”h]”hŒÓObtain a dentry for an inode resulting from NFS filehandle conversion or similar open by handle operations. The returned dentry may be anonymous, or may have a full name (if the inode was already in the cache).”…”�”}”(hjÃ[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MM hjM[ubhÌ)�”}”(hŒ¢When called on a directory inode, we must ensure that the inode only ever has one dentry. If a dentry is found, that is returned instead of allocating a new one.”h]”hŒ¢When called on a directory inode, we must ensure that the inode only ever has one dentry. If a dentry is found, that is returned instead of allocating a new one.”…”�”}”(hjÒ[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MQ hjM[ubhÌ)�”}”(hXYOn successful return, the reference to the inode has been transferred to the dentry. In case of an error the reference on the inode is released. To make it easier to use in export operations a ``NULL`` or IS_ERR inode may be passed in and the error will be propagated to the return value, with a ``NULL`` **inode** replaced by ERR_PTR(-ESTALE).”h]”(hŒÂOn successful return, the reference to the inode has been transferred to the dentry. In case of an error the reference on the inode is released. To make it easier to use in export operations a ”…”�”}”(hjá[h²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjé[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjá[ubhŒ_ or IS_ERR inode may be passed in and the error will be propagated to the return value, with a ”…”�”}”(hjá[h²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjû[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjá[ubhŒ ”…”�”}”(hjá[h²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hj \h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjá[ubhŒ replaced by ERR_PTR(-ESTALE).”…”�”}”(hjá[h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MU hjM[ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjßEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_obtain_root (C function)”Œc.d_obtain_root”hNt”auh1hýhjßEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ3struct dentry * d_obtain_root (struct inode *inode)”h]”j)�”}”(hŒ1struct dentry *d_obtain_root(struct inode *inode)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjF\h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjB\h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mc ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT\h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjB\h²hh³jS\h´Mc ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hje\h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjb\ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jg\Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒ d_obtain_root”sbŒc.d_obtain_root”†”asbuh1hhjB\h²hh³jS\h´Mc ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†\h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjB\h²hh³jS\h´Mc ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj”\h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjB\h²hh³jS\h´Mc ubjC)�”}”(hŒ d_obtain_root”h]”jI)�”}”(hjƒ\h]”hŒ d_obtain_root”…”�”}”(hj¥\h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¡\ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjB\h²hh³jS\h´Mc ubj=)�”}”(hŒ(struct inode *inode)”h]”jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÀ\h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¼\ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍ\h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¼\ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjÞ\h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÛ\ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jà\Œmodname”NŒ classname”Njj )�”}”j ]”j�\Œc.d_obtain_root”†”asbuh1hhj¼\ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjü\h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¼\ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj ]h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¼\ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¼\ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¸\ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjB\h²hh³jS\h´Mc ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj>\h²hh³jS\h´Mc ubah}”(h]”j9\ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jS\h´Mc hj;\h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ+find or allocate a dentry for a given inode”h]”hŒ+find or allocate a dentry for a given inode”…”�”}”(hjA]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mc hj>]h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj;\h²hh³jS\h´Mc ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jY]jšjY]j›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hXR**Parameters** ``struct inode *inode`` inode to allocate the dentry for **Description** Obtain an IS_ROOT dentry for the root of a filesystem. We must ensure that directory inodes only ever have one dentry. If a dentry is found, that is returned instead of allocating a new one. On successful return, the reference to the inode has been transferred to the dentry. In case of an error the reference on the inode is released. A ``NULL`` or IS_ERR inode may be passed in and will be the error will be propagate to the return value, with a ``NULL`` **inode** replaced by ERR_PTR(-ESTALE).”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjc]h]”hŒ Parameters”…”�”}”(hje]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hja]ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mg hj]]ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ9``struct inode *inode`` inode to allocate the dentry for ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj‚]h]”hŒstruct inode *inode”…”�”}”(hj„]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj€]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Md hj|]ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ inode to allocate the dentry for”h]”hŒ inode to allocate the dentry for”…”�”}”(hj›]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j—]h´Md hj˜]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj|]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j—]h´Md hjy]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj]]ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj½]h]”hŒ Description”…”�”}”(hj¿]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj»]ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mf hj]]ubhÌ)�”}”(hŒ6Obtain an IS_ROOT dentry for the root of a filesystem.”h]”hŒ6Obtain an IS_ROOT dentry for the root of a filesystem.”…”�”}”(hjÓ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Me hj]]ubhÌ)�”}”(hŒˆWe must ensure that directory inodes only ever have one dentry. If a dentry is found, that is returned instead of allocating a new one.”h]”hŒˆWe must ensure that directory inodes only ever have one dentry. If a dentry is found, that is returned instead of allocating a new one.”…”�”}”(hjâ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mg hj]]ubhÌ)�”}”(hX3On successful return, the reference to the inode has been transferred to the dentry. In case of an error the reference on the inode is released. A ``NULL`` or IS_ERR inode may be passed in and will be the error will be propagate to the return value, with a ``NULL`` **inode** replaced by ERR_PTR(-ESTALE).”h]”(hŒ•On successful return, the reference to the inode has been transferred to the dentry. In case of an error the reference on the inode is released. A ”…”�”}”(hjñ]h²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjù]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjñ]ubhŒf or IS_ERR inode may be passed in and will be the error will be propagate to the return value, with a ”…”�”}”(hjñ]h²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjñ]ubhŒ ”…”�”}”(hjñ]h²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjñ]ubhŒ replaced by ERR_PTR(-ESTALE).”…”�”}”(hjñ]h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mj hj]]ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjßEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_add_ci (C function)”Œ c.d_add_ci”hNt”auh1hýhjßEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒXstruct dentry * d_add_ci (struct dentry *dentry, struct inode *inode, struct qstr *name)”h]”j)�”}”(hŒVstruct dentry *d_add_ci(struct dentry *dentry, struct inode *inode, struct qstr *name)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjV^h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjR^h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mx ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd^h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjR^h²hh³jc^h´Mx ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hju^h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjr^ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jw^Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒd_add_ci”sbŒ c.d_add_ci”†”asbuh1hhjR^h²hh³jc^h´Mx ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–^h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjR^h²hh³jc^h´Mx ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¤^h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjR^h²hh³jc^h´Mx ubjC)�”}”(hŒd_add_ci”h]”jI)�”}”(hj“^h]”hŒd_add_ci”…”�”}”(hjµ^h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj±^ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjR^h²hh³jc^h´Mx ubj=)�”}”(hŒ?(struct dentry *dentry, struct inode *inode, struct qstr *name)”h]”(jC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÐ^h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÌ^ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝ^h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÌ^ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjî^h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjë^ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jð^Œmodname”NŒ classname”Njj )�”}”j ]”j‘^Œ c.d_add_ci”†”asbuh1hhjÌ^ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj _h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÌ^ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÌ^ubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj'_h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÌ^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÈ^ubjC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj@_h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj<_ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM_h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj<_ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj^_h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj[_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j`_Œmodname”NŒ classname”Njj )�”}”j ]”j‘^Œ c.d_add_ci”†”asbuh1hhj<_ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|_h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj<_ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjŠ_h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj<_ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj—_h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj<_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÈ^ubjC)�”}”(hŒstruct qstr *name”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj°_h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¬_ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½_h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¬_ubh)�”}”(hhh]”jI)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(hjÎ_h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjË_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÐ_Œmodname”NŒ classname”Njj )�”}”j ]”j‘^Œ c.d_add_ci”†”asbuh1hhj¬_ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì_h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¬_ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjú_h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¬_ubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¬_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÈ^ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjR^h²hh³jc^h´Mx ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjN^h²hh³jc^h´Mx ubah}”(h]”jI^ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jc^h´Mx hjK^h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ2lookup or allocate new dentry with case-exact name”h]”hŒ2lookup or allocate new dentry with case-exact name”…”�”}”(hj1`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mx hj.`h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjK^h²hh³jc^h´Mx ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jI`jšjI`j›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hX°**Parameters** ``struct dentry *dentry`` the negative dentry that was passed to the parent's lookup func ``struct inode *inode`` the inode case-insensitive lookup has found ``struct qstr *name`` the case-exact name to be associated with the returned dentry **Description** This is to avoid filling the dcache with case-insensitive names to the same inode, only the actual correct case is stored in the dcache for case-insensitive filesystems. For a case-insensitive lookup match and if the case-exact dentry already exists in the dcache, use it and return it. If no entry exists with the exact case name, allocate new dentry with the exact case, and return the spliced entry.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjS`h]”hŒ Parameters”…”�”}”(hjU`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjQ`ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M| hjM`ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒZ``struct dentry *dentry`` the negative dentry that was passed to the parent's lookup func ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hjr`h]”hŒstruct dentry *dentry”…”�”}”(hjt`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjp`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´My hjl`ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ?the negative dentry that was passed to the parent's lookup func”h]”hŒAthe negative dentry that was passed to the parent’s lookup func”…”�”}”(hj‹`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‡`h´My hjˆ`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjl`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‡`h´My hji`ubjÄ)�”}”(hŒD``struct inode *inode`` the inode case-insensitive lookup has found ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj«`h]”hŒstruct inode *inode”…”�”}”(hj­`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj©`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mz hj¥`ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+the inode case-insensitive lookup has found”h]”hŒ+the inode case-insensitive lookup has found”…”�”}”(hjÄ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÀ`h´Mz hjÁ`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¥`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÀ`h´Mz hji`ubjÄ)�”}”(hŒT``struct qstr *name`` the case-exact name to be associated with the returned dentry ”h]”(jÊ)�”}”(hŒ``struct qstr *name``”h]”jÐ)�”}”(hjä`h]”hŒstruct qstr *name”…”�”}”(hjæ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjâ`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M{ hjÞ`ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ=the case-exact name to be associated with the returned dentry”h]”hŒ=the case-exact name to be associated with the returned dentry”…”�”}”(hjý`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jù`h´M{ hjú`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÞ`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jù`h´M{ hji`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjM`ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjah]”hŒ Description”…”�”}”(hj!ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M} hjM`ubhÌ)�”}”(hŒ©This is to avoid filling the dcache with case-insensitive names to the same inode, only the actual correct case is stored in the dcache for case-insensitive filesystems.”h]”hŒ©This is to avoid filling the dcache with case-insensitive names to the same inode, only the actual correct case is stored in the dcache for case-insensitive filesystems.”…”�”}”(hj5ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M| hjM`ubhÌ)�”}”(hŒtFor a case-insensitive lookup match and if the case-exact dentry already exists in the dcache, use it and return it.”h]”hŒtFor a case-insensitive lookup match and if the case-exact dentry already exists in the dcache, use it and return it.”…”�”}”(hjDah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M€ hjM`ubhÌ)�”}”(hŒsIf no entry exists with the exact case name, allocate new dentry with the exact case, and return the spliced entry.”h]”hŒsIf no entry exists with the exact case name, allocate new dentry with the exact case, and return the spliced entry.”…”�”}”(hjSah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mƒ hjM`ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjßEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_same_name (C function)”Œ c.d_same_name”hNt”auh1hýhjßEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒdbool d_same_name (const struct dentry *dentry, const struct dentry *parent, const struct qstr *name)”h]”j)�”}”(hŒcbool d_same_name(const struct dentry *dentry, const struct dentry *parent, const struct qstr *name)”h]”(j�)�”}”(hj„h]”hŒbool”…”�”}”(hj‚ah²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj~ah²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M­ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�ah²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj~ah²hh³j�ah´M­ ubjC)�”}”(hŒ d_same_name”h]”jI)�”}”(hŒ d_same_name”h]”hŒ d_same_name”…”�”}”(hj¢ah²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjžaubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj~ah²hh³j�ah´M­ ubj=)�”}”(hŒS(const struct dentry *dentry, const struct dentry *parent, const struct qstr *name)”h]”(jC)�”}”(hŒconst struct dentry *dentry”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj¾ah²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjºaubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËah²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjºaubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÙah²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjºaubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæah²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjºaubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj÷ah²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjôaubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jùaŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj¤asbŒ c.d_same_name”†”asbuh1hhjºaubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjºaubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj%bh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjºaubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj2bh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjºaubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¶aubjC)�”}”(hŒconst struct dentry *parent”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjKbh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjGbubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXbh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjGbubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjfbh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjGbubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsbh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjGbubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj„bh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�bubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j†bŒmodname”NŒ classname”Njj )�”}”j ]”jbŒ c.d_same_name”†”asbuh1hhjGbubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢bh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjGbubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj°bh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjGbubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hj½bh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjGbubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¶aubjC)�”}”(hŒconst struct qstr *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjÖbh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÒbubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãbh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÒbubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjñbh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÒbubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþbh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÒbubh)�”}”(hhh]”jI)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj cubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jcŒmodname”NŒ classname”Njj )�”}”j ]”jbŒ c.d_same_name”†”asbuh1hhjÒbubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-ch²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÒbubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj;ch²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÒbubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hjHch²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÒbubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¶aubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj~ah²hh³j�ah´M­ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjzah²hh³j�ah´M­ ubah}”(h]”juaah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j�ah´M­ hjwah²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ(compare dentry name with case-exact name”h]”hŒ(compare dentry name with case-exact name”…”�”}”(hjrch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M­ hjoch²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjwah²hh³j�ah´M­ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jŠcjšjŠcj›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hX-**Parameters** ``const struct dentry *dentry`` the negative dentry that was passed to the parent's lookup func ``const struct dentry *parent`` parent dentry ``const struct qstr *name`` the case-exact name to be associated with the returned dentry **Return** true if names are same, or false”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj”ch]”hŒ Parameters”…”�”}”(hj–ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj’cubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M± hjŽcubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ```const struct dentry *dentry`` the negative dentry that was passed to the parent's lookup func ”h]”(jÊ)�”}”(hŒ``const struct dentry *dentry``”h]”jÐ)�”}”(hj³ch]”hŒconst struct dentry *dentry”…”�”}”(hjµch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj±cubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M® hj­cubjæ)�”}”(hhh]”hÌ)�”}”(hŒ?the negative dentry that was passed to the parent's lookup func”h]”hŒAthe negative dentry that was passed to the parent’s lookup func”…”�”}”(hjÌch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÈch´M® hjÉcubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj­cubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÈch´M® hjªcubjÄ)�”}”(hŒ.``const struct dentry *parent`` parent dentry ”h]”(jÊ)�”}”(hŒ``const struct dentry *parent``”h]”jÐ)�”}”(hjìch]”hŒconst struct dentry *parent”…”�”}”(hjîch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjêcubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M¯ hjæcubjæ)�”}”(hhh]”hÌ)�”}”(hŒ parent dentry”h]”hŒ parent dentry”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jdh´M¯ hjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjæcubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jdh´M¯ hjªcubjÄ)�”}”(hŒZ``const struct qstr *name`` the case-exact name to be associated with the returned dentry ”h]”(jÊ)�”}”(hŒ``const struct qstr *name``”h]”jÐ)�”}”(hj%dh]”hŒconst struct qstr *name”…”�”}”(hj'dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj#dubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M° hjdubjæ)�”}”(hhh]”hÌ)�”}”(hŒ=the case-exact name to be associated with the returned dentry”h]”hŒ=the case-exact name to be associated with the returned dentry”…”�”}”(hj>dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j:dh´M° hj;dubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjdubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j:dh´M° hjªcubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjŽcubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj`dh]”hŒReturn”…”�”}”(hjbdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj^dubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M² hjŽcubhÌ)�”}”(hŒ true if names are same, or false”h]”hŒ true if names are same, or false”…”�”}”(hjvdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M² hjŽcubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjßEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_lookup (C function)”Œ c.d_lookup”hNt”auh1hýhjßEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒOstruct dentry * d_lookup (const struct dentry *parent, const struct qstr *name)”h]”j)�”}”(hŒMstruct dentry *d_lookup(const struct dentry *parent, const struct qstr *name)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¥dh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¡dh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MT ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³dh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¡dh²hh³j²dh´MT ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjÄdh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÁdubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÆdŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒd_lookup”sbŒ c.d_lookup”†”asbuh1hhj¡dh²hh³j²dh´MT ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjådh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¡dh²hh³j²dh´MT ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjódh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¡dh²hh³j²dh´MT ubjC)�”}”(hŒd_lookup”h]”jI)�”}”(hjâdh]”hŒd_lookup”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjeubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj¡dh²hh³j²dh´MT ubj=)�”}”(hŒ6(const struct dentry *parent, const struct qstr *name)”h]”(jC)�”}”(hŒconst struct dentry *parent”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjeubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,eh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjeubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj:eh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjeubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGeh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjeubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjXeh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjUeubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jZeŒmodname”NŒ classname”Njj )�”}”j ]”jàdŒ c.d_lookup”†”asbuh1hhjeubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjveh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjeubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj„eh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjeubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hj‘eh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjeubjC)�”}”(hŒconst struct qstr *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjªeh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¦eubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·eh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¦eubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÅeh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¦eubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒeh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¦eubh)�”}”(hhh]”jI)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(hjãeh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjàeubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jåeŒmodname”NŒ classname”Njj )�”}”j ]”jàdŒ c.d_lookup”†”asbuh1hhj¦eubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¦eubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¦eubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¦eubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjeubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj¡dh²hh³j²dh´MT ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj�dh²hh³j²dh´MT ubah}”(h]”j˜dah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j²dh´MT hjšdh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒsearch for a dentry”h]”hŒsearch for a dentry”…”�”}”(hjFfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MT hjCfh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjšdh²hh³j²dh´MT ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j^fjšj^fj›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hXË**Parameters** ``const struct dentry *parent`` parent dentry ``const struct qstr *name`` qstr of name we wish to find **Return** dentry, or NULL **Description** d_lookup searches the children of the parent dentry for the name in question. If the dentry is found its reference count is incremented and the dentry is returned. The caller must use dput to free the entry when it has finished using it. ``NULL`` is returned if the dentry does not exist.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjhfh]”hŒ Parameters”…”�”}”(hjjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjffubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MX hjbfubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ.``const struct dentry *parent`` parent dentry ”h]”(jÊ)�”}”(hŒ``const struct dentry *parent``”h]”jÐ)�”}”(hj‡fh]”hŒconst struct dentry *parent”…”�”}”(hj‰fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj…fubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MU hj�fubjæ)�”}”(hhh]”hÌ)�”}”(hŒ parent dentry”h]”hŒ parent dentry”…”�”}”(hj fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jœfh´MU hj�fubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj�fubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jœfh´MU hj~fubjÄ)�”}”(hŒ9``const struct qstr *name`` qstr of name we wish to find ”h]”(jÊ)�”}”(hŒ``const struct qstr *name``”h]”jÐ)�”}”(hjÀfh]”hŒconst struct qstr *name”…”�”}”(hjÂfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¾fubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MV hjºfubjæ)�”}”(hhh]”hÌ)�”}”(hŒqstr of name we wish to find”h]”hŒqstr of name we wish to find”…”�”}”(hjÙfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÕfh´MV hjÖfubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjºfubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÕfh´MV hj~fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjbfubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjûfh]”hŒReturn”…”�”}”(hjýfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjùfubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MX hjbfubhÌ)�”}”(hŒdentry, or NULL”h]”hŒdentry, or NULL”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MW hjbfubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj"gh]”hŒ Description”…”�”}”(hj$gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj gubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MY hjbfubhÌ)�”}”(hX d_lookup searches the children of the parent dentry for the name in question. If the dentry is found its reference count is incremented and the dentry is returned. The caller must use dput to free the entry when it has finished using it. ``NULL`` is returned if the dentry does not exist.”h]”(hŒîd_lookup searches the children of the parent dentry for the name in question. If the dentry is found its reference count is incremented and the dentry is returned. The caller must use dput to free the entry when it has finished using it. ”…”�”}”(hj8gh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj@gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj8gubhŒ* is returned if the dentry does not exist.”…”�”}”(hj8gh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MX hjbfubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjßEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_delete (C function)”Œ c.d_delete”hNt”auh1hýhjßEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ&void d_delete (struct dentry * dentry)”h]”j)�”}”(hŒ$void d_delete(struct dentry *dentry)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjygh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjugh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MÙ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆgh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjugh²hh³j‡gh´MÙ ubjC)�”}”(hŒd_delete”h]”jI)�”}”(hŒd_delete”h]”hŒd_delete”…”�”}”(hjšgh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj–gubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjugh²hh³j‡gh´MÙ ubj=)�”}”(hŒ(struct dentry *dentry)”h]”jC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¶gh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj²gubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃgh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj²gubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjÔgh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÑgubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÖgŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjœgsbŒ c.d_delete”†”asbuh1hhj²gubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôgh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj²gubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj²gubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj²gubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj®gubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjugh²hh³j‡gh´MÙ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjqgh²hh³j‡gh´MÙ ubah}”(h]”jlgah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j‡gh´MÙ hjngh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒdelete a dentry”h]”hŒdelete a dentry”…”�”}”(hj9hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MÙ hj6hh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjngh²hh³j‡gh´MÙ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jQhjšjQhj›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hŒË**Parameters** ``struct dentry * dentry`` The dentry to delete **Description** Turn the dentry into a negative dentry if possible, otherwise remove it from the hash queues so it can be deleted later”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj[hh]”hŒ Parameters”…”�”}”(hj]hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjYhubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MÝ hjUhubj¿)�”}”(hhh]”jÄ)�”}”(hŒ0``struct dentry * dentry`` The dentry to delete ”h]”(jÊ)�”}”(hŒ``struct dentry * dentry``”h]”jÐ)�”}”(hjzhh]”hŒstruct dentry * dentry”…”�”}”(hj|hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjxhubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MÚ hjthubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe dentry to delete”h]”hŒThe dentry to delete”…”�”}”(hj“hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�hh´MÚ hj�hubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjthubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j�hh´MÚ hjqhubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjUhubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjµhh]”hŒ Description”…”�”}”(hj·hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj³hubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MÜ hjUhubhÌ)�”}”(hŒwTurn the dentry into a negative dentry if possible, otherwise remove it from the hash queues so it can be deleted later”h]”hŒwTurn the dentry into a negative dentry if possible, otherwise remove it from the hash queues so it can be deleted later”…”�”}”(hjËhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MÛ hjUhubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjßEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_rehash (C function)”Œ c.d_rehash”hNt”auh1hýhjßEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ%void d_rehash (struct dentry * entry)”h]”j)�”}”(hŒ#void d_rehash(struct dentry *entry)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjúhh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjöhh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ih²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjöhh²hh³jih´M ubjC)�”}”(hŒd_rehash”h]”jI)�”}”(hŒd_rehash”h]”hŒd_rehash”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjiubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjöhh²hh³jih´M ubj=)�”}”(hŒ(struct dentry *entry)”h]”jC)�”}”(hŒstruct dentry *entry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj7ih²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj3iubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDih²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj3iubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjUih²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjRiubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jWiŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjisbŒ c.d_rehash”†”asbuh1hhj3iubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuih²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj3iubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjƒih²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj3iubjI)�”}”(hŒentry”h]”hŒentry”…”�”}”(hj�ih²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj3iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj/iubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjöhh²hh³jih´M ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjòhh²hh³jih´M ubah}”(h]”jíhah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jih´M hjïhh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒadd an entry back to the hash”h]”hŒadd an entry back to the hash”…”�”}”(hjºih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M hj·ih²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjïhh²hh³jih´M ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÒijšjÒi•j›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hŒˆ**Parameters** ``struct dentry * entry`` dentry to add to the hash **Description** Adds a dentry to the hash according to its name.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÜih]”hŒ Parameters”…”�”}”(hjÞih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÚiubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M hjÖiubj¿)�”}”(hhh]”jÄ)�”}”(hŒ4``struct dentry * entry`` dentry to add to the hash ”h]”(jÊ)�”}”(hŒ``struct dentry * entry``”h]”jÐ)�”}”(hjûih]”hŒstruct dentry * entry”…”�”}”(hjýih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjùiubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M hjõiubjæ)�”}”(hhh]”hÌ)�”}”(hŒdentry to add to the hash”h]”hŒdentry to add to the hash”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jjh´M hjjubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjõiubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jjh´M hjòiubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÖiubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj6jh]”hŒ Description”…”�”}”(hj8jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj4jubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M hjÖiubhÌ)�”}”(hŒ0Adds a dentry to the hash according to its name.”h]”hŒ0Adds a dentry to the hash according to its name.”…”�”}”(hjLjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M hjÖiubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjßEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_alloc_parallel (C function)”Œc.d_alloc_parallel”hNt”auh1hýhjßEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒQstruct dentry * d_alloc_parallel (struct dentry *parent, const struct qstr *name)”h]”j)�”}”(hŒOstruct dentry *d_alloc_parallel(struct dentry *parent, const struct qstr *name)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj{jh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjwjh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M­ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰jh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjwjh²hh³jˆjh´M­ ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjšjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj—jubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jœjŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒd_alloc_parallel”sbŒc.d_alloc_parallel”†”asbuh1hhjwjh²hh³jˆjh´M­ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»jh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjwjh²hh³jˆjh´M­ ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÉjh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjwjh²hh³jˆjh´M­ ubjC)�”}”(hŒd_alloc_parallel”h]”jI)�”}”(hj¸jh]”hŒd_alloc_parallel”…”�”}”(hjÚjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÖjubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjwjh²hh³jˆjh´M­ ubj=)�”}”(hŒ0(struct dentry *parent, const struct qstr *name)”h]”(jC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjõjh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjñjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjñjubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjkubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jkŒmodname”NŒ classname”Njj )�”}”j ]”j¶jŒc.d_alloc_parallel”†”asbuh1hhjñjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1kh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjñjubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj?kh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjñjubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjLkh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjñjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjíjubjC)�”}”(hŒconst struct qstr *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjekh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjakubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrkh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjakubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj€kh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjakubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�kh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjakubh)�”}”(hhh]”jI)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(hjžkh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj›kubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j kŒmodname”NŒ classname”Njj )�”}”j ]”j¶jŒc.d_alloc_parallel”†”asbuh1hhjakubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼kh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjakubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÊkh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjakubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj×kh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjakubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjíjubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjwjh²hh³jˆjh´M­ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjsjh²hh³jˆjh´M­ ubah}”(h]”jnjah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jˆjh´M­ hjpjh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ+allocate a new dentry and ensure uniqueness”h]”hŒ+allocate a new dentry and ensure uniqueness”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M­ hjþkh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjpjh²hh³jˆjh´M­ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jljšjlj›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hXp**Parameters** ``struct dentry *parent`` dentry of the parent ``const struct qstr *name`` name of the dentry within that parent. **Description** A new dentry is allocated and, providing it is unique, added to the relevant index. If an existing dentry is found with the same parent/name that is not d_in_lookup(), then that is returned instead. If the existing dentry is d_in_lookup(), d_alloc_parallel() waits for that lookup to complete before returning the dentry and then ensures the match is still valid. Thus if the returned dentry is d_in_lookup() then the caller has exclusive access until it completes the lookup. If the returned dentry is not d_in_lookup() then a lookup has already completed. The **name** must already have ->hash set, as can be achieved by e.g. try_lookup_noperm(). **Return** the dentry, whether found or allocated, or an error ``-ENOMEM``.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj#lh]”hŒ Parameters”…”�”}”(hj%lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj!lubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M± hjlubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ/``struct dentry *parent`` dentry of the parent ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hjBlh]”hŒstruct dentry *parent”…”�”}”(hjDlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj@lubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M® hjhash set, as can be achieved by e.g. try_lookup_noperm().”h]”(hŒThe ”…”�”}”(hjÛlh²hh³Nh´Nubj©)�”}”(hŒ**name**”h]”hŒname”…”�”}”(hjãlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÛlubhŒN must already have ->hash set, as can be achieved by e.g. try_lookup_noperm().”…”�”}”(hjÛlh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M¼ hjlubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjþlh]”hŒReturn”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjülubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M¿ hjlubhÌ)�”}”(hŒ@the dentry, whether found or allocated, or an error ``-ENOMEM``.”h]”(hŒ4the dentry, whether found or allocated, or an error ”…”�”}”(hjmh²hh³Nh´NubjÐ)�”}”(hŒ ``-ENOMEM``”h]”hŒ-ENOMEM”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjmubhŒ.”…”�”}”(hjmh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MÀ hjlubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjßEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_alloc_trylock (C function)”Œc.d_alloc_trylock”hNt”auh1hýhjßEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒJstruct dentry * d_alloc_trylock (struct dentry *parent, struct qstr *name)”h]”j)�”}”(hŒHstruct dentry *d_alloc_trylock(struct dentry *parent, struct qstr *name)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjUmh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjQmh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MÊ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcmh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjQmh²hh³jbmh´MÊ ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjtmh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjqmubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jvmŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒd_alloc_trylock”sbŒc.d_alloc_trylock”†”asbuh1hhjQmh²hh³jbmh´MÊ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•mh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjQmh²hh³jbmh´MÊ ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj£mh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjQmh²hh³jbmh´MÊ ubjC)�”}”(hŒd_alloc_trylock”h]”jI)�”}”(hj’mh]”hŒd_alloc_trylock”…”�”}”(hj´mh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj°mubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjQmh²hh³jbmh´MÊ ubj=)�”}”(hŒ*(struct dentry *parent, struct qstr *name)”h]”(jC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÏmh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjËmubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜmh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjËmubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjímh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjêmubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jïmŒmodname”NŒ classname”Njj )�”}”j ]”j�mŒc.d_alloc_trylock”†”asbuh1hhjËmubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj nh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjËmubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjËmubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hj&nh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjËmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÇmubjC)�”}”(hŒstruct qstr *name”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj?nh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj;nubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLnh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj;nubh)�”}”(hhh]”jI)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(hj]nh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjZnubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j_nŒmodname”NŒ classname”Njj )�”}”j ]”j�mŒc.d_alloc_trylock”†”asbuh1hhj;nubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{nh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj;nubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj‰nh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj;nubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj–nh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj;nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÇmubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjQmh²hh³jbmh´MÊ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjMmh²hh³jbmh´MÊ ubah}”(h]”jHmah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jbmh´MÊ hjJmh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒfind or allocate a new dentry”h]”hŒfind or allocate a new dentry”…”�”}”(hjÀnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MÊ hj½nh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjJmh²hh³jbmh´MÊ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jØnjšjØnj›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hXK**Parameters** ``struct dentry *parent`` dentry of the parent ``struct qstr *name`` name of the dentry within that parent. **Description** A new dentry is allocated and, providing it is unique, added to the relevant index. If an existing dentry is found with the same parent/name that is not d_in_lookup() then that is returned instead. If the existing dentry is d_in_lookup(), d_alloc_trylock() returns with error ``-EWOULDBLOCK``. Thus if the returned dentry is d_in_lookup() then the caller has exclusive access until it completes the lookup. If the returned dentry is not d_in_lookup() then a lookup has already completed. The **name** need not already have ->hash set. **Return** the dentry, whether found or allocated, or an error ``-ENOMEM``, ``-EWOULDBLOCK``, ``-EACCES`` (for a bad name) or anything returned by ->d_hash().”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjânh]”hŒ Parameters”…”�”}”(hjänh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjànubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MÎ hjÜnubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ/``struct dentry *parent`` dentry of the parent ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hjoh]”hŒstruct dentry *parent”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÿnubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MË hjûnubjæ)�”}”(hhh]”hÌ)�”}”(hŒdentry of the parent”h]”hŒdentry of the parent”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³joh´MË hjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjûnubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³joh´MË hjønubjÄ)�”}”(hŒ=``struct qstr *name`` name of the dentry within that parent. ”h]”(jÊ)�”}”(hŒ``struct qstr *name``”h]”jÐ)�”}”(hj:oh]”hŒstruct qstr *name”…”�”}”(hjhash set.”h]”(hŒThe ”…”�”}”(hj¬oh²hh³Nh´Nubj©)�”}”(hŒ**name**”h]”hŒname”…”�”}”(hj´oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¬oubhŒ" need not already have ->hash set.”…”�”}”(hj¬oh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MØ hjÜnubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjÏoh]”hŒReturn”…”�”}”(hjÑoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÍoubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MÚ hjÜnubhÌ)�”}”(hŒ“the dentry, whether found or allocated, or an error ``-ENOMEM``, ``-EWOULDBLOCK``, ``-EACCES`` (for a bad name) or anything returned by ->d_hash().”h]”(hŒ4the dentry, whether found or allocated, or an error ”…”�”}”(hjåoh²hh³Nh´NubjÐ)�”}”(hŒ ``-ENOMEM``”h]”hŒ-ENOMEM”…”�”}”(hjíoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjåoubhŒ, ”…”�”}”(hjåoh²hh³Nh´NubjÐ)�”}”(hŒ``-EWOULDBLOCK``”h]”hŒ -EWOULDBLOCK”…”�”}”(hjÿoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjåoubhŒ, ”…”�”}”hjåosbjÐ)�”}”(hŒ ``-EACCES``”h]”hŒ-EACCES”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjåoubhŒ5 (for a bad name) or anything returned by ->d_hash().”…”�”}”(hjåoh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MÛ hjÜnubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjßEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_add (C function)”Œc.d_add”hNt”auh1hýhjßEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ6void d_add (struct dentry *entry, struct inode *inode)”h]”j)�”}”(hŒ5void d_add(struct dentry *entry, struct inode *inode)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjJph²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjFph²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M; ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYph²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjFph²hh³jXph´M; ubjC)�”}”(hŒd_add”h]”jI)�”}”(hŒd_add”h]”hŒd_add”…”�”}”(hjkph²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjgpubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjFph²hh³jXph´M; ubj=)�”}”(hŒ+(struct dentry *entry, struct inode *inode)”h]”(jC)�”}”(hŒstruct dentry *entry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj‡ph²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjƒpubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”ph²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjƒpubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj¥ph²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¢pubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j§pŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjmpsbŒc.d_add”†”asbuh1hhjƒpubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅph²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjƒpubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÓph²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjƒpubjI)�”}”(hŒentry”h]”hŒentry”…”�”}”(hjàph²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjƒpubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjpubjC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjùph²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjõpubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjõpubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjqubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jqŒmodname”NŒ classname”Njj )�”}”j ]”jÁpŒc.d_add”†”asbuh1hhjõpubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5qh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjõpubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjCqh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjõpubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjPqh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjõpubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjpubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjFph²hh³jXph´M; ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjBph²hh³jXph´M; ubah}”(h]”j=pah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jXph´M; hj?ph²hubjw)�”}”(hhh]”hÌ)�”}”(hŒadd dentry to hash queues”h]”hŒadd dentry to hash queues”…”�”}”(hjzqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M; hjwqh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj?ph²hh³jXph´M; ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j’qjšj’qj›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hX**Parameters** ``struct dentry *entry`` dentry to add ``struct inode *inode`` The inode to attach to this dentry **Description** This adds the entry to the hash queues and initializes **inode**. The entry was actually filled in earlier during d_alloc().”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjœqh]”hŒ Parameters”…”�”}”(hjžqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjšqubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M? hj–qubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ'``struct dentry *entry`` dentry to add ”h]”(jÊ)�”}”(hŒ``struct dentry *entry``”h]”jÐ)�”}”(hj»qh]”hŒstruct dentry *entry”…”�”}”(hj½qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¹qubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M< hjµqubjæ)�”}”(hhh]”hÌ)�”}”(hŒ dentry to add”h]”hŒ dentry to add”…”�”}”(hjÔqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÐqh´M< hjÑqubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjµqubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÐqh´M< hj²qubjÄ)�”}”(hŒ;``struct inode *inode`` The inode to attach to this dentry ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjôqh]”hŒstruct inode *inode”…”�”}”(hjöqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjòqubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M= hjîqubjæ)�”}”(hhh]”hÌ)�”}”(hŒ"The inode to attach to this dentry”h]”hŒ"The inode to attach to this dentry”…”�”}”(hj rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j rh´M= hj rubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjîqubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j rh´M= hj²qubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj–qubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj/rh]”hŒ Description”…”�”}”(hj1rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj-rubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M? hj–qubhÌ)�”}”(hŒ|This adds the entry to the hash queues and initializes **inode**. The entry was actually filled in earlier during d_alloc().”h]”(hŒ7This adds the entry to the hash queues and initializes ”…”�”}”(hjErh²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hjMrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjErubhŒ<. The entry was actually filled in earlier during d_alloc().”…”�”}”(hjErh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M> hj–qubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjßEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_splice_alias (C function)”Œc.d_splice_alias”hNt”auh1hýhjßEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒKstruct dentry * d_splice_alias (struct inode *inode, struct dentry *dentry)”h]”j)�”}”(hŒIstruct dentry *d_splice_alias(struct inode *inode, struct dentry *dentry)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj†rh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj‚rh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M’ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”rh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‚rh²hh³j“rh´M’ ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj¥rh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¢rubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j§rŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒd_splice_alias”sbŒc.d_splice_alias”†”asbuh1hhj‚rh²hh³j“rh´M’ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆrh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‚rh²hh³j“rh´M’ ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÔrh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj‚rh²hh³j“rh´M’ ubjC)�”}”(hŒd_splice_alias”h]”jI)�”}”(hjÃrh]”hŒd_splice_alias”…”�”}”(hjårh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjárubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj‚rh²hh³j“rh´M’ ubj=)�”}”(hŒ,(struct inode *inode, struct dentry *dentry)”h]”(jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjürubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj sh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjürubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjsubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j sŒmodname”NŒ classname”Njj )�”}”j ]”jÁrŒc.d_splice_alias”†”asbuh1hhjürubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjah"]”h$]”h&]”uh1j1hjürubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjJsh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjürubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjWsh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjürubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjørubjC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjpsh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjlsubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}sh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjlsubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjŽsh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‹subah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j�sŒmodname”NŒ classname”Njj )�”}”j ]”jÁrŒc.d_splice_alias”†”asbuh1hhjlsubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬sh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjlsubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjºsh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjlsubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjÇsh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjlsubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjørubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj‚rh²hh³j“rh´M’ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj~rh²hh³j“rh´M’ ubah}”(h]”jyrah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j“rh´M’ hj{rh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ8splice a disconnected dentry into the tree if one exists”h]”hŒ8splice a disconnected dentry into the tree if one exists”…”�”}”(hjñsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M’ hjîsh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj{rh²hh³j“rh´M’ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j tjšj tj›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hX~**Parameters** ``struct inode *inode`` the inode which may have a disconnected dentry ``struct dentry *dentry`` a negative dentry which we want to point to the inode. **Description** **dentry** must be negative and may be in-lookup or unhashed or hashed. If inode is a directory and has an IS_ROOT alias, then d_move that in place of the given dentry and return it, else simply d_add the inode to the dentry and return NULL. If a non-IS_ROOT directory is found, the filesystem is corrupt, and we should error out: directories can't have multiple aliases. This should be used to return the result of ->lookup() and to instantiate the result of ->mkdir(), is often useful for ->atomic_open, and may be used to instantiate other objects. If a dentry was found and moved, then it is returned. Otherwise NULL is returned. This matches the expected return value of ->lookup and ->mkdir.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjth]”hŒ Parameters”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjtubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M– hj tubj¿)�”}”(hhh]”(jÄ)�”}”(hŒG``struct inode *inode`` the inode which may have a disconnected dentry ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj2th]”hŒstruct inode *inode”…”�”}”(hj4th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj0tubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M“ hj,tubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.the inode which may have a disconnected dentry”h]”hŒ.the inode which may have a disconnected dentry”…”�”}”(hjKth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jGth´M“ hjHtubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj,tubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jGth´M“ hj)tubjÄ)�”}”(hŒQ``struct dentry *dentry`` a negative dentry which we want to point to the inode. ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hjkth]”hŒstruct dentry *dentry”…”�”}”(hjmth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjitubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M” hjetubjæ)�”}”(hhh]”hÌ)�”}”(hŒ6a negative dentry which we want to point to the inode.”h]”hŒ6a negative dentry which we want to point to the inode.”…”�”}”(hj„th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j€th´M” hj�tubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjetubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j€th´M” hj)tubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj tubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj¦th]”hŒ Description”…”�”}”(hj¨th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¤tubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M– hj tubhÌ)�”}”(hŒG**dentry** must be negative and may be in-lookup or unhashed or hashed.”h]”(j©)�”}”(hŒ **dentry**”h]”hŒdentry”…”�”}”(hjÀth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¼tubhŒ= must be negative and may be in-lookup or unhashed or hashed.”…”�”}”(hj¼th²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M• hj tubhÌ)�”}”(hŒ©If inode is a directory and has an IS_ROOT alias, then d_move that in place of the given dentry and return it, else simply d_add the inode to the dentry and return NULL.”h]”hŒ©If inode is a directory and has an IS_ROOT alias, then d_move that in place of the given dentry and return it, else simply d_add the inode to the dentry and return NULL.”…”�”}”(hjÙth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M— hj tubhÌ)�”}”(hŒ�If a non-IS_ROOT directory is found, the filesystem is corrupt, and we should error out: directories can't have multiple aliases.”h]”hŒƒIf a non-IS_ROOT directory is found, the filesystem is corrupt, and we should error out: directories can’t have multiple aliases.”…”�”}”(hjèth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M› hj tubhÌ)�”}”(hŒ³This should be used to return the result of ->lookup() and to instantiate the result of ->mkdir(), is often useful for ->atomic_open, and may be used to instantiate other objects.”h]”hŒ³This should be used to return the result of ->lookup() and to instantiate the result of ->mkdir(), is often useful for ->atomic_open, and may be used to instantiate other objects.”…”�”}”(hj÷th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mž hj tubhÌ)�”}”(hŒ“If a dentry was found and moved, then it is returned. Otherwise NULL is returned. This matches the expected return value of ->lookup and ->mkdir.”h]”hŒ“If a dentry was found and moved, then it is returned. Otherwise NULL is returned. This matches the expected return value of ->lookup and ->mkdir.”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M¢ hj tubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjßEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œis_subdir (C function)”Œ c.is_subdir”hNt”auh1hýhjßEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒEbool is_subdir (struct dentry *new_dentry, struct dentry *old_dentry)”h]”j)�”}”(hŒDbool is_subdir(struct dentry *new_dentry, struct dentry *old_dentry)”h]”(j�)�”}”(hj„h]”hŒbool”…”�”}”(hj5uh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj1uh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mµ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCuh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj1uh²hh³jBuh´Mµ ubjC)�”}”(hŒ is_subdir”h]”jI)�”}”(hŒ is_subdir”h]”hŒ is_subdir”…”�”}”(hjUuh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjQuubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj1uh²hh³jBuh´Mµ ubj=)�”}”(hŒ6(struct dentry *new_dentry, struct dentry *old_dentry)”h]”(jC)�”}”(hŒstruct dentry *new_dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjquh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjmuubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~uh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjmuubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj�uh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŒuubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j‘uŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjWusbŒ c.is_subdir”†”asbuh1hhjmuubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯uh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjmuubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj½uh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjmuubjI)�”}”(hŒ new_dentry”h]”hŒ new_dentry”…”�”}”(hjÊuh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjmuubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjiuubjC)�”}”(hŒstruct dentry *old_dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjãuh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjßuubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðuh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjßuubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjþuubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jvŒmodname”NŒ classname”Njj )�”}”j ]”j«uŒ c.is_subdir”†”asbuh1hhjßuubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjßuubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj-vh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjßuubjI)�”}”(hŒ old_dentry”h]”hŒ old_dentry”…”�”}”(hj:vh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjßuubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjiuubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj1uh²hh³jBuh´Mµ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj-uh²hh³jBuh´Mµ ubah}”(h]”j(uah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jBuh´Mµ hj*uh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ*is new dentry a subdirectory of old_dentry”h]”hŒ*is new dentry a subdirectory of old_dentry”…”�”}”(hjdvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mµ hjavh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj*uh²hh³jBuh´Mµ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j|vjšj|vj›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hX&**Parameters** ``struct dentry *new_dentry`` new dentry ``struct dentry *old_dentry`` old dentry **Description** Returns true if new_dentry is a subdirectory of the parent (at any depth). Returns false otherwise. Caller must ensure that "new_dentry" is pinned before calling is_subdir()”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj†vh]”hŒ Parameters”…”�”}”(hjˆvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj„vubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M¹ hj€vubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ)``struct dentry *new_dentry`` new dentry ”h]”(jÊ)�”}”(hŒ``struct dentry *new_dentry``”h]”jÐ)�”}”(hj¥vh]”hŒstruct dentry *new_dentry”…”�”}”(hj§vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj£vubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M¶ hjŸvubjæ)�”}”(hhh]”hÌ)�”}”(hŒ new dentry”h]”hŒ new dentry”…”�”}”(hj¾vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jºvh´M¶ hj»vubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjŸvubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jºvh´M¶ hjœvubjÄ)�”}”(hŒ)``struct dentry *old_dentry`` old dentry ”h]”(jÊ)�”}”(hŒ``struct dentry *old_dentry``”h]”jÐ)�”}”(hjÞvh]”hŒstruct dentry *old_dentry”…”�”}”(hjàvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÜvubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M· hjØvubjæ)�”}”(hhh]”hÌ)�”}”(hŒ old dentry”h]”hŒ old dentry”…”�”}”(hj÷vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jóvh´M· hjôvubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjØvubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jóvh´M· hjœvubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj€vubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjwh]”hŒ Description”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjwubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M¹ hj€vubhÌ)�”}”(hŒ­Returns true if new_dentry is a subdirectory of the parent (at any depth). Returns false otherwise. Caller must ensure that "new_dentry" is pinned before calling is_subdir()”h]”hŒ±Returns true if new_dentry is a subdirectory of the parent (at any depth). Returns false otherwise. Caller must ensure that “new_dentryâ€� is pinned before calling is_subdir()”…”�”}”(hj/wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M¸ hj€vubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjßEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdget_dlock (C function)”Œ c.dget_dlock”hNt”auh1hýhjßEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ2struct dentry * dget_dlock (struct dentry *dentry)”h]”j)�”}”(hŒ0struct dentry *dget_dlock(struct dentry *dentry)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj^wh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjZwh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MMubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlwh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjZwh²hh³jkwh´MMubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj}wh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjzwubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jwŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒ dget_dlock”sbŒ c.dget_dlock”†”asbuh1hhjZwh²hh³jkwh´MMubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžwh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjZwh²hh³jkwh´MMubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¬wh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjZwh²hh³jkwh´MMubjC)�”}”(hŒ dget_dlock”h]”jI)�”}”(hj›wh]”hŒ dget_dlock”…”�”}”(hj½wh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¹wubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjZwh²hh³jkwh´MMubj=)�”}”(hŒ(struct dentry *dentry)”h]”jC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjØwh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÔwubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåwh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÔwubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjöwh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjówubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jøwŒmodname”NŒ classname”Njj )�”}”j ]”j™wŒ c.dget_dlock”†”asbuh1hhjÔwubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÔwubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj"xh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÔwubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj/xh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÔwubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÐwubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjZwh²hh³jkwh´MMubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjVwh²hh³jkwh´MMubah}”(h]”jQwah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jkwh´MMhjSwh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒget a reference to a dentry”h]”hŒget a reference to a dentry”…”�”}”(hjYxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MMhjVxh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjSwh²hh³jkwh´MMubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jqxjšjqxj›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hX±**Parameters** ``struct dentry *dentry`` dentry to get a reference to **Description** Given a live dentry, increment the reference count and return the dentry. Caller must hold **dentry->d_lock**. Making sure that dentry is alive is caller's resonsibility. There are many conditions sufficient to guarantee that; e.g. anything with non-negative refcount is alive, so's anything hashed, anything positive, anyone's parent, etc.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj{xh]”hŒ Parameters”…”�”}”(hj}xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjyxubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MQhjuxubj¿)�”}”(hhh]”jÄ)�”}”(hŒ7``struct dentry *dentry`` dentry to get a reference to ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hjšxh]”hŒstruct dentry *dentry”…”�”}”(hjœxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj˜xubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MNhj”xubjæ)�”}”(hhh]”hÌ)�”}”(hŒdentry to get a reference to”h]”hŒdentry to get a reference to”…”�”}”(hj³xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¯xh´MNhj°xubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj”xubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¯xh´MNhj‘xubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjuxubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÕxh]”hŒ Description”…”�”}”(hj×xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÓxubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MPhjuxubhÌ)�”}”(hXVGiven a live dentry, increment the reference count and return the dentry. Caller must hold **dentry->d_lock**. Making sure that dentry is alive is caller's resonsibility. There are many conditions sufficient to guarantee that; e.g. anything with non-negative refcount is alive, so's anything hashed, anything positive, anyone's parent, etc.”h]”(hŒ[Given a live dentry, increment the reference count and return the dentry. Caller must hold ”…”�”}”(hjëxh²hh³Nh´Nubj©)�”}”(hŒ**dentry->d_lock**”h]”hŒdentry->d_lock”…”�”}”(hjóxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjëxubhŒï. Making sure that dentry is alive is caller’s resonsibility. There are many conditions sufficient to guarantee that; e.g. anything with non-negative refcount is alive, so’s anything hashed, anything positive, anyone’s parent, etc.”…”�”}”(hjëxh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MOhjuxubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjßEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdget (C function)”Œc.dget”hNt”auh1hýhjßEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ,struct dentry * dget (struct dentry *dentry)”h]”j)�”}”(hŒ*struct dentry *dget(struct dentry *dentry)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj,yh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj(yh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M^ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:yh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj(yh²hh³j9yh´M^ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjKyh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjHyubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jMyŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒdget”sbŒc.dget”†”asbuh1hhj(yh²hh³j9yh´M^ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlyh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj(yh²hh³j9yh´M^ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjzyh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj(yh²hh³j9yh´M^ubjC)�”}”(hŒdget”h]”jI)�”}”(hjiyh]”hŒdget”…”�”}”(hj‹yh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‡yubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj(yh²hh³j9yh´M^ubj=)�”}”(hŒ(struct dentry *dentry)”h]”jC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¦yh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¢yubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³yh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¢yubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjÄyh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÁyubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÆyŒmodname”NŒ classname”Njj )�”}”j ]”jgyŒc.dget”†”asbuh1hhj¢yubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâyh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¢yubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjðyh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¢yubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjýyh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¢yubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjžyubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj(yh²hh³j9yh´M^ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj$yh²hh³j9yh´M^ubah}”(h]”jyah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j9yh´M^hj!yh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒget a reference to a dentry”h]”hŒget a reference to a dentry”…”�”}”(hj'zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M^hj$zh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj!yh²hh³j9yh´M^ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j?zjšj?zj›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hXû**Parameters** ``struct dentry *dentry`` dentry to get a reference to **Description** Given a dentry or ``NULL`` pointer increment the reference count if appropriate and return the dentry. A dentry will not be destroyed when it has references. Conversely, a dentry with no references can disappear for any number of reasons, starting with memory pressure. In other words, that primitive is used to clone an existing reference; using it on something with zero refcount is a bug. **NOTE** it will spin if **dentry->d_lock** is held. From the deadlock avoidance point of view it is equivalent to spin_lock()/increment refcount/spin_unlock(), so calling it under **dentry->d_lock** is always a bug; so's calling it under ->d_lock on any of its descendents.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjIzh]”hŒ Parameters”…”�”}”(hjKzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjGzubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MbhjCzubj¿)�”}”(hhh]”jÄ)�”}”(hŒ7``struct dentry *dentry`` dentry to get a reference to ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hjhzh]”hŒstruct dentry *dentry”…”�”}”(hjjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjfzubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M_hjbzubjæ)�”}”(hhh]”hÌ)�”}”(hŒdentry to get a reference to”h]”hŒdentry to get a reference to”…”�”}”(hj�zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j}zh´M_hj~zubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjbzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j}zh´M_hj_zubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjCzubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj£zh]”hŒ Description”…”�”}”(hj¥zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¡zubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MahjCzubhÌ)�”}”(hXŠGiven a dentry or ``NULL`` pointer increment the reference count if appropriate and return the dentry. A dentry will not be destroyed when it has references. Conversely, a dentry with no references can disappear for any number of reasons, starting with memory pressure. In other words, that primitive is used to clone an existing reference; using it on something with zero refcount is a bug.”h]”(hŒGiven a dentry or ”…”�”}”(hj¹zh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjÁzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¹zubhXp pointer increment the reference count if appropriate and return the dentry. A dentry will not be destroyed when it has references. Conversely, a dentry with no references can disappear for any number of reasons, starting with memory pressure. In other words, that primitive is used to clone an existing reference; using it on something with zero refcount is a bug.”…”�”}”(hj¹zh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M`hjCzubhÌ)�”}”(hŒ**NOTE**”h]”j©)�”}”(hjÜzh]”hŒNOTE”…”�”}”(hjÞzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÚzubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MhhjCzubhÌ)�”}”(hX it will spin if **dentry->d_lock** is held. From the deadlock avoidance point of view it is equivalent to spin_lock()/increment refcount/spin_unlock(), so calling it under **dentry->d_lock** is always a bug; so's calling it under ->d_lock on any of its descendents.”h]”(hŒit will spin if ”…”�”}”(hjòzh²hh³Nh´Nubj©)�”}”(hŒ**dentry->d_lock**”h]”hŒdentry->d_lock”…”�”}”(hjúzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjòzubhŒ‹ is held. From the deadlock avoidance point of view it is equivalent to spin_lock()/increment refcount/spin_unlock(), so calling it under ”…”�”}”(hjòzh²hh³Nh´Nubj©)�”}”(hŒ**dentry->d_lock**”h]”hŒdentry->d_lock”…”�”}”(hj {h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjòzubhŒM is always a bug; so’s calling it under ->d_lock on any of its descendents.”…”�”}”(hjòzh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MihjCzubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjßEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_unhashed (C function)”Œ c.d_unhashed”hNt”auh1hýhjßEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ,int d_unhashed (const struct dentry *dentry)”h]”j)�”}”(hŒ+int d_unhashed(const struct dentry *dentry)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjE{h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjA{h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M‹ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT{h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjA{h²hh³jS{h´M‹ubjC)�”}”(hŒ d_unhashed”h]”jI)�”}”(hŒ d_unhashed”h]”hŒ d_unhashed”…”�”}”(hjf{h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjb{ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjA{h²hh³jS{h´M‹ubj=)�”}”(hŒ(const struct dentry *dentry)”h]”jC)�”}”(hŒconst struct dentry *dentry”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj‚{h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj~{ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�{h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj~{ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj�{h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj~{ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjª{h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj~{ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj»{h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¸{ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j½{Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjh{sbŒ c.d_unhashed”†”asbuh1hhj~{ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ{h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj~{ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjé{h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj~{ubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjö{h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj~{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjz{ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjA{h²hh³jS{h´M‹ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj={h²hh³jS{h´M‹ubah}”(h]”j8{ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jS{h´M‹hj:{h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒis dentry hashed”h]”hŒis dentry hashed”…”�”}”(hj |h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M‹hj|h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj:{h²hh³jS{h´M‹ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j8|jšj8|j›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hŒ�**Parameters** ``const struct dentry *dentry`` entry to check **Description** Returns true if the dentry passed is not currently hashed.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjB|h]”hŒ Parameters”…”�”}”(hjD|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj@|ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M�hj<|ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ/``const struct dentry *dentry`` entry to check ”h]”(jÊ)�”}”(hŒ``const struct dentry *dentry``”h]”jÐ)�”}”(hja|h]”hŒconst struct dentry *dentry”…”�”}”(hjc|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj_|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MŒhj[|ubjæ)�”}”(hhh]”hÌ)�”}”(hŒentry to check”h]”hŒentry to check”…”�”}”(hjz|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jv|h´MŒhjw|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj[|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jv|h´MŒhjX|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj<|ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjœ|h]”hŒ Description”…”�”}”(hjž|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjš|ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MŽhj<|ubhÌ)�”}”(hŒ:Returns true if the dentry passed is not currently hashed.”h]”hŒ:Returns true if the dentry passed is not currently hashed.”…”�”}”(hj²|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M�hj<|ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjßEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ!d_really_is_negative (C function)”Œc.d_really_is_negative”hNt”auh1hýhjßEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ7bool d_really_is_negative (const struct dentry *dentry)”h]”j)�”}”(hŒ6bool d_really_is_negative(const struct dentry *dentry)”h]”(j�)�”}”(hj„h]”hŒbool”…”�”}”(hjá|h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÝ|h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï|h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÝ|h²hh³jî|h´MubjC)�”}”(hŒd_really_is_negative”h]”jI)�”}”(hŒd_really_is_negative”h]”hŒd_really_is_negative”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjý|ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÝ|h²hh³jî|h´Mubj=)�”}”(hŒ(const struct dentry *dentry)”h]”jC)�”}”(hŒconst struct dentry *dentry”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj}ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*}h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj}ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj8}h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj}ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE}h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj}ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjV}h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjS}ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jX}Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj}sbŒc.d_really_is_negative”†”asbuh1hhj}ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv}h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj}ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj„}h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj}ubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj‘}h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj}ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj}ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÝ|h²hh³jî|h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÙ|h²hh³jî|h´Mubah}”(h]”jÔ|ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jî|h´MhjÖ|h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ@Determine if a dentry is really negative (ignoring fallthroughs)”h]”hŒ@Determine if a dentry is really negative (ignoring fallthroughs)”…”�”}”(hj»}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´Mhj¸}h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÖ|h²hh³jî|h´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÓ}jšjÓ}j›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hXÔ**Parameters** ``const struct dentry *dentry`` The dentry in question **Description** Returns true if the dentry represents either an absent name or a name that doesn't map to an inode (ie. ->d_inode is NULL). The dentry could represent a true miss, a whiteout that isn't represented by a 0,0 chardev or a fallthrough marker in an opaque directory. Note! (1) This should be used *only* by a filesystem to examine its own dentries. It should not be used to look at some other filesystem's dentries. (2) It should also be used in combination with d_inode() to get the inode. (3) The dentry may have something attached to ->d_lower and the type field of the flags may be set to something other than miss or whiteout.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÝ}h]”hŒ Parameters”…”�”}”(hjß}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÛ}ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M hj×}ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ7``const struct dentry *dentry`` The dentry in question ”h]”(jÊ)�”}”(hŒ``const struct dentry *dentry``”h]”jÐ)�”}”(hjü}h]”hŒconst struct dentry *dentry”…”�”}”(hjþ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjú}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”•h´Mhjö}ubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe dentry in question”h]”hŒThe dentry in question”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j~h´Mhj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjö}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j~h´Mhjó}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj×}ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj7~h]”hŒ Description”…”�”}”(hj9~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj5~ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´Mhj×}ubhÌ)�”}”(hXReturns true if the dentry represents either an absent name or a name that doesn't map to an inode (ie. ->d_inode is NULL). The dentry could represent a true miss, a whiteout that isn't represented by a 0,0 chardev or a fallthrough marker in an opaque directory.”h]”hX Returns true if the dentry represents either an absent name or a name that doesn’t map to an inode (ie. ->d_inode is NULL). The dentry could represent a true miss, a whiteout that isn’t represented by a 0,0 chardev or a fallthrough marker in an opaque directory.”…”�”}”(hjM~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´Mhj×}ubhÌ)�”}”(hXpNote! (1) This should be used *only* by a filesystem to examine its own dentries. It should not be used to look at some other filesystem's dentries. (2) It should also be used in combination with d_inode() to get the inode. (3) The dentry may have something attached to ->d_lower and the type field of the flags may be set to something other than miss or whiteout.”h]”(hŒNote! (1) This should be used ”…”�”}”(hj\~h²hh³Nh´Nubj )�”}”(hŒ*only*”h]”hŒonly”…”�”}”(hjd~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~ hj\~ubhXM by a filesystem to examine its own dentries. It should not be used to look at some other filesystem’s dentries. (2) It should also be used in combination with d_inode() to get the inode. (3) The dentry may have something attached to ->d_lower and the type field of the flags may be set to something other than miss or whiteout.”…”�”}”(hj\~h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M hj×}ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjßEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ!d_really_is_positive (C function)”Œc.d_really_is_positive”hNt”auh1hýhjßEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ7bool d_really_is_positive (const struct dentry *dentry)”h]”j)�”}”(hŒ6bool d_really_is_positive(const struct dentry *dentry)”h]”(j�)�”}”(hj„h]”hŒbool”…”�”}”(hj�~h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj™~h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«~h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj™~h²hh³jª~h´MubjC)�”}”(hŒd_really_is_positive”h]”jI)�”}”(hŒd_really_is_positive”h]”hŒd_really_is_positive”…”�”}”(hj½~h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¹~ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj™~h²hh³jª~h´Mubj=)�”}”(hŒ(const struct dentry *dentry)”h]”jC)�”}”(hŒconst struct dentry *dentry”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjÙ~h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÕ~ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ~h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÕ~ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjô~h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÕ~ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÕ~ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj¿~sbŒc.d_really_is_positive”†”asbuh1hhjÕ~ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÕ~ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÕ~ubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÕ~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÑ~ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj™~h²hh³jª~h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj•~h²hh³jª~h´Mubah}”(h]”j�~ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jª~h´Mhj’~h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ@Determine if a dentry is really positive (ignoring fallthroughs)”h]”hŒ@Determine if a dentry is really positive (ignoring fallthroughs)”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´Mhjth²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj’~h²hh³jª~h´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j�jšj�j›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hXþ**Parameters** ``const struct dentry *dentry`` The dentry in question **Description** Returns true if the dentry represents a name that maps to an inode (ie. ->d_inode is not NULL). The dentry might still represent a whiteout if that is represented on medium as a 0,0 chardev. Note! (1) This should be used *only* by a filesystem to examine its own dentries. It should not be used to look at some other filesystem's dentries. (2) It should also be used in combination with d_inode() to get the inode.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj™h]”hŒ Parameters”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´Mhj“ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ7``const struct dentry *dentry`` The dentry in question ”h]”(jÊ)�”}”(hŒ``const struct dentry *dentry``”h]”jÐ)�”}”(hj¸h]”hŒconst struct dentry *dentry”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´Mhj²ubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe dentry in question”h]”hŒThe dentry in question”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÍh´MhjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÍh´Mhj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj“ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjóh]”hŒ Description”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjñubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´Mhj“ubhÌ)�”}”(hŒ¿Returns true if the dentry represents a name that maps to an inode (ie. ->d_inode is not NULL). The dentry might still represent a whiteout if that is represented on medium as a 0,0 chardev.”h]”hŒ¿Returns true if the dentry represents a name that maps to an inode (ie. ->d_inode is not NULL). The dentry might still represent a whiteout if that is represented on medium as a 0,0 chardev.”…”�”}”(hj €h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´Mhj“ubhÌ)�”}”(hŒâNote! (1) This should be used *only* by a filesystem to examine its own dentries. It should not be used to look at some other filesystem's dentries. (2) It should also be used in combination with d_inode() to get the inode.”h]”(hŒNote! (1) This should be used ”…”�”}”(hj€h²hh³Nh´Nubj )�”}”(hŒ*only*”h]”hŒonly”…”�”}”(hj €h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~ hj€ubhŒ¿ by a filesystem to examine its own dentries. It should not be used to look at some other filesystem’s dentries. (2) It should also be used in combination with d_inode() to get the inode.”…”�”}”(hj€h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´Mhj“ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjßEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_lookup_release (C function)”Œc.d_lookup_release”hNt”auh1hýhjßEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ-void d_lookup_release (struct dentry *dentry)”h]”j)�”}”(hŒ,void d_lookup_release(struct dentry *dentry)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjY€h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjU€h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M2ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh€h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjU€h²hh³jg€h´M2ubjC)�”}”(hŒd_lookup_release”h]”jI)�”}”(hŒd_lookup_release”h]”hŒd_lookup_release”…”�”}”(hjz€h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjv€ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjU€h²hh³jg€h´M2ubj=)�”}”(hŒ(struct dentry *dentry)”h]”jC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj–€h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj’€ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£€h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj’€ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj´€h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj±€ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¶€Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj|€sbŒc.d_lookup_release”†”asbuh1hhj’€ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ€h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj’€ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjâ€h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj’€ubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjï€h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj’€ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjŽ€ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjU€h²hh³jg€h´M2ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjQ€h²hh³jg€h´M2ubah}”(h]”jL€ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jg€h´M2hjN€h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ+release ownership of DCACHE_PAR_LOOKUP lock”h]”hŒ+release ownership of DCACHE_PAR_LOOKUP lock”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M2hj�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjN€h²hh³jg€h´M2ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j1�jšj1�j›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hXe**Parameters** ``struct dentry *dentry`` dentry that is locked **Description** If an in-lookup dentry is to be passed to another thread which will drop the in-lookup lock, then d_lookup_release() must be called to tell lockdep that this thread no lock holds the lock. The thread that receives the lock must call d_lookup_acquire() to acquire the lock.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj;�h]”hŒ Parameters”…”�”}”(hj=�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj9�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M6hj5�ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ0``struct dentry *dentry`` dentry that is locked ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hjZ�h]”hŒstruct dentry *dentry”…”�”}”(hj\�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjX�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M3hjT�ubjæ)�”}”(hhh]”hÌ)�”}”(hŒdentry that is locked”h]”hŒdentry that is locked”…”�”}”(hjs�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jo�h´M3hjp�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjT�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jo�h´M3hjQ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj5�ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj•�h]”hŒ Description”…”�”}”(hj—�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj“�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M5hj5�ubhÌ)�”}”(hXIf an in-lookup dentry is to be passed to another thread which will drop the in-lookup lock, then d_lookup_release() must be called to tell lockdep that this thread no lock holds the lock. The thread that receives the lock must call d_lookup_acquire() to acquire the lock.”h]”hXIf an in-lookup dentry is to be passed to another thread which will drop the in-lookup lock, then d_lookup_release() must be called to tell lockdep that this thread no lock holds the lock. The thread that receives the lock must call d_lookup_acquire() to acquire the lock.”…”�”}”(hj«�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M4hj5�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjßEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_lookup_acquire (C function)”Œc.d_lookup_acquire”hNt”auh1hýhjßEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ-void d_lookup_acquire (struct dentry *dentry)”h]”j)�”}”(hŒ,void d_lookup_acquire(struct dentry *dentry)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÚ�h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÖ�h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MBubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÖ�h²hh³jè�h´MBubjC)�”}”(hŒd_lookup_acquire”h]”jI)�”}”(hŒd_lookup_acquire”h]”hŒd_lookup_acquire”…”�”}”(hjû�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj÷�ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÖ�h²hh³jè�h´MBubj=)�”}”(hŒ(struct dentry *dentry)”h]”jC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj‚ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$‚h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‚ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj5‚h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj2‚ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j7‚Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjý�sbŒc.d_lookup_acquire”†”asbuh1hhj‚ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU‚h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‚ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjc‚h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj‚ubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjp‚h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj‚ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÖ�h²hh³jè�h´MBubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÒ�h²hh³jè�h´MBubah}”(h]”jÍ�ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jè�h´MBhjÏ�h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ+acquire ownership of DCACHE_PAR_LOOKUP lock”h]”hŒ+acquire ownership of DCACHE_PAR_LOOKUP lock”…”�”}”(hjš‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MBhj—‚h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÏ�h²hh³jè�h´MBubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j²‚jšj²‚j›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hŒñ**Parameters** ``struct dentry *dentry`` dentry that is locked **Description** If an in-lookup dentry was passed to this thread, the d_lookup_acquire() must be called to tell lockdep that this thread now owns the DCACHE_PAR_LOOKUP lock.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj¼‚h]”hŒ Parameters”…”�”}”(hj¾‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjº‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MFhj¶‚ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ0``struct dentry *dentry`` dentry that is locked ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hjÛ‚h]”hŒstruct dentry *dentry”…”�”}”(hjÝ‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÙ‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MChjÕ‚ubjæ)�”}”(hhh]”hÌ)�”}”(hŒdentry that is locked”h]”hŒdentry that is locked”…”�”}”(hjô‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jð‚h´MChjñ‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÕ‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jð‚h´MChjÒ‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj¶‚ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjƒh]”hŒ Description”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MEhj¶‚ubhÌ)�”}”(hŒ�If an in-lookup dentry was passed to this thread, the d_lookup_acquire() must be called to tell lockdep that this thread now owns the DCACHE_PAR_LOOKUP lock.”h]”hŒ�If an in-lookup dentry was passed to this thread, the d_lookup_acquire() must be called to tell lockdep that this thread now owns the DCACHE_PAR_LOOKUP lock.”…”�”}”(hj,ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MDhj¶‚ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjßEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_inode (C function)”Œ c.d_inode”hNt”auh1hýhjßEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ4struct inode * d_inode (const struct dentry *dentry)”h]”j)�”}”(hŒ2struct inode *d_inode(const struct dentry *dentry)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj[ƒh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjWƒh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MPubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiƒh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjWƒh²hh³jhƒh´MPubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjzƒh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjwƒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j|ƒŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒd_inode”sbŒ c.d_inode”†”asbuh1hhjWƒh²hh³jhƒh´MPubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›ƒh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjWƒh²hh³jhƒh´MPubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj©ƒh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjWƒh²hh³jhƒh´MPubjC)�”}”(hŒd_inode”h]”jI)�”}”(hj˜ƒh]”hŒd_inode”…”�”}”(hjºƒh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¶ƒubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjWƒh²hh³jhƒh´MPubj=)�”}”(hŒ(const struct dentry *dentry)”h]”jC)�”}”(hŒconst struct dentry *dentry”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjÕƒh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjуubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâƒh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjуubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjðƒh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjуubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýƒh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjуubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj „ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j„Œmodname”NŒ classname”Njj )�”}”j ]”j–ƒŒ c.d_inode”†”asbuh1hhjуubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,„h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjуubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj:„h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjуubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjG„h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjуubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj̓ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjWƒh²hh³jhƒh´MPubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjSƒh²hh³jhƒh´MPubah}”(h]”jNƒah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jhƒh´MPhjPƒh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ#Get the actual inode of this dentry”h]”hŒ#Get the actual inode of this dentry”…”�”}”(hjq„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MPhjn„h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjPƒh²hh³jhƒh´MPubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j‰„jšj‰„j›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hŒé**Parameters** ``const struct dentry *dentry`` The dentry to query **Description** This is the helper normal filesystems should use to get at their own inodes in their own dentries and ignore the layering superimposed upon them.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj“„h]”hŒ Parameters”…”�”}”(hj•„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‘„ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MThj�„ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ4``const struct dentry *dentry`` The dentry to query ”h]”(jÊ)�”}”(hŒ``const struct dentry *dentry``”h]”jÐ)�”}”(hj²„h]”hŒconst struct dentry *dentry”…”�”}”(hj´„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj°„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MQhj¬„ubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe dentry to query”h]”hŒThe dentry to query”…”�”}”(hjË„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÇ„h´MQhjÈ„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¬„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÇ„h´MQhj©„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj�„ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjí„h]”hŒ Description”…”�”}”(hjï„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjë„ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MShj�„ubhÌ)�”}”(hŒ‘This is the helper normal filesystems should use to get at their own inodes in their own dentries and ignore the layering superimposed upon them.”h]”hŒ‘This is the helper normal filesystems should use to get at their own inodes in their own dentries and ignore the layering superimposed upon them.”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MRhj�„ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjßEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_inode_rcu (C function)”Œ c.d_inode_rcu”hNt”auh1hýhjßEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ8struct inode * d_inode_rcu (const struct dentry *dentry)”h]”j)�”}”(hŒ6struct inode *d_inode_rcu(const struct dentry *dentry)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj2…h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj.…h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M\ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@…h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj.…h²hh³j?…h´M\ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjQ…h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjN…ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jS…Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒ d_inode_rcu”sbŒ c.d_inode_rcu”†”asbuh1hhj.…h²hh³j?…h´M\ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr…h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj.…h²hh³j?…h´M\ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj€…h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj.…h²hh³j?…h´M\ubjC)�”}”(hŒ d_inode_rcu”h]”jI)�”}”(hjo…h]”hŒ d_inode_rcu”…”�”}”(hj‘…h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�…ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj.…h²hh³j?…h´M\ubj=)�”}”(hŒ(const struct dentry *dentry)”h]”jC)�”}”(hŒconst struct dentry *dentry”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj¬…h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¨…ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹…h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¨…ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÇ…h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¨…ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ…h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¨…ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjå…h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjâ…ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jç…Œmodname”NŒ classname”Njj )�”}”j ]”jm…Œ c.d_inode_rcu”†”asbuh1hhj¨…ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¨…ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¨…ubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¨…ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¤…ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj.…h²hh³j?…h´M\ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj*…h²hh³j?…h´M\ubah}”(h]”j%…ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j?…h´M\hj'…h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ4Get the actual inode of this dentry with READ_ONCE()”h]”hŒ4Get the actual inode of this dentry with READ_ONCE()”…”�”}”(hjH†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M\hjE†h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj'…h²hh³j?…h´M\ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j`†jšj`†j›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hŒé**Parameters** ``const struct dentry *dentry`` The dentry to query **Description** This is the helper normal filesystems should use to get at their own inodes in their own dentries and ignore the layering superimposed upon them.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjj†h]”hŒ Parameters”…”�”}”(hjl†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjh†ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M`hjd†ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ4``const struct dentry *dentry`` The dentry to query ”h]”(jÊ)�”}”(hŒ``const struct dentry *dentry``”h]”jÐ)�”}”(hj‰†h]”hŒconst struct dentry *dentry”…”�”}”(hj‹†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj‡†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M]hjƒ†ubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe dentry to query”h]”hŒThe dentry to query”…”�”}”(hj¢†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jž†h´M]hjŸ†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjƒ†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jž†h´M]hj€†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjd†ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjĆh]”hŒ Description”…”�”}”(hjƆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M_hjd†ubhÌ)�”}”(hŒ‘This is the helper normal filesystems should use to get at their own inodes in their own dentries and ignore the layering superimposed upon them.”h]”hŒ‘This is the helper normal filesystems should use to get at their own inodes in their own dentries and ignore the layering superimposed upon them.”…”�”}”(hjÚ†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M^hjd†ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjßEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_backing_inode (C function)”Œc.d_backing_inode”hNt”auh1hýhjßEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ;struct inode * d_backing_inode (const struct dentry *upper)”h]”j)�”}”(hŒ9struct inode *d_backing_inode(const struct dentry *upper)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj ‡h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj‡h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´Mhubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‡h²hh³j‡h´Mhubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj(‡h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj%‡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j*‡Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒd_backing_inode”sbŒc.d_backing_inode”†”asbuh1hhj‡h²hh³j‡h´Mhubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI‡h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‡h²hh³j‡h´Mhubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjW‡h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj‡h²hh³j‡h´MhubjC)�”}”(hŒd_backing_inode”h]”jI)�”}”(hjF‡h]”hŒd_backing_inode”…”�”}”(hjh‡h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjd‡ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj‡h²hh³j‡h´Mhubj=)�”}”(hŒ(const struct dentry *upper)”h]”jC)�”}”(hŒconst struct dentry *upper”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjƒ‡h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj‡ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�‡h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‡ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjž‡h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj‡ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«‡h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‡ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj¼‡h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¹‡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¾‡Œmodname”NŒ classname”Njj )�”}”j ]”jD‡Œc.d_backing_inode”†”asbuh1hhj‡ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚ‡h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‡ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjè‡h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj‡ubjI)�”}”(hŒupper”h]”hŒupper”…”�”}”(hjõ‡h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj{‡ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj‡h²hh³j‡h´Mhubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj‡h²hh³j‡h´Mhubah}”(h]”jü†ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j‡h´Mhhjþ†h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ+Get upper or lower inode we should be using”h]”hŒ+Get upper or lower inode we should be using”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´Mhhjˆh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjþ†h²hh³j‡h´Mhubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j7ˆjšj7ˆj›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hXi**Parameters** ``const struct dentry *upper`` The upper layer **Description** This is the helper that should be used to get at the inode that will be used if this dentry were to be opened as a file. The inode may be on the upper dentry or it may be on a lower dentry pinned by the upper. Normal filesystems should not use this to access their own inodes.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjAˆh]”hŒ Parameters”…”�”}”(hjCˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj?ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´Mlhj;ˆubj¿)�”}”(hhh]”jÄ)�”}”(hŒ/``const struct dentry *upper`` The upper layer ”h]”(jÊ)�”}”(hŒ``const struct dentry *upper``”h]”jÐ)�”}”(hj`ˆh]”hŒconst struct dentry *upper”…”�”}”(hjbˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj^ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MihjZˆubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe upper layer”h]”hŒThe upper layer”…”�”}”(hjyˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³juˆh´Mihjvˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjZˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³juˆh´MihjWˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj;ˆubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj›ˆh]”hŒ Description”…”�”}”(hj�ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj™ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´Mkhj;ˆubhÌ)�”}”(hŒÒThis is the helper that should be used to get at the inode that will be used if this dentry were to be opened as a file. The inode may be on the upper dentry or it may be on a lower dentry pinned by the upper.”h]”hŒÒThis is the helper that should be used to get at the inode that will be used if this dentry were to be opened as a file. The inode may be on the upper dentry or it may be on a lower dentry pinned by the upper.”…”�”}”(hj±ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´Mjhj;ˆubhÌ)�”}”(hŒBNormal filesystems should not use this to access their own inodes.”h]”hŒBNormal filesystems should not use this to access their own inodes.”…”�”}”(hjÀˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´Mnhj;ˆubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjßEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_real (C function)”Œc.d_real”hNt”auh1hýhjßEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒEstruct dentry * d_real (struct dentry *dentry, enum d_real_type type)”h]”j)�”}”(hŒCstruct dentry *d_real(struct dentry *dentry, enum d_real_type type)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjïˆh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjëˆh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´Myubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýˆh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjëˆh²hh³jüˆh´Myubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ‰ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j‰Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒd_real”sbŒc.d_real”†”asbuh1hhjëˆh²hh³jüˆh´Myubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/‰h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjëˆh²hh³jüˆh´Myubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj=‰h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjëˆh²hh³jüˆh´MyubjC)�”}”(hŒd_real”h]”jI)�”}”(hj,‰h]”hŒd_real”…”�”}”(hjN‰h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjJ‰ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjëˆh²hh³jüˆh´Myubj=)�”}”(hŒ.(struct dentry *dentry, enum d_real_type type)”h]”(jC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hji‰h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhje‰ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv‰h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hje‰ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj‡‰h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj„‰ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j‰‰Œmodname”NŒ classname”Njj )�”}”j ]”j*‰Œc.d_real”†”asbuh1hhje‰ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥‰h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hje‰ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj³‰h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hje‰ubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjÀ‰h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhje‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhja‰ubjC)�”}”(hŒenum d_real_type type”h]”(j )�”}”(hj#h]”hŒenum”…”�”}”(hjÙ‰h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÕ‰ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ‰h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÕ‰ubh)�”}”(hhh]”jI)�”}”(hŒ d_real_type”h]”hŒ d_real_type”…”�”}”(hj÷‰h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjô‰ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jù‰Œmodname”NŒ classname”Njj )�”}”j ]”j*‰Œc.d_real”†”asbuh1hhjÕ‰ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÕ‰ubjI)�”}”(hŒtype”h]”hŒtype”…”�”}”(hj#Šh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÕ‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhja‰ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjëˆh²hh³jüˆh´Myubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjçˆh²hh³jüˆh´Myubah}”(h]”jâˆah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jüˆh´Myhjäˆh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒReturn the real dentry”h]”hŒReturn the real dentry”…”�”}”(hjMŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MyhjJŠh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjäˆh²hh³jüˆh´Myubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jeŠjšjeŠj›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hX4**Parameters** ``struct dentry *dentry`` the dentry to query ``enum d_real_type type`` the type of real dentry (data or metadata) **Description** If dentry is on a union/overlay, then return the underlying, real dentry. Otherwise return the dentry itself. See also: Documentation/filesystems/vfs.rst”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjoŠh]”hŒ Parameters”…”�”}”(hjqŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjmŠubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M}hjiŠubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ.``struct dentry *dentry`` the dentry to query ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hjŽŠh]”hŒstruct dentry *dentry”…”�”}”(hj�Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjŒŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MzhjˆŠubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe dentry to query”h]”hŒthe dentry to query”…”�”}”(hj§Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j£Šh´Mzhj¤Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjˆŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j£Šh´Mzhj…ŠubjÄ)�”}”(hŒE``enum d_real_type type`` the type of real dentry (data or metadata) ”h]”(jÊ)�”}”(hŒ``enum d_real_type type``”h]”jÐ)�”}”(hjÇŠh]”hŒenum d_real_type type”…”�”}”(hjÉŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÅŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M{hjÁŠubjæ)�”}”(hhh]”hÌ)�”}”(hŒ*the type of real dentry (data or metadata)”h]”hŒ*the type of real dentry (data or metadata)”…”�”}”(hjàŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÜŠh´M{hjÝŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÁŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÜŠh´M{hj…Šubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjiŠubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj‹h]”hŒ Description”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M}hjiŠubhÌ)�”}”(hŒmIf dentry is on a union/overlay, then return the underlying, real dentry. Otherwise return the dentry itself.”h]”hŒmIf dentry is on a union/overlay, then return the underlying, real dentry. Otherwise return the dentry itself.”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M|hjiŠubhÌ)�”}”(hŒ+See also: Documentation/filesystems/vfs.rst”h]”hŒ+See also: Documentation/filesystems/vfs.rst”…”�”}”(hj'‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MhjiŠubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjßEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_real_inode (C function)”Œc.d_real_inode”hNt”auh1hýhjßEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ9struct inode * d_real_inode (const struct dentry *dentry)”h]”j)�”}”(hŒ7struct inode *d_real_inode(const struct dentry *dentry)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjV‹h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjR‹h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M‹ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd‹h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjR‹h²hh³jc‹h´M‹ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hju‹h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjr‹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jw‹Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒ d_real_inode”sbŒc.d_real_inode”†”asbuh1hhjR‹h²hh³jc‹h´M‹ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–‹h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjR‹h²hh³jc‹h´M‹ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¤‹h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjR‹h²hh³jc‹h´M‹ubjC)�”}”(hŒ d_real_inode”h]”jI)�”}”(hj“‹h]”hŒ d_real_inode”…”�”}”(hjµ‹h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj±‹ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjR‹h²hh³jc‹h´M‹ubj=)�”}”(hŒ(const struct dentry *dentry)”h]”jC)�”}”(hŒconst struct dentry *dentry”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjЋh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÌ‹ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝ‹h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÌ‹ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjë‹h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÌ‹ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjø‹h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÌ‹ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj Œh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j ŒŒmodname”NŒ classname”Njj )�”}”j ]”j‘‹Œc.d_real_inode”†”asbuh1hhjÌ‹ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'Œh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÌ‹ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj5Œh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÌ‹ubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjBŒh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÌ‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÈ‹ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjR‹h²hh³jc‹h´M‹ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjN‹h²hh³jc‹h´M‹ubah}”(h]”jI‹ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jc‹h´M‹hjK‹h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ&Return the real inode hosting the data”h]”hŒ&Return the real inode hosting the data”…”�”}”(hjlŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M‹hjiŒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjK‹h²hh³jc‹h´M‹ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j„Œjšj„Œj›‰jœ‰j�‰uh1jh²hhjßEh³Nh´NubjŸ)�”}”(hŒ¼**Parameters** ``const struct dentry *dentry`` The dentry to query **Description** If dentry is on a union/overlay, then return the underlying, real inode. Otherwise return d_inode().”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjŽŒh]”hŒ Parameters”…”�”}”(hj�Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjŒŒubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M�hjˆŒubj¿)�”}”(hhh]”jÄ)�”}”(hŒ4``const struct dentry *dentry`` The dentry to query ”h]”(jÊ)�”}”(hŒ``const struct dentry *dentry``”h]”jÐ)�”}”(hj­Œh]”hŒconst struct dentry *dentry”…”�”}”(hj¯Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj«Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MŒhj§Œubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe dentry to query”h]”hŒThe dentry to query”…”�”}”(hjÆŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÂŒh´MŒhjÃŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj§Œubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÂŒh´MŒhj¤Œubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjˆŒubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjèŒh]”hŒ Description”…”�”}”(hjêŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjæŒubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MŽhjˆŒubhÌ)�”}”(hŒdIf dentry is on a union/overlay, then return the underlying, real inode. Otherwise return d_inode().”h]”hŒdIf dentry is on a union/overlay, then return the underlying, real inode. Otherwise return d_inode().”…”�”}”(hjþŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M�hjˆŒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjßEh²hh³Nh´Nubeh}”(h]”Œthe-directory-cache”ah ]”h"]”Œthe directory cache”ah$]”h&]”uh1hµhhÛh²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒInode Handling”h]”hŒInode Handling”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj�h²hh³hÊh´Kubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ"inode_init_always_gfp (C function)”Œc.inode_init_always_gfp”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒRint inode_init_always_gfp (struct super_block *sb, struct inode *inode, gfp_t gfp)”h]”j)�”}”(hŒQint inode_init_always_gfp(struct super_block *sb, struct inode *inode, gfp_t gfp)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjF�h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjB�h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´KÖubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjB�h²hh³jT�h´KÖubjC)�”}”(hŒinode_init_always_gfp”h]”jI)�”}”(hŒinode_init_always_gfp”h]”hŒinode_init_always_gfp”…”�”}”(hjg�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjc�ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjB�h²hh³jT�h´KÖubj=)�”}”(hŒ8(struct super_block *sb, struct inode *inode, gfp_t gfp)”h]”(jC)�”}”(hŒstruct super_block *sb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjƒ�h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�ubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hj¡�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjž�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j£�Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jji�sbŒc.inode_init_always_gfp”†”asbuh1hhj�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁ�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÏ�h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj�ubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hjÜ�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj{�ubjC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjõ�h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjñ�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjñ�ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŽubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jŽŒmodname”NŒ classname”Njj )�”}”j ]”j½�Œc.inode_init_always_gfp”†”asbuh1hhjñ�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1Žh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjñ�ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj?Žh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjñ�ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjLŽh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjñ�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj{�ubjC)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”jI)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjhŽh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjeŽubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jjŽŒmodname”NŒ classname”Njj )�”}”j ]”j½�Œc.inode_init_always_gfp”†”asbuh1hhjaŽubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†Žh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjaŽubjI)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hj”Žh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjaŽubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj{�ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjB�h²hh³jT�h´KÖubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj>�h²hh³jT�h´KÖubah}”(h]”j9�ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jT�h´KÖhj;�h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ&perform inode structure initialisation”h]”hŒ&perform inode structure initialisation”…”�”}”(hj¾Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´KÖhj»Žh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj;�h²hh³jT�h´KÖubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÖŽjšjÖŽj›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hXh**Parameters** ``struct super_block *sb`` superblock inode belongs to ``struct inode *inode`` inode to initialise ``gfp_t gfp`` allocation flags **Description** These are initializations that need to be done on every inode allocation as the fields are not initialised by slab allocation. If there are additional allocations required **gfp** is used.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjàŽh]”hŒ Parameters”…”�”}”(hjâŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÞŽubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´KÚhjÚŽubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ7``struct super_block *sb`` superblock inode belongs to ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hjÿŽh]”hŒstruct super_block *sb”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjýŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´K×hjùŽubjæ)�”}”(hhh]”hÌ)�”}”(hŒsuperblock inode belongs to”h]”hŒsuperblock inode belongs to”…”�”}”(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Œ,``struct inode *inode`` inode to initialise ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj8�h]”hŒstruct inode *inode”…”�”}”(hj:�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj6�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´KØhj2�ubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode to initialise”h]”hŒinode to initialise”…”�”}”(hjQ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jM�h´KØhjN�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj2�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jM�h´KØhjöŽubjÄ)�”}”(hŒ``gfp_t gfp`` allocation flags ”h]”(jÊ)�”}”(hŒ ``gfp_t gfp``”h]”jÐ)�”}”(hjq�h]”hŒ gfp_t gfp”…”�”}”(hjs�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjo�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´KÙhjk�ubjæ)�”}”(hhh]”hÌ)�”}”(hŒallocation flags”h]”hŒallocation flags”…”�”}”(hjŠ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j†�h´KÙhj‡�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjk�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j†�h´KÙhjöŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÚŽubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj¬�h]”hŒ Description”…”�”}”(hj®�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjª�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´KÛhjÚŽubhÌ)�”}”(hŒ¼These are initializations that need to be done on every inode allocation as the fields are not initialised by slab allocation. If there are additional allocations required **gfp** is used.”h]”(hŒ¬These are initializations that need to be done on every inode allocation as the fields are not initialised by slab allocation. If there are additional allocations required ”…”�”}”(hjÂ�h²hh³Nh´Nubj©)�”}”(hŒ**gfp**”h]”hŒgfp”…”�”}”(hjÊ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÂ�ubhŒ is used.”…”�”}”(hjÂ�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´KÚhjÚŽubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdrop_nlink (C function)”Œ c.drop_nlink”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ%void drop_nlink (struct inode *inode)”h]”j)�”}”(hŒ$void drop_nlink(struct inode *inode)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÿ�h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MŒubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÿ�h²hh³j�h´MŒubjC)�”}”(hŒ drop_nlink”h]”jI)�”}”(hŒ drop_nlink”h]”hŒ drop_nlink”…”�”}”(hj$�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj �ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÿ�h²hh³j�h´MŒubj=)�”}”(hŒ(struct inode *inode)”h]”jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj@�h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj<�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj<�ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj^�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj[�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j`�Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj&�sbŒ c.drop_nlink”†”asbuh1hhj<�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj<�ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjŒ�h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj<�ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj™�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj<�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj8�ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÿ�h²hh³j�h´MŒubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjû�h²hh³j�h´MŒubah}”(h]”jö�ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j�h´MŒhjø�h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ#directly drop an inode's link count”h]”hŒ%directly drop an inode’s link count”…”�”}”(hjÃ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MŒhjÀ�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjø�h²hh³j�h´MŒubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÛ�jšjÛ�j›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hXV**Parameters** ``struct inode *inode`` inode **Description** This is a low-level filesystem helper to replace any direct filesystem manipulation of i_nlink. In cases where we are attempting to track writes to the filesystem, a decrement to zero means an imminent write when the file is truncated and actually unlinked on the filesystem.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjå�h]”hŒ Parameters”…”�”}”(hjç�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjã�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M�hjß�ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ``struct inode *inode`` inode ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj‘h]”hŒstruct inode *inode”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M�hjþ�ubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‘h´M�hj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjþ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‘h´M�hjû�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjß�ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj?‘h]”hŒ Description”…”�”}”(hjA‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj=‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M�hjß�ubhÌ)�”}”(hXThis is a low-level filesystem helper to replace any direct filesystem manipulation of i_nlink. In cases where we are attempting to track writes to the filesystem, a decrement to zero means an imminent write when the file is truncated and actually unlinked on the filesystem.”h]”hXThis is a low-level filesystem helper to replace any direct filesystem manipulation of i_nlink. In cases where we are attempting to track writes to the filesystem, a decrement to zero means an imminent write when the file is truncated and actually unlinked on the filesystem.”…”�”}”(hjU‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MŽhjß�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œclear_nlink (C function)”Œ c.clear_nlink”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ&void clear_nlink (struct inode *inode)”h]”j)�”}”(hŒ%void clear_nlink(struct inode *inode)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj„‘h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj€‘h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“‘h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj€‘h²hh³j’‘h´M ubjC)�”}”(hŒ clear_nlink”h]”jI)�”}”(hŒ clear_nlink”h]”hŒ clear_nlink”…”�”}”(hj¥‘h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¡‘ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj€‘h²hh³j’‘h´M ubj=)�”}”(hŒ(struct inode *inode)”h]”jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÁ‘h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj½‘ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjΑh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj½‘ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjß‘h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÜ‘ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jᑌmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj§‘sbŒ c.clear_nlink”†”asbuh1hhj½‘ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿ‘h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj½‘ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj ’h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj½‘ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj½‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¹‘ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj€‘h²hh³j’‘h´M ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj|‘h²hh³j’‘h´M ubah}”(h]”jw‘ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j’‘h´M hjy‘h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ#directly zero an inode's link count”h]”hŒ%directly zero an inode’s link count”…”�”}”(hjD’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M hjA’h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjy‘h²hh³j’‘h´M ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j\’jšj\’j›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hŒß**Parameters** ``struct inode *inode`` inode **Description** This is a low-level filesystem helper to replace any direct filesystem manipulation of i_nlink. See drop_nlink() for why we care about i_nlink hitting zero.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjf’h]”hŒ Parameters”…”�”}”(hjh’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjd’ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M¤hj`’ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ``struct inode *inode`` inode ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj…’h]”hŒstruct inode *inode”…”�”}”(hj‡’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjƒ’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M¡hj’ubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjž’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jš’h´M¡hj›’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jš’h´M¡hj|’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj`’ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÀ’h]”hŒ Description”…”�”}”(hjÂ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¾’ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M£hj`’ubhÌ)�”}”(hŒ�This is a low-level filesystem helper to replace any direct filesystem manipulation of i_nlink. See drop_nlink() for why we care about i_nlink hitting zero.”h]”hŒ�This is a low-level filesystem helper to replace any direct filesystem manipulation of i_nlink. See drop_nlink() for why we care about i_nlink hitting zero.”…”�”}”(hjÖ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M¢hj`’ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œset_nlink (C function)”Œ c.set_nlink”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ8void set_nlink (struct inode *inode, unsigned int nlink)”h]”j)�”}”(hŒ7void set_nlink(struct inode *inode, unsigned int nlink)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj“h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M±ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj“h²hh³j“h´M±ubjC)�”}”(hŒ set_nlink”h]”jI)�”}”(hŒ set_nlink”h]”hŒ set_nlink”…”�”}”(hj&“h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj"“ubah}”(h]”h ]”(j[j\e•>h"]”h$]”h&]”j`jauh1jBhj“h²hh³j“h´M±ubj=)�”}”(hŒ)(struct inode *inode, unsigned int nlink)”h]”(jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjB“h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj>“ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO“h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj>“ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj`“h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj]“ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jb“Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj(“sbŒ c.set_nlink”†”asbuh1hhj>“ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€“h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj>“ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjŽ“h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj>“ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj›“h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj>“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj:“ubjC)�”}”(hŒunsigned int nlink”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj´“h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj°“ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj°“ubj�)�”}”(hŒint”h]”hŒint”…”�”}”(hjГh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj°“ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞ“h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj°“ubjI)�”}”(hŒnlink”h]”hŒnlink”…”�”}”(hjì“h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj°“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj:“ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj“h²hh³j“h´M±ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjý’h²hh³j“h´M±ubah}”(h]”jø’ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j“h´M±hjú’h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ"directly set an inode's link count”h]”hŒ$directly set an inode’s link count”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M±hj”h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjú’h²hh³j“h´M±ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j.”jšj.”j›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hŒÚ**Parameters** ``struct inode *inode`` inode ``unsigned int nlink`` new nlink (should be non-zero) **Description** This is a low-level filesystem helper to replace any direct filesystem manipulation of i_nlink.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj8”h]”hŒ Parameters”…”�”}”(hj:”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj6”ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mµhj2”ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ``struct inode *inode`` inode ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjW”h]”hŒstruct inode *inode”…”�”}”(hjY”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjU”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M²hjQ”ubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjp”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jl”h´M²hjm”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjQ”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jl”h´M²hjN”ubjÄ)�”}”(hŒ6``unsigned int nlink`` new nlink (should be non-zero) ”h]”(jÊ)�”}”(hŒ``unsigned int nlink``”h]”jÐ)�”}”(hj�”h]”hŒunsigned int nlink”…”�”}”(hj’”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjŽ”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M³hjŠ”ubjæ)�”}”(hhh]”hÌ)�”}”(hŒnew nlink (should be non-zero)”h]”hŒnew nlink (should be non-zero)”…”�”}”(hj©”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¥”h´M³hj¦”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjŠ”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¥”h´M³hjN”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj2”ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjË”h]”hŒ Description”…”�”}”(hjÍ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÉ”ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mµhj2”ubhÌ)�”}”(hŒ_This is a low-level filesystem helper to replace any direct filesystem manipulation of i_nlink.”h]”hŒ_This is a low-level filesystem helper to replace any direct filesystem manipulation of i_nlink.”…”�”}”(hjá”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M´hj2”ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œinc_nlink (C function)”Œ c.inc_nlink”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ$void inc_nlink (struct inode *inode)”h]”j)�”}”(hŒ#void inc_nlink(struct inode *inode)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj •h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MÇubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj •h²hh³j•h´MÇubjC)�”}”(hŒ inc_nlink”h]”jI)�”}”(hŒ inc_nlink”h]”hŒ inc_nlink”…”�”}”(hj1•h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj-•ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj •h²hh³j•h´MÇubj=)�”}”(hŒ(struct inode *inode)”h]”jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjM•h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjI•ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ•h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjI•ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjk•h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjh•ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jm•Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj3•sbŒ c.inc_nlink”†”asbuh1hhjI•ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹•h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjI•ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj™•h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjI•ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj¦•h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjI•ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjE•ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj •h²hh³j•h´MÇubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj•h²hh³j•h´MÇubah}”(h]”j•ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j•h´MÇhj•h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ(directly increment an inode's link count”h]”hŒ*directly increment an inode’s link count”…”�”}”(hjЕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MÇhjÍ•h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj•h²hh³j•h´MÇubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jè•jšjè•j›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hŒÚ**Parameters** ``struct inode *inode`` inode **Description** This is a low-level filesystem helper to replace any direct filesystem manipulation of i_nlink. Currently, it is only here for parity with dec_nlink().”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjò•h]”hŒ Parameters”…”�”}”(hjô•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjð•ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MËhjì•ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ``struct inode *inode`` inode ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj–h]”hŒstruct inode *inode”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MÈhj –ubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj*–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j&–h´MÈhj'–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj –ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j&–h´MÈhj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjì•ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjL–h]”hŒ Description”…”�”}”(hjN–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjJ–ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MÊhjì•ubhÌ)�”}”(hŒ˜This is a low-level filesystem helper to replace any direct filesystem manipulation of i_nlink. Currently, it is only here for parity with dec_nlink().”h]”hŒ˜This is a low-level filesystem helper to replace any direct filesystem manipulation of i_nlink. Currently, it is only here for parity with dec_nlink().”…”�”}”(hjb–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MÉhjì•ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œinode_sb_list_add (C function)”Œc.inode_sb_list_add”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ,void inode_sb_list_add (struct inode *inode)”h]”j)�”}”(hŒ+void inode_sb_list_add(struct inode *inode)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‘–h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj�–h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mvubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj –h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�–h²hh³jŸ–h´MvubjC)�”}”(hŒinode_sb_list_add”h]”jI)�”}”(hŒinode_sb_list_add”h]”hŒinode_sb_list_add”…”�”}”(hj²–h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj®–ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj�–h²hh³jŸ–h´Mvubj=)�”}”(hŒ(struct inode *inode)”h]”jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjΖh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÊ–ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ–h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÊ–ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjì–h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjé–ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jî–Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj´–sbŒc.inode_sb_list_add”†”asbuh1hhjÊ–ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj —h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÊ–ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÊ–ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj'—h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÊ–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÆ–ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj�–h²hh³jŸ–h´Mvubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj‰–h²hh³jŸ–h´Mvubah}”(h]”j„–ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jŸ–h´Mvhj†–h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ*add inode to the superblock list of inodes”h]”hŒ*add inode to the superblock list of inodes”…”�”}”(hjQ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MvhjN—h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj†–h²hh³jŸ–h´Mvubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™ji—jšji—j›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hŒ6**Parameters** ``struct inode *inode`` inode to add”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjs—h]”hŒ Parameters”…”�”}”(hju—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjq—ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mzhjm—ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ$``struct inode *inode`` inode to add”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj’—h]”hŒstruct inode *inode”…”�”}”(hj”—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj�—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M|hjŒ—ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ inode to add”h]”hŒ inode to add”…”�”}”(hj«—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mwhj¨—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjŒ—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j§—h´M|hj‰—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjm—ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ __insert_inode_hash (C function)”Œc.__insert_inode_hash”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ;void __insert_inode_hash (struct inode *inode, u64 hashval)”h]”j)�”}”(hŒ:void __insert_inode_hash(struct inode *inode, u64 hashval)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjì—h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjè—h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M™ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû—h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjè—h²hh³jú—h´M™ubjC)�”}”(hŒ__insert_inode_hash”h]”jI)�”}”(hŒ__insert_inode_hash”h]”hŒ__insert_inode_hash”…”�”}”(hj ˜h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ˜ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjè—h²hh³jú—h´M™ubj=)�”}”(hŒ"(struct inode *inode, u64 hashval)”h]”(jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj)˜h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj%˜ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6˜h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj%˜ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjG˜h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjD˜ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jI˜Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj˜sbŒc.__insert_inode_hash”†”asbuh1hhj%˜ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg˜h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj%˜ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hju˜h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj%˜ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj‚˜h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj%˜ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj!˜ubjC)�”}”(hŒ u64 hashval”h]”(h)�”}”(hhh]”jI)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjž˜h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj›˜ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j ˜Œmodname”NŒ classname”Njj )�”}”j ]”jc˜Œc.__insert_inode_hash”†”asbuh1hhj—˜ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼˜h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj—˜ubjI)�”}”(hŒhashval”h]”hŒhashval”…”�”}”(hjʘh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj—˜ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj!˜ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjè—h²hh³jú—h´M™ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjä—h²hh³jú—h´M™ubah}”(h]”jß—ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jú—h´M™hjá—h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ hash an inode”h]”hŒ hash an inode”…”�”}”(hjô˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M™hjñ˜h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjá—h²hh³jú—h´M™ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j ™jšj ™j›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hŒÕ**Parameters** ``struct inode *inode`` unhashed inode ``u64 hashval`` u64 value used to locate this object in the inode_hashtable. **Description** Add an inode to the inode hash for this superblock.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj™h]”hŒ Parameters”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M�hj™ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ'``struct inode *inode`` unhashed inode ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj5™h]”hŒstruct inode *inode”…”�”}”(hj7™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj3™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mšhj/™ubjæ)�”}”(hhh]”hÌ)�”}”(hŒunhashed inode”h]”hŒunhashed inode”…”�”}”(hjN™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jJ™h´MšhjK™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj/™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jJ™h´Mšhj,™ubjÄ)�”}”(hŒM``u64 hashval`` u64 value used to locate this object in the inode_hashtable. ”h]”(jÊ)�”}”(hŒ``u64 hashval``”h]”jÐ)�”}”(hjn™h]”hŒ u64 hashval”…”�”}”(hjp™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjl™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mœhjh™ubjæ)�”}”(hhh]”hÌ)�”}”(hŒah"]”h$]”h&]”uh1j1hjö™h²hh³jšh´M­ubjC)�”}”(hŒ__remove_inode_hash”h]”jI)�”}”(hŒ__remove_inode_hash”h]”hŒ__remove_inode_hash”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjšubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjö™h²hh³jšh´M­ubj=)�”}”(hŒ(struct inode *inode)”h]”jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj7šh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj3šubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDšh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj3šubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjUšh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjRšubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jWšŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjšsbŒc.__remove_inode_hash”†”asbuh1hhj3šubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjušh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj3šubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjƒšh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj3šubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj�šh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj3šubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj/šubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjö™h²hh³jšh´M­ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjò™h²hh³jšh´M­ubah}”(h]”jí™ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jšh´M­hjï™h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒremove an inode from the hash”h]”hŒremove an inode from the hash”…”�”}”(hjºšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M­hj·šh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjï™h²hh³jšh´M­ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÒšjšjÒšj›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hŒu**Parameters** ``struct inode *inode`` inode to unhash **Description** Remove an inode from the superblock.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÜšh]”hŒ Parameters”…”�”}”(hjÞšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÚšubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M±hjÖšubj¿)�”}”(hhh]”jÄ)�”}”(hŒ(``struct inode *inode`` inode to unhash ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjûšh]”hŒstruct inode *inode”…”�”}”(hjýšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjùšubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M®hjõšubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode to unhash”h]”hŒinode to unhash”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j›h´M®hj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjõšubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j›h´M®hjòšubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÖšubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj6›h]”hŒ Description”…”�”}”(hj8›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj4›ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M°hjÖšubjÁ™)�”}”(hŒ$Remove an inode from the superblock.”h]”hÌ)�”}”(hjN›h]”hŒ$Remove an inode from the superblock.”…”�”}”(hjP›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M¯hjL›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀ™h³j]›h´M¯hjÖšubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œevict_inodes (C function)”Œc.evict_inodes”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ*void evict_inodes (struct super_block *sb)”h]”j)�”}”(hŒ)void evict_inodes(struct super_block *sb)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj„›h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj€›h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Meubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“›h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj€›h²hh³j’›h´MeubjC)�”}”(hŒ evict_inodes”h]”jI)�”}”(hŒ evict_inodes”h]”hŒ evict_inodes”…”�”}”(hj¥›h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¡›ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj€›h²hh³j’›h´Meubj=)�”}”(hŒ(struct super_block *sb)”h]”jC)�”}”(hŒstruct super_block *sb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÁ›h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj½›ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjΛh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj½›ubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hjß›h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÜ›ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jᛌmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj§›sbŒc.evict_inodes”†”asbuh1hhj½›ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿ›h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj½›ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj œh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj½›ubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj½›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¹›ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj€›h²hh³j’›h´Meubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj|›h²hh³j’›h´Meubah}”(h]”jw›ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j’›h´Mehjy›h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ+evict all evictable inodes for a superblock”h]”hŒ+evict all evictable inodes for a superblock”…”�”}”(hjDœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MehjAœh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjy›h²hh³j’›h´Meubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j\œjšj\œj›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hX8**Parameters** ``struct super_block *sb`` superblock to operate on **Description** Make sure that no inodes with zero refcount are retained. This is called by superblock shutdown after having SB_ACTIVE flag removed, so any inode reaching zero refcount during or after that call will be immediately evicted.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjfœh]”hŒ Parameters”…”�”}”(hjhœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjdœubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mihj`œubj¿)�”}”(hhh]”jÄ)�”}”(hŒ4``struct super_block *sb`` superblock to operate on ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hj…œh]”hŒstruct super_block *sb”…”�”}”(hj‡œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjƒœubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mfhjœubjæ)�”}”(hhh]”hÌ)�”}”(hŒsuperblock to operate on”h]”hŒsuperblock to operate on”…”�”}”(hjžœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jšœh´Mfhj›œubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjœubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jšœh´Mfhj|œubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj`œubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÀœh]”hŒ Description”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¾œubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mhhj`œubhÌ)�”}”(hŒàMake sure that no inodes with zero refcount are retained. This is called by superblock shutdown after having SB_ACTIVE flag removed, so any inode reaching zero refcount during or after that call will be immediately evicted.”h]”hŒàMake sure that no inodes with zero refcount are retained. This is called by superblock shutdown after having SB_ACTIVE flag removed, so any inode reaching zero refcount during or after that call will be immediately evicted.”…”�”}”(hjÖœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mghj`œubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œnew_inode (C function)”Œ c.new_inode”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ1struct inode * new_inode (struct super_block *sb)”h]”j)�”}”(hŒ/struct inode *new_inode(struct super_block *sb)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj�h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MŽubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�h²hh³j�h´MŽubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj$�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj!�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j&�Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒ new_inode”sbŒ c.new_inode”†”asbuh1hhj�h²hh³j�h´MŽubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�h²hh³j�h´MŽubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjS�h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj�h²hh³j�h´MŽubjC)�”}”(hŒ new_inode”h]”jI)�”}”(hjB�h]”hŒ new_inode”…”�”}”(hjd�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj`�ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj�h²hh³j�h´MŽubj=)�”}”(hŒ(struct super_block *sb)”h]”jC)�”}”(hŒstruct super_block *sb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj{�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj{�ubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjš�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jŸ�Œmodname”NŒ classname”Njj )�”}”j ]”j@�Œ c.new_inode”†”asbuh1hhj{�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj{�ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÉ�h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj{�ubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hjÖ�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj{�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjw�ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj�h²hh³j�h´MŽubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjýœh²hh³j�h´MŽubah}”(h]”jøœah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j�h´MŽhjúœh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒobtain an inode”h]”hŒobtain an inode”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MŽhjý�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjúœh²hh³j�h´MŽubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jžjšjžj›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hXÆ**Parameters** ``struct super_block *sb`` superblock **Description** Allocates a new inode for given superblock. The default gfp_mask for allocations related to inode->i_mapping is GFP_HIGHUSER_MOVABLE. If HIGHMEM pages are unsuitable or it is known that pages allocated for the page cache are not reclaimable or migratable, mapping_set_gfp_mask() must be called with suitable flags on the newly created inode's mapping”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj"žh]”hŒ Parameters”…”�”}”(hj$žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj žubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M’hjžubj¿)�”}”(hhh]”jÄ)�”}”(hŒ&``struct super_block *sb`` superblock ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hjAžh]”hŒstruct super_block *sb”…”�”}”(hjCžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj?žubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M�hj;žubjæ)�”}”(hhh]”hÌ)�”}”(hŒ superblock”h]”hŒ superblock”…”�”}”(hjZžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jVžh´M�hjWžubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj;žubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jVžh´M�hj8žubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjžubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj|žh]”hŒ Description”…”�”}”(hj~žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjzžubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M‘hjžubjÁ™)�”}”(hX^Allocates a new inode for given superblock. The default gfp_mask for allocations related to inode->i_mapping is GFP_HIGHUSER_MOVABLE. If HIGHMEM pages are unsuitable or it is known that pages allocated for the page cache are not reclaimable or migratable, mapping_set_gfp_mask() must be called with suitable flags on the newly created inode's mapping”h]”hÌ)�”}”(hX^Allocates a new inode for given superblock. The default gfp_mask for allocations related to inode->i_mapping is GFP_HIGHUSER_MOVABLE. If HIGHMEM pages are unsuitable or it is known that pages allocated for the page cache are not reclaimable or migratable, mapping_set_gfp_mask() must be called with suitable flags on the newly created inode's mapping”h]”hX`Allocates a new inode for given superblock. The default gfp_mask for allocations related to inode->i_mapping is GFP_HIGHUSER_MOVABLE. If HIGHMEM pages are unsuitable or it is known that pages allocated for the page cache are not reclaimable or migratable, mapping_set_gfp_mask() must be called with suitable flags on the newly created inode’s mapping”…”�”}”(hj–žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M�hj’žubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀ™h³j¤žh´M�hjžubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œunlock_new_inode (C function)”Œc.unlock_new_inode”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ+void unlock_new_inode (struct inode *inode)”h]”j)�”}”(hŒ*void unlock_new_inode(struct inode *inode)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjËžh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÇžh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M¹ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚžh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÇžh²hh³jÙžh´M¹ubjC)�”}”(hŒunlock_new_inode”h]”jI)�”}”(hŒunlock_new_inode”h]”hŒunlock_new_inode”…”�”}”(hjìžh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjèžubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÇžh²hh³jÙžh´M¹ubj=)�”}”(hŒ(struct inode *inode)”h]”jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjŸubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjŸubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj&Ÿh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj#Ÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j(ŸŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjîžsbŒc.unlock_new_inode”†”asbuh1hhjŸubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFŸh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjŸubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjTŸh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjŸubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjaŸh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŸubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjŸubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÇžh²hh³jÙžh´M¹ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÞh²hh³jÙžh´M¹ubah}”(h]”j¾žah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÙžh´M¹hjÀžh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ-clear the I_NEW state and wake up any waiters”h]”hŒ-clear the I_NEW state and wake up any waiters”…”�”}”(hj‹Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M¹hjˆŸh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÀžh²hh³jÙžh´M¹ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j£Ÿjšj£Ÿj›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hŒá**Parameters** ``struct inode *inode`` new inode to unlock **Description** Called when the inode is fully initialised to clear the new state of the inode and wake up anyone waiting for the inode to finish initialisation.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj­Ÿh]”hŒ Parameters”…”�”}”(hj¯Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj«Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M½hj§Ÿubj¿)�”}”(hhh]”jÄ)�”}”(hŒ,``struct inode *inode`` new inode to unlock ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjÌŸh]”hŒstruct inode *inode”…”�”}”(hjΟh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÊŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MºhjÆŸubjæ)�”}”(hhh]”hÌ)�”}”(hŒnew inode to unlock”h]”hŒnew inode to unlock”…”�”}”(hjåŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jáŸh´MºhjâŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÆŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jáŸh´Mºhjßubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj§ŸubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj h]”hŒ Description”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M¼hj§ŸubhÌ)�”}”(hŒ‘Called when the inode is fully initialised to clear the new state of the inode and wake up anyone waiting for the inode to finish initialisation.”h]”hŒ‘Called when the inode is fully initialised to clear the new state of the inode and wake up anyone waiting for the inode to finish initialisation.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M»hj§Ÿubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ$lock_two_nondirectories (C function)”Œc.lock_two_nondirectories”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒIvoid lock_two_nondirectories (struct inode *inode1, struct inode *inode2)”h]”j)�”}”(hŒHvoid lock_two_nondirectories(struct inode *inode1, struct inode *inode2)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjL h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjH h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mßubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[ h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjH h²hh³jZ h´MßubjC)�”}”(hŒlock_two_nondirectories”h]”jI)�”}”(hŒlock_two_nondirectories”h]”hŒlock_two_nondirectories”…”�”}”(hjm h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhji ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjH h²hh³jZ h´Mßubj=)�”}”(hŒ,(struct inode *inode1, struct inode *inode2)”h]”(jC)�”}”(hŒstruct inode *inode1”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj‰ h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj… ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj– h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj… ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj§ h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¤ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j© Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjo sbŒc.lock_two_nondirectories”†”asbuh1hhj… ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇ h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj… ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÕ h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj… ubjI)�”}”(hŒinode1”h]”hŒinode1”…”�”}”(hjâ h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj… ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj� ubjC)�”}”(hŒstruct inode *inode2”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjû h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj÷ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj÷ ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¡Œmodname”NŒ classname”Njj )�”}”j ]”jàŒc.lock_two_nondirectories”†”asbuh1hhj÷ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7¡h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj÷ ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjE¡h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj÷ ubjI)�”}”(hŒinode2”h]”hŒinode2”…”�”}”(hjR¡h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj÷ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj� ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjH h²hh³jZ h´Mßubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjD h²hh³jZ h´Mßubah}”(h]”j? ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jZ h´MßhjA h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ+take two i_mutexes on non-directory objects”h]”hŒ+take two i_mutexes on non-directory objects”…”�”}”(hj|¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mßhjy¡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjA h²hh³jZ h´Mßubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j”¡jšj”¡j›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hŒþ**Parameters** ``struct inode *inode1`` first inode to lock ``struct inode *inode2`` second inode to lock **Description** Lock any non-NULL argument. Passed objects must not be directories. Zero, one or two objects may be locked by this function.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjž¡h]”hŒ Parameters”…”�”}”(hj ¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjœ¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mãhj˜¡ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ-``struct inode *inode1`` first inode to lock ”h]”(jÊ)�”}”(hŒ``struct inode *inode1``”h]”jÐ)�”}”(hj½¡h]”hŒstruct inode *inode1”…”�”}”(hj¿¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj»¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mähj·¡ubjæ)�”}”(hhh]”hÌ)�”}”(hŒfirst inode to lock”h]”hŒfirst inode to lock”…”�”}”(hjÖ¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÒ¡h´MähjÓ¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj·¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÒ¡h´Mähj´¡ubjÄ)�”}”(hŒ.``struct inode *inode2`` second inode to lock ”h]”(jÊ)�”}”(hŒ``struct inode *inode2``”h]”jÐ)�”}”(hjö¡h]”hŒstruct inode *inode2”…”�”}”(hjø¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjô¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Måhjð¡ubjæ)�”}”(hhh]”hÌ)�”}”(hŒsecond inode to lock”h]”hŒsecond inode to lock”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j ¢h´Måhj ¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjð¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j ¢h´Måhj´¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj˜¡ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj1¢h]”hŒ Description”…”�”}”(hj3¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj/¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mçhj˜¡ubhÌ)�”}”(hŒ|Lock any non-NULL argument. Passed objects must not be directories. Zero, one or two objects may be locked by this function.”h]”hŒ|Lock any non-NULL argument. Passed objects must not be directories. Zero, one or two objects may be locked by this function.”…”�”}”(hjG¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Màhj˜¡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ&unlock_two_nondirectories (C function)”Œc.unlock_two_nondirectories”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒKvoid unlock_two_nondirectories (struct inode *inode1, struct inode *inode2)”h]”j)�”}”(hŒJvoid unlock_two_nondirectories(struct inode *inode1, struct inode *inode2)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjv¢h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjr¢h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M÷ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…¢h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjr¢h²hh³j„¢h´M÷ubjC)�”}”(hŒunlock_two_nondirectories”h]”jI)�”}”(hŒunlock_two_nondirectories”h]”hŒunlock_two_nondirectories”…”�”}”(hj—¢h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj“¢ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjr¢h²hh³j„¢h´M÷ubj=)�”}”(hŒ,(struct inode *inode1, struct inode *inode2)”h]”(jC)�”}”(hŒstruct inode *inode1”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj³¢h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¯¢ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀ¢h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¯¢ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjÑ¢h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj΢ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÓ¢Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj™¢sbŒc.unlock_two_nondirectories”†”asbuh1hhj¯¢ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ¢h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¯¢ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÿ¢h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¯¢ubjI)�”}”(hŒinode1”h]”hŒinode1”…”�”}”(hj £h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¯¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj«¢ubjC)�”}”(hŒstruct inode *inode2”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj%£h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj!£ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2£h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj!£ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjC£h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj@£ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jE£Œmodname”NŒ classname”Njj )�”}”j ]”jí¢Œc.unlock_two_nondirectories”†”asbuh1hhj!£ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hja£h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj!£ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjo£h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj!£ubjI)�”}”(hŒinode2”h]”hŒinode2”…”�”}”(hj|£h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj!£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj«¢ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjr¢h²hh³j„¢h´M÷ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjn¢h²hh³j„¢h´M÷ubah}”(h]”ji¢ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j„¢h´M÷hjk¢h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ,release locks from lock_two_nondirectories()”h]”hŒ,release locks from lock_two_nondirectories()”…”�”}”(hj¦£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M÷hj££h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjk¢h²hh³j„¢h´M÷ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j¾£jšj¾£j›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hŒs**Parameters** ``struct inode *inode1`` first inode to unlock ``struct inode *inode2`` second inode to unlock”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÈ£h]”hŒ Parameters”…”�”}”(hjÊ£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÆ£ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mûhj£ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ/``struct inode *inode1`` first inode to unlock ”h]”(jÊ)�”}”(hŒ``struct inode *inode1``”h]”jÐ)�”}”(hjç£h]”hŒstruct inode *inode1”…”�”}”(hjé£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjå£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Møhjá£ubjæ)�”}”(hhh]”hÌ)�”}”(hŒfirst inode to unlock”h]”hŒfirst inode to unlock”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jü£h´Møhjý£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjá£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jü£h´MøhjÞ£ubjÄ)�”}”(hŒ/``struct inode *inode2`` second inode to unlock”h]”(jÊ)�”}”(hŒ``struct inode *inode2``”h]”jÐ)�”}”(hj ¤h]”hŒstruct inode *inode2”…”�”}”(hj"¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Múhj¤ubjæ)�”}”(hhh]”hÌ)�”}”(hŒsecond inode to unlock”h]”hŒsecond inode to unlock”…”�”}”(hj9¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mùhj6¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j5¤h´MúhjÞ£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj£ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œinode_insert5 (C function)”Œc.inode_insert5”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ”struct inode * inode_insert5 (struct inode *inode, u64 hashval, int (*test)(struct inode *, void *), int (*set)(struct inode *, void *), void *data)”h]”j)�”}”(hŒŽstruct inode *inode_insert5(struct inode *inode, u64 hashval, int (*test)(struct inode*, void*), int (*set)(struct inode*, void*), void *data)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjz¤h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjv¤h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ¤h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjv¤h²hh³j‡¤h´M ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj™¤h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj–¤ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j›¤Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒ inode_insert5”sbŒc.inode_insert5”†”asbuh1hhjv¤h²hh³j‡¤h´M ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº¤h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjv¤h²hh³j‡¤h´M ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjȤh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjv¤h²hh³j‡¤h´M ubjC)�”}”(hŒ inode_insert5”h]”jI)�”}”(hj·¤h]”hŒ inode_insert5”…”�”}”(hjÙ¤h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÕ¤ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjv¤h²hh³j‡¤h´M ubj=)�”}”(hŒs(struct inode *inode, u64 hashval, int (*test)(struct inode*, void*), int (*set)(struct inode*, void*), void *data)”h]”(jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjô¤h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjð¤ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjð¤ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¥Œmodname”NŒ classname”Njj )�”}”j ]”jµ¤Œc.inode_insert5”†”asbuh1hhjð¤ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0¥h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjð¤ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj>¥h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjð¤ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjK¥h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjð¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjì¤ubjC)�”}”(hŒ u64 hashval”h]”(h)�”}”(hhh]”jI)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjg¥h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjd¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”ji¥Œmodname”NŒ classname”Njj )�”}”j ]”jµ¤Œc.inode_insert5”†”asbuh1hhj`¥ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…¥h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj`¥ubjI)�”}”(hŒhashval”h]”hŒhashval”…”�”}”(hj“¥h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj`¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjì¤ubjC)�”}”(hŒ!int (*test)(struct inode*, void*)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj¬¥h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¨¥ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº¥h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¨¥ubj¯)�”}”(hŒ(”h]”hŒ(”…”�”}”(hjÈ¥h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¨¥ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÖ¥h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¨¥ubjI)�”}”(hŒtest”h]”hŒtest”…”�”}”(hjã¥h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¨¥ubj¯)�”}”(hŒ)”h]”hŒ)”…”�”}”(hjñ¥h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¨¥ubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hjÿ¥h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¨¥ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj ¦h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¨¥ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¨¥ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj*¦h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj'¦ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j,¦Œmodname”NŒ classname”Njj )�”}”j ]”jµ¤Œc.inode_insert5”†”asbuh1hhj¨¥ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjH¦h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¨¥ubj¯)�”}”(hŒ,”h]”hŒ,”…”�”}”(hjU¦h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¨¥ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc¦h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¨¥ubj�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjq¦h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¨¥ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¨¥ubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hjŒ¦h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¨¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjì¤ubjC)�”}”(hŒ int (*set)(struct inode*, void*)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj¤¦h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj ¦ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²¦h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ¦ubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hjÀ¦h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ¦ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjͦh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ¦ubjI)�”}”(hŒset”h]”hŒset”…”�”}”(hjÚ¦h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ¦ubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hjè¦h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ¦ubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hjõ¦h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ¦ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj ¦ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ¦ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj §h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj§ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j"§Œmodname”NŒ classname”Njj )�”}”j ]”jµ¤Œc.inode_insert5”†”asbuh1hhj ¦ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj>§h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ¦ubj¯)�”}”(hjW¦h]”hŒ,”…”�”}”(hjK§h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ¦ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX§h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ¦ubj�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjf§h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj ¦ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjt§h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ¦ubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hj�§h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjì¤ubjC)�”}”(hŒ void *data”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj™§h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj•§ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§§h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj•§ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjµ§h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj•§ubjI)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj•§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjì¤ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjv¤h²hh³j‡¤h´M ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjr¤h²hh³j‡¤h´M ubah}”(h]”jm¤ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j‡¤h´M hjo¤h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ*obtain an inode from a mounted file system”h]”hŒ*obtain an inode from a mounted file system”…”�”}”(hjì§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M hjé§h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjo¤h²hh³j‡¤h´M ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j¨jšj¨j›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hX¤**Parameters** ``struct inode *inode`` pre-allocated inode to use for insert to cache ``u64 hashval`` hash value (usually inode number) to get ``int (*test)(struct inode *, void *)`` callback used for comparisons between inodes ``int (*set)(struct inode *, void *)`` callback used to initialize a new struct inode ``void *data`` opaque data pointer to pass to **test** and **set** **Description** Search for the inode specified by **hashval** and **data** in the inode cache, and if present return it with an increased reference count. This is a variant of iget5_locked() that doesn't allocate an inode. If the inode is not present in the cache, insert the pre-allocated inode and return it locked, hashed, and with the I_NEW flag set. The file system gets to fill it in before unlocking it via unlock_new_inode(). Note that both **test** and **set** are called with the inode_hash_lock held, so they can't sleep.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj¨h]”hŒ Parameters”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj ¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M hj¨ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒG``struct inode *inode`` pre-allocated inode to use for insert to cache ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj-¨h]”hŒstruct inode *inode”…”�”}”(hj/¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj+¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M hj'¨ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.pre-allocated inode to use for insert to cache”h]”hŒ.pre-allocated inode to use for insert to cache”…”�”}”(hjF¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jB¨h´M hjC¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj'¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jB¨h´M hj$¨ubjÄ)�”}”(hŒ9``u64 hashval`` hash value (usually inode number) to get ”h]”(jÊ)�”}”(hŒ``u64 hashval``”h]”jÐ)�”}”(hjf¨h]”hŒ u64 hashval”…”�”}”(hjh¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjd¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M hj`¨ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(hash value (usually inode number) to get”h]”hŒ(hash value (usually inode number) to get”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j{¨h´M hj|¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj`¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j{¨h´M hj$¨ubjÄ)�”}”(hŒU``int (*test)(struct inode *, void *)`` callback used for comparisons between inodes ”h]”(jÊ)�”}”(hŒ'``int (*test)(struct inode *, void *)``”h]”jÐ)�”}”(hjŸ¨h]”hŒ#int (*test)(struct inode *, void *)”…”�”}”(hj¡¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj�¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M hj™¨ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ,callback used for comparisons between inodes”h]”hŒ,callback used for comparisons between inodes”…”�”}”(hj¸¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j´¨h´M hjµ¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj™¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j´¨h´M hj$¨ubjÄ)�”}”(hŒV``int (*set)(struct inode *, void *)`` callback used to initialize a new struct inode ”h]”(jÊ)�”}”(hŒ&``int (*set)(struct inode *, void *)``”h]”jÐ)�”}”(hjبh]”hŒ"int (*set)(struct inode *, void *)”…”�”}”(hjÚ¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÖ¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M hjÒ¨ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.callback used to initialize a new struct inode”h]”hŒ.callback used to initialize a new struct inode”…”�”}”(hjñ¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jí¨h´M hjî¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÒ¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jí¨h´M hj$¨ubjÄ)�”}”(hŒC``void *data`` opaque data pointer to pass to **test** and **set** ”h]”(jÊ)�”}”(hŒ``void *data``”h]”jÐ)�”}”(hj©h]”hŒ void *data”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mhj ©ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ3opaque data pointer to pass to **test** and **set**”h]”(hŒopaque data pointer to pass to ”…”�”}”(hj*©h²hh³Nh´Nubj©)�”}”(hŒ**test**”h]”hŒtest”…”�”}”(hj2©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj*©ubhŒ and ”…”�”}”(hj*©h²hh³Nh´Nubj©)�”}”(hŒ**set**”h]”hŒset”…”�”}”(hjD©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj*©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j&©h´Mhj'©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj ©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j&©h´Mhj$¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj¨ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjl©h]”hŒ Description”…”�”}”(hjn©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mhj¨ubhÌ)�”}”(hŒÎSearch for the inode specified by **hashval** and **data** in the inode cache, and if present return it with an increased reference count. This is a variant of iget5_locked() that doesn't allocate an inode.”h]”(hŒ"Search for the inode specified by ”…”�”}”(hj‚©h²hh³Nh´Nubj©)�”}”(hŒ **hashval**”h]”hŒhashval”…”�”}”(hjŠ©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‚©ubhŒ and ”…”�”}”(hj‚©h²hh³Nh´Nubj©)�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hjœ©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‚©ubhŒ– in the inode cache, and if present return it with an increased reference count. This is a variant of iget5_locked() that doesn’t allocate an inode.”…”�”}”(hj‚©h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mhj¨ubhÌ)�”}”(hŒÒIf the inode is not present in the cache, insert the pre-allocated inode and return it locked, hashed, and with the I_NEW flag set. The file system gets to fill it in before unlocking it via unlock_new_inode().”h]”hŒÒIf the inode is not present in the cache, insert the pre-allocated inode and return it locked, hashed, and with the I_NEW flag set. The file system gets to fill it in before unlocking it via unlock_new_inode().”…”�”}”(hjµ©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mhj¨ubhÌ)�”}”(hŒbNote that both **test** and **set** are called with the inode_hash_lock held, so they can't sleep.”•h]”(hŒNote that both ”…”�”}”(hjÄ©h²hh³Nh´Nubj©)�”}”(hŒ**test**”h]”hŒtest”…”�”}”(hjÌ©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÄ©ubhŒ and ”…”�”}”(hjÄ©h²hh³Nh´Nubj©)�”}”(hŒ**set**”h]”hŒset”…”�”}”(hjÞ©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÄ©ubhŒA are called with the inode_hash_lock held, so they can’t sleep.”…”�”}”(hjÄ©h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mhj¨ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œiget5_locked (C function)”Œc.iget5_locked”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ–struct inode * iget5_locked (struct super_block *sb, u64 hashval, int (*test)(struct inode *, void *), int (*set)(struct inode *, void *), void *data)”h]”j)�”}”(hŒ�struct inode *iget5_locked(struct super_block *sb, u64 hashval, int (*test)(struct inode*, void*), int (*set)(struct inode*, void*), void *data)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjªh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MUubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%ªh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjªh²hh³j$ªh´MUubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj6ªh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj3ªubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j8ªŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒ iget5_locked”sbŒc.iget5_locked”†”asbuh1hhjªh²hh³j$ªh´MUubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWªh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjªh²hh³j$ªh´MUubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjeªh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjªh²hh³j$ªh´MUubjC)�”}”(hŒ iget5_locked”h]”jI)�”}”(hjTªh]”hŒ iget5_locked”…”�”}”(hjvªh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjrªubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjªh²hh³j$ªh´MUubj=)�”}”(hŒv(struct super_block *sb, u64 hashval, int (*test)(struct inode*, void*), int (*set)(struct inode*, void*), void *data)”h]”(jC)�”}”(hŒstruct super_block *sb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj‘ªh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj�ªubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžªh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�ªubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hj¯ªh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¬ªubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j±ªŒmodname”NŒ classname”Njj )�”}”j ]”jRªŒc.iget5_locked”†”asbuh1hhj�ªubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjͪh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�ªubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÛªh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj�ªubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hjèªh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�ªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj‰ªubjC)�”}”(hŒ u64 hashval”h]”(h)�”}”(hhh]”jI)�”}”(hŒu64”h]”hŒu64”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj«ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j«Œmodname”NŒ classname”Njj )�”}”j ]”jRªŒc.iget5_locked”†”asbuh1hhjýªubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"«h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjýªubjI)�”}”(hŒhashval”h]”hŒhashval”…”�”}”(hj0«h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjýªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj‰ªubjC)�”}”(hŒ!int (*test)(struct inode*, void*)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjI«h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjE«ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW«h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjE«ubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hje«h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjE«ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjr«h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjE«ubjI)�”}”(hŒtest”h]”hŒtest”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjE«ubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hj�«h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjE«ubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hjš«h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjE«ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj§«h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjE«ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´«h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjE«ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjÅ«h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj«ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÇ«Œmodname”NŒ classname”Njj )�”}”j ]”jRªŒc.iget5_locked”†”asbuh1hhjE«ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjã«h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjE«ubj¯)�”}”(hjW¦h]”hŒ,”…”�”}”(hjð«h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjE«ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjý«h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjE«ubj�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj ¬h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjE«ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjE«ubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hj&¬h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjE«ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj‰ªubjC)�”}”(hŒ int (*set)(struct inode*, void*)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj>¬h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj:¬ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjL¬h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj:¬ubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hjZ¬h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj:¬ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjg¬h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj:¬ubjI)�”}”(hŒset”h]”hŒset”…”�”}”(hjt¬h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj:¬ubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hj‚¬h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj:¬ubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hj�¬h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj:¬ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjœ¬h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj:¬ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©¬h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj:¬ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjº¬h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj·¬ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¼¬Œmodname”NŒ classname”Njj )�”}”j ]”jRªŒc.iget5_locked”†”asbuh1hhj:¬ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjجh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj:¬ubj¯)�”}”(hjW¦h]”hŒ,”…”�”}”(hjå¬h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj:¬ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjò¬h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj:¬ubj�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj:¬ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj:¬ubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj:¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj‰ªubjC)�”}”(hŒ void *data”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj3­h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj/­ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjA­h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj/­ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjO­h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj/­ubjI)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj\­h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj/­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj‰ªubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjªh²hh³j$ªh´MUubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjªh²hh³j$ªh´MUubah}”(h]”j ªah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j$ªh´MUhj ªh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ*obtain an inode from a mounted file system”h]”hŒ*obtain an inode from a mounted file system”…”�”}”(hj†­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MUhjƒ­h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj ªh²hh³j$ªh´MUubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jž­jšjž­j›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hXà**Parameters** ``struct super_block *sb`` super block of file system ``u64 hashval`` hash value (usually inode number) to get ``int (*test)(struct inode *, void *)`` callback used for comparisons between inodes ``int (*set)(struct inode *, void *)`` callback used to initialize a new struct inode ``void *data`` opaque data pointer to pass to **test** and **set** **Description** Search for the inode specified by **hashval** and **data** in the inode cache, and if present return it with an increased reference count. This is a generalized version of iget_locked() for file systems where the inode number is not sufficient for unique identification of an inode. If the inode is not present in the cache, allocate and insert a new inode and return it locked, hashed, and with the I_NEW flag set. The file system gets to fill it in before unlocking it via unlock_new_inode(). Note that both **test** and **set** are called with the inode_hash_lock held, so they can't sleep.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj¨­h]”hŒ Parameters”…”�”}”(hjª­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¦­ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MYhj¢­ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ6``struct super_block *sb`` super block of file system ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hjÇ­h]”hŒstruct super_block *sb”…”�”}”(hjÉ­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÅ­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MVhjÁ­ubjæ)�”}”(hhh]”hÌ)�”}”(hŒsuper block of file system”h]”hŒsuper block of file system”…”�”}”(hjà­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÜ­h´MVhjÝ­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÁ­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÜ­h´MVhj¾­ubjÄ)�”}”(hŒ9``u64 hashval`` hash value (usually inode number) to get ”h]”(jÊ)�”}”(hŒ``u64 hashval``”h]”jÐ)�”}”(hj®h]”hŒ u64 hashval”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjþ­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MWhjú­ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(hash value (usually inode number) to get”h]”hŒ(hash value (usually inode number) to get”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j®h´MWhj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjú­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j®h´MWhj¾­ubjÄ)�”}”(hŒU``int (*test)(struct inode *, void *)`` callback used for comparisons between inodes ”h]”(jÊ)�”}”(hŒ'``int (*test)(struct inode *, void *)``”h]”jÐ)�”}”(hj9®h]”hŒ#int (*test)(struct inode *, void *)”…”�”}”(hj;®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj7®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MXhj3®ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ,callback used for comparisons between inodes”h]”hŒ,callback used for comparisons between inodes”…”�”}”(hjR®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jN®h´MXhjO®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj3®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jN®h´MXhj¾­ubjÄ)�”}”(hŒV``int (*set)(struct inode *, void *)`` callback used to initialize a new struct inode ”h]”(jÊ)�”}”(hŒ&``int (*set)(struct inode *, void *)``”h]”jÐ)�”}”(hjr®h]”hŒ"int (*set)(struct inode *, void *)”…”�”}”(hjt®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjp®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MYhjl®ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.callback used to initialize a new struct inode”h]”hŒ.callback used to initialize a new struct inode”…”�”}”(hj‹®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‡®h´MYhjˆ®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjl®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‡®h´MYhj¾­ubjÄ)�”}”(hŒC``void *data`` opaque data pointer to pass to **test** and **set** ”h]”(jÊ)�”}”(hŒ``void *data``”h]”jÐ)�”}”(hj«®h]”hŒ void *data”…”�”}”(hj­®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj©®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MZhj¥®ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ3opaque data pointer to pass to **test** and **set**”h]”(hŒopaque data pointer to pass to ”…”�”}”(hjÄ®h²hh³Nh´Nubj©)�”}”(hŒ**test**”h]”hŒtest”…”�”}”(hjÌ®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÄ®ubhŒ and ”…”�”}”(hjÄ®h²hh³Nh´Nubj©)�”}”(hŒ**set**”h]”hŒset”…”�”}”(hjÞ®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÄ®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÀ®h´MZhjÁ®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¥®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÀ®h´MZhj¾­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj¢­ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj¯h]”hŒ Description”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M\hj¢­ubhÌ)�”}”(hXSearch for the inode specified by **hashval** and **data** in the inode cache, and if present return it with an increased reference count. This is a generalized version of iget_locked() for file systems where the inode number is not sufficient for unique identification of an inode.”h]”(hŒ"Search for the inode specified by ”…”�”}”(hj¯h²hh³Nh´Nubj©)�”}”(hŒ **hashval**”h]”hŒhashval”…”�”}”(hj$¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¯ubhŒ and ”…”�”}”(hj¯h²hh³Nh´Nubj©)�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hj6¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¯ubhŒà in the inode cache, and if present return it with an increased reference count. This is a generalized version of iget_locked() for file systems where the inode number is not sufficient for unique identification of an inode.”…”�”}”(hj¯h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M[hj¢­ubhÌ)�”}”(hŒÓIf the inode is not present in the cache, allocate and insert a new inode and return it locked, hashed, and with the I_NEW flag set. The file system gets to fill it in before unlocking it via unlock_new_inode().”h]”hŒÓIf the inode is not present in the cache, allocate and insert a new inode and return it locked, hashed, and with the I_NEW flag set. The file system gets to fill it in before unlocking it via unlock_new_inode().”…”�”}”(hjO¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M`hj¢­ubhÌ)�”}”(hŒbNote that both **test** and **set** are called with the inode_hash_lock held, so they can't sleep.”h]”(hŒNote that both ”…”�”}”(hj^¯h²hh³Nh´Nubj©)�”}”(hŒ**test**”h]”hŒtest”…”�”}”(hjf¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj^¯ubhŒ and ”…”�”}”(hj^¯h²hh³Nh´Nubj©)�”}”(hŒ**set**”h]”hŒset”…”�”}”(hjx¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj^¯ubhŒA are called with the inode_hash_lock held, so they can’t sleep.”…”�”}”(hj^¯h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mdhj¢­ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œiget5_locked_rcu (C function)”Œc.iget5_locked_rcu”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒšstruct inode * iget5_locked_rcu (struct super_block *sb, u64 hashval, int (*test)(struct inode *, void *), int (*set)(struct inode *, void *), void *data)”h]”j)�”}”(hŒ”struct inode *iget5_locked_rcu(struct super_block *sb, u64 hashval, int (*test)(struct inode*, void*), int (*set)(struct inode*, void*), void *data)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj±¯h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj­¯h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M|ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿¯h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj­¯h²hh³j¾¯h´M|ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjЯh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjͯubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÒ¯Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒiget5_locked_rcu”sbŒc.iget5_locked_rcu”†”asbuh1hhj­¯h²hh³j¾¯h´M|ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ¯h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj­¯h²hh³j¾¯h´M|ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÿ¯h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj­¯h²hh³j¾¯h´M|ubjC)�”}”(hŒiget5_locked_rcu”h]”jI)�”}”(hjî¯h]”hŒiget5_locked_rcu”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj °ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj­¯h²hh³j¾¯h´M|ubj=)�”}”(hŒv(struct super_block *sb, u64 hashval, int (*test)(struct inode*, void*), int (*set)(struct inode*, void*), void *data)”h]”(jC)�”}”(hŒstruct super_block *sb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj+°h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj'°ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8°h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj'°ubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hjI°h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjF°ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jK°Œmodname”NŒ classname”Njj )�”}”j ]”j쯌c.iget5_locked_rcu”†”asbuh1hhj'°ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg°h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj'°ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hju°h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj'°ubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hj‚°h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj'°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj#°ubjC)�”}”(hŒ u64 hashval”h]”(h)�”}”(hhh]”jI)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjž°h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj›°ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j °Œmodname”NŒ classname”Njj )�”}”j ]”j쯌c.iget5_locked_rcu”†”asbuh1hhj—°ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼°h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj—°ubjI)�”}”(hŒhashval”h]”hŒhashval”…”�”}”(hjʰh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj—°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj#°ubjC)�”}”(hŒ!int (*test)(struct inode*, void*)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjã°h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjß°ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ°h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjß°ubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hjÿ°h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjß°ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj ±h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjß°ubjI)�”}”(hŒtest”h]”hŒtest”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjß°ubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hj'±h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjß°ubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hj4±h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjß°ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjA±h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjß°ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN±h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjß°ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj_±h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj\±ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”ja±Œmodname”NŒ classname”Njj )�”}”j ]”j쯌c.iget5_locked_rcu”†”asbuh1hhjß°ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj}±h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjß°ubj¯)�”}”(hjW¦h]”hŒ,”…”�”}”(hjбh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjß°ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—±h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjß°ubj�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¥±h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjß°ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj³±h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjß°ubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hjÀ±h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjß°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj#°ubjC)�”}”(hŒ int (*set)(struct inode*, void*)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjرh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÔ±ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ±h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÔ±ubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hjô±h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÔ±ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÔ±ubjI)�”}”(hŒset”h]”hŒset”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÔ±ubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÔ±ubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hj)²h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÔ±ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj6²h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÔ±ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjC²h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÔ±ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjT²h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjQ²ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jV²Œmodname”NŒ classname”Njj )�”}”j ]”j쯌c.iget5_locked_rcu”†”asbuh1hhjÔ±ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjr²h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÔ±ubj¯)�”}”(hjW¦h]”hŒ,”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÔ±ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ²h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÔ±ubj�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjš²h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÔ±ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¨²h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÔ±ubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hjµ²h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÔ±ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj#°ubjC)�”}”(hŒ void *data”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjͲh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjɲubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ²h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjɲubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjé²h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjɲubjI)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjö²h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjɲubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj#°ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj­¯h²hh³j¾¯h´M|ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj©¯h²hh³j¾¯h´M|ubah}”(h]”j¤¯ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j¾¯h´M|hj¦¯h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ*obtain an inode from a mounted file system”h]”hŒ*obtain an inode from a mounted file system”…”�”}”(hj ³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M|hj³h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¦¯h²hh³j¾¯h´M|ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j8³jšj8³j›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hX**Parameters** ``struct super_block *sb`` super block of file system ``u64 hashval`` hash value (usually inode number) to get ``int (*test)(struct inode *, void *)`` callback used for comparisons between inodes ``int (*set)(struct inode *, void *)`` callback used to initialize a new struct inode ``void *data`` opaque data pointer to pass to **test** and **set** **Description** This is equivalent to iget5_locked, except the **test** callback must tolerate the inode not being stable, including being mid-teardown.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjB³h]”hŒ Parameters”…”�”}”(hjD³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj@³ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M€hj<³ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ6``struct super_block *sb`` super block of file system ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hja³h]”hŒstruct super_block *sb”…”�”}”(hjc³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj_³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M}hj[³ubjæ)�”}”(hhh]”hÌ)�”}”(hŒsuper block of file system”h]”hŒsuper block of file system”…”�”}”(hjz³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jv³h´M}hjw³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj[³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jv³h´M}hjX³ubjÄ)�”}”(hŒ9``u64 hashval`` hash value (usually inode number) to get ”h]”(jÊ)�”}”(hŒ``u64 hashval``”h]”jÐ)�”}”(hjš³h]”hŒ u64 hashval”…”�”}”(hjœ³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj˜³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M~hj”³ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(hash value (usually inode number) to get”h]”hŒ(hash value (usually inode number) to get”…”�”}”(hj³³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¯³h´M~hj°³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj”³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¯³h´M~hjX³ubjÄ)�”}”(hŒU``int (*test)(struct inode *, void *)`` callback used for comparisons between inodes ”h]”(jÊ)�”}”(hŒ'``int (*test)(struct inode *, void *)``”h]”jÐ)�”}”(hjÓ³h]”hŒ#int (*test)(struct inode *, void *)”…”�”}”(hjÕ³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjѳubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mhjͳubjæ)�”}”(hhh]”hÌ)�”}”(hŒ,callback used for comparisons between inodes”h]”hŒ,callback used for comparisons between inodes”…”�”}”(hjì³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jè³h´Mhjé³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjͳubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jè³h´MhjX³ubjÄ)�”}”(hŒV``int (*set)(struct inode *, void *)`` callback used to initialize a new struct inode ”h]”(jÊ)�”}”(hŒ&``int (*set)(struct inode *, void *)``”h]”jÐ)�”}”(hj ´h]”hŒ"int (*set)(struct inode *, void *)”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj ´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M€hj´ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.callback used to initialize a new struct inode”h]”hŒ.callback used to initialize a new struct inode”…”�”}”(hj%´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j!´h´M€hj"´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j!´h´M€hjX³ubjÄ)�”}”(hŒC``void *data`` opaque data pointer to pass to **test** and **set** ”h]”(jÊ)�”}”(hŒ``void *data``”h]”jÐ)�”}”(hjE´h]”hŒ void *data”…”�”}”(hjG´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjC´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M�hj?´ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ3opaque data pointer to pass to **test** and **set**”h]”(hŒopaque data pointer to pass to ”…”�”}”(hj^´h²hh³Nh´Nubj©)�”}”(hŒ**test**”h]”hŒtest”…”�”}”(hjf´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj^´ubhŒ and ”…”�”}”(hj^´h²hh³Nh´Nubj©)�”}”(hŒ**set**”h]”hŒset”…”�”}”(hjx´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj^´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jZ´h´M�hj[´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj?´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jZ´h´M�hjX³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj<³ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj ´h]”hŒ Description”…”�”}”(hj¢´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjž´ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mƒhj<³ubhÌ)�”}”(hŒˆThis is equivalent to iget5_locked, except the **test** callback must tolerate the inode not being stable, including being mid-teardown.”h]”(hŒ/This is equivalent to iget5_locked, except the ”…”�”}”(hj¶´h²hh³Nh´Nubj©)�”}”(hŒ**test**”h]”hŒtest”…”�”}”(hj¾´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¶´ubhŒQ callback must tolerate the inode not being stable, including being mid-teardown.”…”�”}”(hj¶´h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M‚hj<³ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œiget_locked (C function)”Œ c.iget_locked”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒah"]”h$]”h&]”uh1j1hjó´h²hh³jµh´M©ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjµubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jµŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒ iget_locked”sbŒ c.iget_locked”†”asbuh1hhjó´h²hh³jµh´M©ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7µh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjó´h²hh³jµh´M©ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjEµh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjó´h²hh³jµh´M©ubjC)�”}”(hŒ iget_locked”h]”jI)�”}”(hj4µh]”hŒ iget_locked”…”�”}”(hjVµh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjRµubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjó´h²hh³jµh´M©ubj=)�”}”(hŒ!(struct super_block *sb, u64 ino)”h]”(jC)�”}”(hŒstruct super_block *sb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjqµh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjmµubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~µh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjmµubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hj�µh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŒµubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j‘µŒmodname”NŒ classname”Njj )�”}”j ]”j2µŒ c.iget_locked”†”asbuh1hhjmµubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­µh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjmµubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj»µh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjmµubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hjȵh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjmµubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjiµubjC)�”}”(hŒu64 ino”h]”(h)�”}”(hhh]”jI)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjäµh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjáµubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j浌modname”NŒ classname”Njj )�”}”j ]”j2µŒ c.iget_locked”†”asbuh1hhjݵubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjݵubjI)�”}”(hŒino”h]”hŒino”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjݵubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjiµubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjó´h²hh³jµh´M©ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjï´h²hh³jµh´M©ubah}”(h]”jê´ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jµh´M©hjì´h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ*obtain an inode from a mounted file system”h]”hŒ*obtain an inode from a mounted file system”…”�”}”(hj:¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M©hj7¶h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjì´h²hh³jµh´M©ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jR¶jšjR¶j›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hX**Parameters** ``struct super_block *sb`` super block of file system ``u64 ino`` inode number to get **Description** Search for the inode specified by **ino** in the inode cache and if present return it with an increased reference count. This is for file systems where the inode number is sufficient for unique identification of an inode. If the inode is not in cache, allocate a new inode and return it locked, hashed, and with the I_NEW flag set. The file system gets to fill it in before unlocking it via unlock_new_inode().”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj\¶h]”hŒ Parameters”…”�”}”(hj^¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjZ¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M­hjV¶ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ6``struct super_block *sb`` super block of file system ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hj{¶h]”hŒstruct super_block *sb”…”�”}”(hj}¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjy¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mªhju¶ubjæ)�”}”(hhh]”hÌ)�”}”(hŒsuper block of file system”h]”hŒsuper block of file system”…”�”}”(hj”¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�¶h´Mªhj‘¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhju¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j�¶h´Mªhjr¶ubjÄ)�”}”(hŒ ``u64 ino`` inode number to get ”h]”(jÊ)�”}”(hŒ ``u64 ino``”h]”jÐ)�”}”(hj´¶h]”hŒu64 ino”…”�”}”(hj¶¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj²¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M«hj®¶ubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode number to get”h]”hŒinode number to get”…”�”}”(hjͶh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jɶh´M«hjʶubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj®¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jɶh´M«hjr¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjV¶ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjï¶h]”hŒ Description”…”�”}”(hjñ¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjí¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M­hjV¶ubhÌ)�”}”(hŒÝSearch for the inode specified by **ino** in the inode cache and if present return it with an increased reference count. This is for file systems where the inode number is sufficient for unique identification of an inode.”h]”(hŒ"Search for the inode specified by ”…”�”}”(hj·h²hh³Nh´Nubj©)�”}”(hŒ**ino**”h]”hŒino”…”�”}”(hj ·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj·ubhŒ´ in the inode cache and if present return it with an increased reference count. This is for file systems where the inode number is sufficient for unique identification of an inode.”…”�”}”(hj·h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M¬hjV¶ubhÌ)�”}”(hŒ½If the inode is not in cache, allocate a new inode and return it locked, hashed, and with the I_NEW flag set. The file system gets to fill it in before unlocking it via unlock_new_inode().”h]”hŒ½If the inode is not in cache, allocate a new inode and return it locked, hashed, and with the I_NEW flag set. The file system gets to fill it in before unlocking it via unlock_new_inode().”…”�”}”(hj&·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M°hjV¶ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œiunique (C function)”Œ c.iunique”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ:ino_t iunique (struct super_block *sb, ino_t max_reserved)”h]”j)�”}”(hŒ9ino_t iunique(struct super_block *sb, ino_t max_reserved)”h]”(h)�”}”(hhh]”jI)�”}”(hŒino_t”h]”hŒino_t”…”�”}”(hjX·h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjU·ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jZ·Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒiunique”sbŒ c.iunique”†”asbuh1hhjQ·h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz·h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjQ·h²hh³jy·h´M ubjC)�”}”(hŒiunique”h]”jI)�”}”(hjv·h]”hŒiunique”…”�”}”(hjŒ·h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjˆ·ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjQ·h²hh³jy·h´M ubj=)�”}”(hŒ,(struct super_block *sb, ino_t max_reserved)”h]”(jC)�”}”(hŒstruct super_block *sb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj§·h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj£·ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´·h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj£·ubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hjÅ·h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj·ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÇ·Œmodname”NŒ classname”Njj )�”}”j ]”jt·Œ c.iunique”†”asbuh1hhj£·ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjã·h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj£·ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjñ·h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj£·ubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hjþ·h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj£·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjŸ·ubjC)�”}”(hŒino_t max_reserved”h]”(h)�”}”(hhh]”jI)�”}”(hŒino_t”h]”hŒino_t”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¸ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¸Œmodname”NŒ classname”Njj )�”}”j ]”jt·Œ c.iunique”†”asbuh1hhj¸ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8¸h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¸ubjI)�”}”(hŒ max_reserved”h]”hŒ max_reserved”…”�”}”(hjF¸h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¸ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjŸ·ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjQ·h²hh³jy·h´M ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjM·h²hh³jy·h´M ubah}”(h]”jH·ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jy·h´M hjJ·h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒget a unique inode number”h]”hŒget a unique inode number”…”�”}”(hjp¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M hjm¸h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjJ·h²hh³jy·h´M ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jˆ¸jšjˆ¸j›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hXü**Parameters** ``struct super_block *sb`` superblock ``ino_t max_reserved`` highest reserved inode number **Description** Obtain an inode number that is unique on the system for a given superblock. This is used by file systems that have no natural permanent inode numbering system. An inode number is returned that is higher than the reserved limit but unique. BUGS: With a large number of inodes live on the file system this function currently becomes quite slow.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj’¸h]”hŒ Parameters”…”�”}”(hj”¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj�¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MhjŒ¸ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ&``struct super_block *sb`` superblock ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hj±¸h]”hŒstruct super_block *sb”…”�”}”(hj³¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¯¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M hj«¸ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ superblock”h]”hŒ superblock”…”�”}”(hjʸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jƸh´M hjǸubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj«¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jƸh´M hj¨¸ubjÄ)�”}”(hŒ5``ino_t max_reserved`` highest reserved inode number ”h]”(jÊ)�”}”(hŒ``ino_t max_reserved``”h]”jÐ)�”}”(hjê¸h]”hŒino_t max_reserved”…”�”}”(hjì¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjè¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M hjä¸ubjæ)�”}”(hhh]”hÌ)�”}”(hŒhighest reserved inode number”h]”hŒhighest reserved inode number”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÿ¸h´M hj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjä¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÿ¸h´M hj¨¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjŒ¸ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj%¹h]”hŒ Description”…”�”}”(hj'¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj#¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MhjŒ¸ubjÁ™)�”}”(hXWObtain an inode number that is unique on the system for a given superblock. This is used by file systems that have no natural permanent inode numbering system. An inode number is returned that is higher than the reserved limit but unique. BUGS: With a large number of inodes live on the file system this function currently becomes quite slow.”h]”(hÌ)�”}”(hŒîObtain an inode number that is unique on the system for a given superblock. This is used by file systems that have no natural permanent inode numbering system. An inode number is returned that is higher than the reserved limit but unique.”h]”hŒîObtain an inode number that is unique on the system for a given superblock. This is used by file systems that have no natural permanent inode numbering system. An inode number is returned that is higher than the reserved limit but unique.”…”�”}”(hj?¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M hj;¹ubhÌ)�”}”(hŒgBUGS: With a large number of inodes live on the file system this function currently becomes quite slow.”h]”hŒgBUGS: With a large number of inodes live on the file system this function currently becomes quite slow.”…”�”}”(hjN¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mhj;¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀ™h³jM¹h´M hjŒ¸ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œihold (C function)”Œc.ihold”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ void ihold (struct inode *inode)”h]”j)�”}”(hŒvoid ihold(struct inode *inode)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjƒ¹h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¹h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M1ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’¹h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¹h²hh³j‘¹h´M1ubjC)�”}”(hŒihold”h]”jI)�”}”(hŒihold”h]”hŒihold”…”�”}”(hj¤¹h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ¹ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj¹h²hh³j‘¹h´M1ubj=)�”}”(hŒ(struct inode *inode)”h]”jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÀ¹h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¼¹ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj͹h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¼¹ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjÞ¹h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÛ¹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j์modname”NŒ classname”Njj )�”}”j ]”j)�”}”jj¦¹sbŒc.ihold”†”asbuh1hhj¼¹ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ¹h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¼¹ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj ºh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¼¹ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¼¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¸¹ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj¹h²hh³j‘¹h´M1ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj{¹h²hh³j‘¹h´M1ubah}”(h]”jv¹ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j‘¹h´M1hjx¹h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ;get a reference on the inode, provided you already have one”h]”hŒ;get a reference on the inode, provided you already have one”…”�”}”(hjCºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M1hj@ºh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjx¹h²hh³j‘¹h´M1ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j[ºjšj[ºj›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hŒ=**Parameters** ``struct inode *inode`` inode to operate on”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjeºh]”hŒ Parameters”…”�”}”(hjgºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjcºubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M5hj_ºubj¿)�”}”(hhh]”jÄ)�”}”(hŒ+``struct inode *inode`` inode to operate on”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj„ºh]”hŒstruct inode *inode”…”�”}”(hj†ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj‚ºubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M7hj~ºubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode to operate on”h]”hŒinode to operate on”…”�”}”(hj�ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M2hjšºubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj~ºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j™ºh´M7hj{ºubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj_ºubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œilookup5_nowait (C function)”Œc.ilookup5_nowait”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ‚struct inode * ilookup5_nowait (struct super_block *sb, u64 hashval, int (*test)(struct inode *, void *), void *data, bool *isnew)”h]”j)�”}”(hŒ~struct inode *ilookup5_nowait(struct super_block *sb, u64 hashval, int (*test)(struct inode*, void*), void *data, bool *isnew)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÞºh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÚºh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M|ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìºh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÚºh²hh³jëºh´M|ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjýºh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjúºubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÿºŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒilookup5_nowait”sbŒc.ilookup5_nowait”†”asbuh1hhjÚºh²hh³jëºh´M|ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÚºh²hh³jëºh´M|ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj,»h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÚºh²hh³jëºh´M|ubjC)�”}”(hŒilookup5_nowait”h]”jI)�”}”(hj»h]”hŒilookup5_nowait”…”�”}”(hj=»h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj9»ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÚºh²hh³jëºh´M|ubj=)�”}”(hŒa(struct super_block *sb, u64 hashval, int (*test)(struct inode*, void*), void *data, bool *isnew)”h]”(jC)�”}”(hŒstruct super_block *sb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjX»h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjT»ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hje»h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjT»ubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hjv»h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjs»ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jx»Œmodname”NŒ classname”Njj )�”}”j ]”j»Œc.ilookup5_nowait”†”asbuh1hhjT»ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”»h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjT»ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¢»h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjT»ubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hj¯»h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjT»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjP»ubjC)�”}”(hŒ u64 hashval”h]”(h)�”}”(hhh]”jI)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjË»h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÈ»ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÍ»Œmodname”NŒ classname”Njj )�”}”j ]”j»Œc.ilookup5_nowait”†”asbuh1hhjÄ»ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé»h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÄ»ubjI)�”}”(hŒhashval”h]”hŒhashval”…”�”}”(hj÷»h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÄ»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjP»ubjC)�”}”(hŒ!int (*test)(struct inode*, void*)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj ¼ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ¼ubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hj,¼h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ¼ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj9¼h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ¼ubjI)�”}”(hŒtest”h]”hŒtest”…”�”}”(hjF¼h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ¼ubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hjT¼h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ¼ubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hja¼h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ¼ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjn¼h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj ¼ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{¼h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ¼ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjŒ¼h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‰¼ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j޼Œmodname”NŒ classname”Njj )�”}”j ]”j»Œc.ilookup5_nowait”†”asbuh1hhj ¼ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjª¼h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ¼ubj¯)�”}”(hjW¦h]”hŒ,”…”�”}”(hj·¼h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ¼ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjļh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ¼ubj�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÒ¼h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj ¼ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjà¼h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ¼ubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hjí¼h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjP»ubjC)�”}”(hŒ void *data”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj½ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj½ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj!½h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj½ubjI)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj.½h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj½ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjP»ubjC)�”}”(hŒ bool *isnew”h]”(j�)�”}”(hj„h]”hŒbool”…”�”}”(hjG½h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjC½ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT½h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjC½ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjb½h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjC½ubjI)�”}”(hŒisnew”h]”hŒisnew”…”�”}”(hjo½h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjC½ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjP»ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÚºh²hh³jëºh´M|ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÖºh²hh³jëºh´M|ubah}”(h]”jѺah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jëºh´M|hjÓºh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ&search for an inode in the inode cache”h]”hŒ&search for an inode in the inode cache”…”�”}”(hj™½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M|hj–½h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÓºh²hh³jëºh´M|ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j±½jšj±½j›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hXX**Parameters** ``struct super_block *sb`` super block of file system to search ``u64 hashval`` hash value (usually inode number) to search for ``int (*test)(struct inode *, void *)`` callback used for comparisons between inodes ``void *data`` opaque data pointer to pass to **test** ``bool *isnew`` return argument telling whether I_NEW was set when the inode was found in hash (the caller needs to wait for I_NEW to clear) **Description** Search for the inode specified by **hashval** and **data** in the inode cache. If the inode is in the cache, the inode is returned with an incremented reference count. **Note** I_NEW is not waited upon so you have to be very careful what you do with the returned inode. You probably should be using ilookup5() instead. Note2: **test** is called with the inode_hash_lock held, so can't sleep.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj»½h]”hŒ Parameters”…”�”}”(hj½½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¹½ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M€hjµ½ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ@``struct super_block *sb`` super block of file system to search ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hjÚ½h]”hŒstruct super_block *sb”…”�”}”(hjܽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjؽubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M}hjÔ½ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ$super block of file system to search”h]”hŒ$super block of file system to search”…”�”}”(hjó½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jï½h´M}hjð½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÔ½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jï½h´M}hjѽubjÄ)�”}”(hŒ@``u64 hashval`` hash value (usually inode number) to search for ”h]”(jÊ)�”}”(hŒ``u64 hashval``”h]”jÐ)�”}”(hj¾h]”hŒ u64 hashval”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M~hj ¾ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ/hash value (usually inode number) to search for”h]”hŒ/hash value (usually inode number) to search for”…”�”}”(hj,¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j(¾h´M~hj)¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj ¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j(¾h´M~hjѽubjÄ)�”}”(hŒU``int (*test)(struct inode *, void *)`` callback used for comparisons between inodes ”h]”(jÊ)�”}”(hŒ'``int (*test)(struct inode *, void *)``”h]”jÐ)�”}”(hjL¾h]”hŒ#int (*test)(struct inode *, void *)”…”�”}”(hjN¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjJ¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MhjF¾ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ,callback used for comparisons between inodes”h]”hŒ,callback used for comparisons between inodes”…”�”}”(hje¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ja¾h´Mhjb¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjF¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³ja¾h´MhjѽubjÄ)�”}”(hŒ7``void *data`` opaque data pointer to pass to **test** ”h]”(jÊ)�”}”(hŒ``void *data``”h]”jÐ)�”}”(hj…¾h]”hŒ void *data”…”�”}”(hj‡¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjƒ¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M€hj¾ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ'opaque data pointer to pass to **test**”h]”(hŒopaque data pointer to pass to ”…”�”}”(hjž¾h²hh³Nh´Nubj©)�”}”(hŒ**test**”h]”hŒtest”…”�”}”(hj¦¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjž¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jš¾h´M€hj›¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jš¾h´M€hjѽubjÄ)�”}”(hŒ�``bool *isnew`` return argument telling whether I_NEW was set when the inode was found in hash (the caller needs to wait for I_NEW to clear) ”h]”(jÊ)�”}”(hŒ``bool *isnew``”h]”jÐ)�”}”(hj̾h]”hŒ bool *isnew”…”�”}”(hjξh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjʾubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mƒhjƾubjæ)�”}”(hhh]”hÌ)�”}”(hŒ|return argument telling whether I_NEW was set when the inode was found in hash (the caller needs to wait for I_NEW to clear)”h]”hŒ|return argument telling whether I_NEW was set when the inode was found in hash (the caller needs to wait for I_NEW to clear)”…”�”}”(hjå¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M�hjâ¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjƾubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³já¾h´Mƒhjѽubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjµ½ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj¿h]”hŒ Description”…”�”}”(hj ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M…hjµ½ubhÌ)�”}”(hŒ§Search for the inode specified by **hashval** and **data** in the inode cache. If the inode is in the cache, the inode is returned with an incremented reference count.”h]”(hŒ"Search for the inode specified by ”…”�”}”(hj¿h²hh³Nh´Nubj©)�”}”(hŒ **hashval**”h]”hŒhashval”…”�”}”(hj&¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¿ubhŒ and ”…”�”}”(hj¿h²hh³Nh´Nubj©)�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hj8¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¿ubhŒm in the inode cache. If the inode is in the cache, the inode is returned with an incremented reference count.”…”�”}”(hj¿h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M„hjµ½ubhÌ)�”}”(hŒ**Note**”h]”j©)�”}”(hjS¿h]”hŒNote”…”�”}”(hjU¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjQ¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mˆhjµ½ubhÌ)�”}”(hŒŽI_NEW is not waited upon so you have to be very careful what you do with the returned inode. You probably should be using ilookup5() instead.”h]”hŒŽI_NEW is not waited upon so you have to be very careful what you do with the returned inode. You probably should be using ilookup5() instead.”…”�”}”(hji¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M‰hjµ½ubhÌ)�”}”(hŒHNote2: **test** is called with the inode_hash_lock held, so can't sleep.”h]”(hŒNote2: ”…”�”}”(hjx¿h²hh³Nh´Nubj©)�”}”(hŒ**test**”h]”hŒtest”…”�”}”(hj€¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjx¿ubhŒ; is called with the inode_hash_lock held, so can’t sleep.”…”�”}”(hjx¿h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MŒhjµ½ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œilookup5 (C function)”Œ c.ilookup5”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒnstruct inode * ilookup5 (struct super_block *sb, u64 hashval, int (*test)(struct inode *, void *), void *data)”h]”j)�”}”(hŒjstruct inode *ilookup5(struct super_block *sb, u64 hashval, int (*test)(struct inode*, void*), void *data)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¹¿h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjµ¿h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇ¿h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjµ¿h²hh³jÆ¿h´M�ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjØ¿h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÕ¿ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÚ¿Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒilookup5”sbŒ c.ilookup5”†”asbuh1hhjµ¿h²hh³jÆ¿h´M�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù¿h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjµ¿h²hh³jÆ¿h´M�ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjµ¿h²hh³jÆ¿h´M�ubjC)�”}”(hŒilookup5”h]”jI)�”}”(hjö¿h]”hŒilookup5”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÀubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjµ¿h²hh³jÆ¿h´M�ubj=)�”}”(hŒT(struct super_block *sb, u64 hashval, int (*test)(struct inode*, void*), void *data)”h]”(jC)�”}”(hŒstruct super_block *sb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj3Àh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj/Àubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@Àh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj/Àubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hjQÀh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjNÀubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jSÀŒmodname”NŒ classname”Njj )�”}”j ]”jô¿Œ c.ilookup5”†”asbuh1hhj/Àubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoÀh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj/Àubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj}Àh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”u•´h1j®hj/ÀubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hjŠÀh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj/Àubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj+ÀubjC)�”}”(hŒ u64 hashval”h]”(h)�”}”(hhh]”jI)�”}”(hŒu64”h]”hŒu64”…”�”}”(hj¦Àh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj£Àubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¨ÀŒmodname”NŒ classname”Njj )�”}”j ]”jô¿Œ c.ilookup5”†”asbuh1hhjŸÀubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄÀh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjŸÀubjI)�”}”(hŒhashval”h]”hŒhashval”…”�”}”(hjÒÀh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŸÀubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj+ÀubjC)�”}”(hŒ!int (*test)(struct inode*, void*)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjëÀh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjçÀubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùÀh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjçÀubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjçÀubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjçÀubjI)�”}”(hŒtest”h]”hŒtest”…”�”}”(hj!Áh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjçÀubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hj/Áh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjçÀubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hj<Áh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjçÀubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjIÁh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjçÀubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVÁh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjçÀubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjgÁh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjdÁubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jiÁŒmodname”NŒ classname”Njj )�”}”j ]”jô¿Œ c.ilookup5”†”asbuh1hhjçÀubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj…Áh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjçÀubj¯)�”}”(hjW¦h]”hŒ,”…”�”}”(hj’Áh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjçÀubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸÁh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjçÀubj�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj­Áh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjçÀubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj»Áh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjçÀubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hjÈÁh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjçÀubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj+ÀubjC)�”}”(hŒ void *data”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjàÁh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÜÁubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîÁh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÜÁubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjüÁh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÜÁubjI)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj Âh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÜÁubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj+Àubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjµ¿h²hh³jÆ¿h´M�ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj±¿h²hh³jÆ¿h´M�ubah}”(h]”j¬¿ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÆ¿h´M�hj®¿h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ&search for an inode in the inode cache”h]”hŒ&search for an inode in the inode cache”…”�”}”(hj3Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M�hj0Âh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj®¿h²hh³jÆ¿h´M�ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jKÂjšjKÂj›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hX**Parameters** ``struct super_block *sb`` super block of file system to search ``u64 hashval`` hash value (usually inode number) to search for ``int (*test)(struct inode *, void *)`` callback used for comparisons between inodes ``void *data`` opaque data pointer to pass to **test** **Description** Search for the inode specified by **hashval** and **data** in the inode cache, and if the inode is in the cache, return the inode with an incremented reference count. Waits on I_NEW before returning the inode. returned with an incremented reference count. This is a generalized version of ilookup() for file systems where the inode number is not sufficient for unique identification of an inode. **Note** **test** is called with the inode_hash_lock held, so can't sleep.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjUÂh]”hŒ Parameters”…”�”}”(hjWÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjSÂubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M¡hjOÂubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ@``struct super_block *sb`` super block of file system to search ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hjtÂh]”hŒstruct super_block *sb”…”�”}”(hjvÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjrÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MžhjnÂubjæ)�”}”(hhh]”hÌ)�”}”(hŒ$super block of file system to search”h]”hŒ$super block of file system to search”…”�”}”(hj�Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‰Âh´MžhjŠÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjnÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‰Âh´MžhjkÂubjÄ)�”}”(hŒ@``u64 hashval`` hash value (usually inode number) to search for ”h]”(jÊ)�”}”(hŒ``u64 hashval``”h]”jÐ)�”}”(hj­Âh]”hŒ u64 hashval”…”�”}”(hj¯Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj«Âubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MŸhj§Âubjæ)�”}”(hhh]”hÌ)�”}”(hŒ/hash value (usually inode number) to search for”h]”hŒ/hash value (usually inode number) to search for”…”�”}”(hjÆÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÂÂh´MŸhjÃÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj§Âubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÂÂh´MŸhjkÂubjÄ)�”}”(hŒU``int (*test)(struct inode *, void *)`` callback used for comparisons between inodes ”h]”(jÊ)�”}”(hŒ'``int (*test)(struct inode *, void *)``”h]”jÐ)�”}”(hjæÂh]”hŒ#int (*test)(struct inode *, void *)”…”�”}”(hjèÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjäÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M hjàÂubjæ)�”}”(hhh]”hÌ)�”}”(hŒ,callback used for comparisons between inodes”h]”hŒ,callback used for comparisons between inodes”…”�”}”(hjÿÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jûÂh´M hjüÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjàÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jûÂh´M hjkÂubjÄ)�”}”(hŒ7``void *data`` opaque data pointer to pass to **test** ”h]”(jÊ)�”}”(hŒ``void *data``”h]”jÐ)�”}”(hjÃh]”hŒ void *data”…”�”}”(hj!Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M¡hjÃubjæ)�”}”(hhh]”hÌ)�”}”(hŒ'opaque data pointer to pass to **test**”h]”(hŒopaque data pointer to pass to ”…”�”}”(hj8Ãh²hh³Nh´Nubj©)�”}”(hŒ**test**”h]”hŒtest”…”�”}”(hj@Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj8Ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j4Ãh´M¡hj5Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j4Ãh´M¡hjkÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjOÂubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjhÃh]”hŒ Description”…”�”}”(hjjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjfÃubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M£hjOÂubhÌ)�”}”(hXSearch for the inode specified by **hashval** and **data** in the inode cache, and if the inode is in the cache, return the inode with an incremented reference count. Waits on I_NEW before returning the inode. returned with an incremented reference count.”h]”(hŒ"Search for the inode specified by ”…”�”}”(hj~Ãh²hh³Nh´Nubj©)�”}”(hŒ **hashval**”h]”hŒhashval”…”�”}”(hj†Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj~ÃubhŒ and ”…”�”}”(hj~Ãh²hh³Nh´Nubj©)�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hj˜Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj~ÃubhŒÆ in the inode cache, and if the inode is in the cache, return the inode with an incremented reference count. Waits on I_NEW before returning the inode. returned with an incremented reference count.”…”�”}”(hj~Ãh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M¢hjOÂubhÌ)�”}”(hŒ‹This is a generalized version of ilookup() for file systems where the inode number is not sufficient for unique identification of an inode.”h]”hŒ‹This is a generalized version of ilookup() for file systems where the inode number is not sufficient for unique identification of an inode.”…”�”}”(hj±Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M§hjOÂubhÌ)�”}”(hŒ**Note**”h]”j©)�”}”(hjÂÃh]”hŒNote”…”�”}”(hjÄÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÀÃubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MªhjOÂubhÌ)�”}”(hŒA**test** is called with the inode_hash_lock held, so can't sleep.”h]”(j©)�”}”(hŒ**test**”h]”hŒtest”…”�”}”(hjÜÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjØÃubhŒ; is called with the inode_hash_lock held, so can’t sleep.”…”�”}”(hjØÃh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M«hjOÂubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œilookup (C function)”Œ c.ilookup”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ8struct inode * ilookup (struct super_block *sb, u64 ino)”h]”j)�”}”(hŒ6struct inode *ilookup(struct super_block *sb, u64 ino)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÄh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MÄubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#Äh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÄh²hh³j"Äh´MÄubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj4Äh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj1Äubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j6ÄŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒilookup”sbŒ c.ilookup”†”asbuh1hhjÄh²hh³j"Äh´MÄubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUÄh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÄh²hh³j"Äh´MÄubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjcÄh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÄh²hh³j"Äh´MÄubjC)�”}”(hŒilookup”h]”jI)�”}”(hjRÄh]”hŒilookup”…”�”}”(hjtÄh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjpÄubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÄh²hh³j"Äh´MÄubj=)�”}”(hŒ!(struct super_block *sb, u64 ino)”h]”(jC)�”}”(hŒstruct super_block *sb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj�Äh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj‹Äubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœÄh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‹Äubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hj­Äh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjªÄubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¯ÄŒmodname”NŒ classname”Njj )�”}”j ]”jPÄŒ c.ilookup”†”asbuh1hhj‹Äubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËÄh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‹Äubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÙÄh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj‹ÄubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hjæÄh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‹Äubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj‡ÄubjC)�”}”(hŒu64 ino”h]”(h)�”}”(hhh]”jI)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÿÄubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÅŒmodname”NŒ classname”Njj )�”}”j ]”jPÄŒ c.ilookup”†”asbuh1hhjûÄubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Åh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjûÄubjI)�”}”(hŒino”h]”hŒino”…”�”}”(hj.Åh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjûÄubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj‡Äubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÄh²hh³j"Äh´MÄubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj Äh²hh³j"Äh´MÄubah}”(h]”jÄah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j"Äh´MÄhj Äh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ&search for an inode in the inode cache”h]”hŒ&search for an inode in the inode cache”…”�”}”(hjXÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MÄhjUÅh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj Äh²hh³j"Äh´MÄubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jpÅjšjpÅj›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hX**Parameters** ``struct super_block *sb`` super block of file system to search ``u64 ino`` inode number to search for **Description** Search for the inode **ino** in the inode cache, and if the inode is in the cache, the inode is returned with an incremented reference count.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjzÅh]”hŒ Parameters”…”�”}”(hj|Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjxÅubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MÈhjtÅubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ@``struct super_block *sb`` super block of file system to search ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hj™Åh]”hŒstruct super_block *sb”…”�”}”(hj›Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj—Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MÅhj“Åubjæ)�”}”(hhh]”hÌ)�”}”(hŒ$super block of file system to search”h]”hŒ$super block of file system to search”…”�”}”(hj²Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j®Åh´MÅhj¯Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj“Åubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j®Åh´MÅhj�ÅubjÄ)�”}”(hŒ'``u64 ino`` inode number to search for ”h]”(jÊ)�”}”(hŒ ``u64 ino``”h]”jÐ)�”}”(hjÒÅh]”hŒu64 ino”…”�”}”(hjÔÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÐÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MÆhjÌÅubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode number to search for”h]”hŒinode number to search for”…”�”}”(hjëÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jçÅh´MÆhjèÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÌÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jçÅh´MÆhj�Åubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjtÅubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj Æh]”hŒ Description”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj Æubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MÈhjtÅubhÌ)�”}”(hŒ�Search for the inode **ino** in the inode cache, and if the inode is in the cache, the inode is returned with an incremented reference count.”h]”(hŒSearch for the inode ”…”�”}”(hj#Æh²hh³Nh´Nubj©)�”}”(hŒ**ino**”h]”hŒino”…”�”}”(hj+Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj#ÆubhŒq in the inode cache, and if the inode is in the cache, the inode is returned with an incremented reference count.”…”�”}”(hj#Æh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MÇhjtÅubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œfind_inode_nowait (C function)”Œc.find_inode_nowait”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ}struct inode * find_inode_nowait (struct super_block *sb, u64 hashval, int (*match)(struct inode *, u64, void *), void *data)”h]”j)�”}”(hŒystruct inode *find_inode_nowait(struct super_block *sb, u64 hashval, int (*match)(struct inode*, u64, void*), void *data)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjdÆh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj`Æh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Måubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrÆh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj`Æh²hh³jqÆh´Måubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjƒÆh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj€Æubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j…ÆŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒfind_inode_nowait”sbŒc.find_inode_nowait”†”asbuh1hhj`Æh²hh³jqÆh´Måubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤Æh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj`Æh²hh³jqÆh´Måubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj²Æh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj`Æh²hh³jqÆh´MåubjC)�”}”(hŒfind_inode_nowait”h]”jI)�”}”(hj¡Æh]”hŒfind_inode_nowait”…”�”}”(hjÃÆh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¿Æubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj`Æh²hh³jqÆh´Måubj=)�”}”(hŒZ(struct super_block *sb, u64 hashval, int (*match)(struct inode*, u64, void*), void *data)”h]”(jC)�”}”(hŒstruct super_block *sb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÞÆh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÚÆubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëÆh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÚÆubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hjüÆh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjùÆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jþÆŒmodname”NŒ classname”Njj )�”}”j ]”jŸÆŒc.find_inode_nowait”†”asbuh1hhjÚÆubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÚÆubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj(Çh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÚÆubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hj5Çh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÚÆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÖÆubjC)�”}”(hŒ u64 hashval”h]”(h)�”}”(hhh]”jI)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjQÇh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjNÇubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jSÇŒmodname”NŒ classname”Njj )�”}”j ]”jŸÆŒc.find_inode_nowait”†”asbuh1hhjJÇubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoÇh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjJÇubjI)�”}”(hŒhashval”h]”hŒhashval”…”�”}”(hj}Çh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjJÇubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÖÆubjC)�”}”(hŒ'int (*match)(struct inode*, u64, void*)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj–Çh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj’Çubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤Çh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj’Çubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hj²Çh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj’Çubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¿Çh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj’ÇubjI)�”}”(hŒmatch”h]”hŒmatch”…”�”}”(hjÌÇh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj’Çubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hjÚÇh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj’Çubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hjçÇh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj’Çubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjôÇh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj’Çubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj’Çubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÈubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÈŒmodname”NŒ classname”Njj )�”}”j ]”jŸÆŒc.find_inode_nowait”†”asbuh1hhj’Çubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj0Èh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj’Çubj¯)�”}”(hjW¦h]”hŒ,”…”�”}”(hj=Èh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj’Çubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJÈh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj’Çubh)�”}”(hhh]”jI)�”}”(hŒu64”h]”hŒu64”…”�”}”(hj[Èh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjXÈubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j]ÈŒmodname”NŒ classname”Njj )�”}”j ]”jŸÆŒc.find_inode_nowait”†”asbuh1hhj’Çubj¯)�”}”(hjW¦h]”hŒ,”…”�”}”(hjyÈh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj’Çubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†Èh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj’Çubj�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj”Èh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj’Çubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¢Èh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj’Çubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hj¯Èh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj’Çubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÖÆubjC)�”}”(hŒ void *data”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÇÈh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÃÈubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕÈh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÃÈubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjãÈh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÃÈubjI)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjðÈh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÃÈubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÖÆubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj`Æh²hh³jqÆh´Måubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj\Æh²hh³jqÆh´Måubah}”(h]”jWÆah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jqÆh´MåhjYÆh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ find an inode in the inode cache”h]”hŒ find an inode in the inode cache”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MåhjÉh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjYÆh²hh³jqÆh´Måubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j2Éjšj2Éj›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hX™**Parameters** ``struct super_block *sb`` super block of file system to search ``u64 hashval`` hash value (usually inode number) to search for ``int (*match)(struct inode *, u64, void *)`` callback used for comparisons between inodes ``void *data`` opaque data pointer to pass to **match** **Description** Search for the inode specified by **hashval** and **data** in the inode cache, where the helper function **match** will return 0 if the inode does not match, 1 if the inode does match, and -1 if the search should be stopped. The **match** function must be responsible for taking the i_lock spin_lock and checking i_state for an inode being freed or being initialized, and incrementing the reference count before returning 1. It also must not sleep, since it is called with the inode_hash_lock spinlock held. This is a even more generalized version of ilookup5() when the function must never block --- find_inode() can block in __wait_on_freeing_inode() --- or when the caller can not increment the reference count because the resulting iput() might cause an inode eviction. The tradeoff is that the **match** function must be very carefully implemented.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj<Éh]”hŒ Parameters”…”�”}”(hj>Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj:Éubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Méhj6Éubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ@``struct super_block *sb`` super block of file system to search ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hj[Éh]”hŒstruct super_block *sb”…”�”}”(hj]Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjYÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MæhjUÉubjæ)�”}”(hhh]”hÌ)�”}”(hŒ$super block of file system to search”h]”hŒ$super block of file system to search”…”�”}”(hjtÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jpÉh´MæhjqÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjUÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jpÉh´MæhjRÉubjÄ)�”}”(hŒ@``u64 hashval`` hash value (usually inode number) to search for ”h]”(jÊ)�”}”(hŒ``u64 hashval``”h]”jÐ)�”}”(hj”Éh]”hŒ u64 hashval”…”�”}”(hj–Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj’Éubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MçhjŽÉubjæ)�”}”(hhh]”hÌ)�”}”(hŒ/hash value (usually inode number) to search for”h]”hŒ/hash value (usually inode number) to search for”…”�”}”(hj­Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j©Éh´MçhjªÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjŽÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j©Éh´MçhjRÉubjÄ)�”}”(hŒ[``int (*match)(struct inode *, u64, void *)`` callback used for comparisons between inodes ”h]”(jÊ)�”}”(hŒ-``int (*match)(struct inode *, u64, void *)``”h]”jÐ)�”}”(hjÍÉh]”hŒ)int (*match)(struct inode *, u64, void *)”…”�”}”(hjÏÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjËÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MèhjÇÉubjæ)�”}”(hhh]”hÌ)�”}”(hŒ,callback used for comparisons between inodes”h]”hŒ,callback used for comparisons between inodes”…”�”}”(hjæÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jâÉh´MèhjãÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÇÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jâÉh´MèhjRÉubjÄ)�”}”(hŒ8``void *data`` opaque data pointer to pass to **match** ”h]”(jÊ)�”}”(hŒ``void *data``”h]”jÐ)�”}”(hjÊh]”hŒ void *data”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MéhjÊubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(opaque data pointer to pass to **match**”h]”(hŒopaque data pointer to pass to ”…”�”}”(hjÊh²hh³Nh´Nubj©)�”}”(hŒ **match**”h]”hŒmatch”…”�”}”(hj'Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÊh´MéhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÊh´MéhjRÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj6ÉubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjOÊh]”hŒ Description”…”�”}”(hjQÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjMÊubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mëhj6ÉubhÌ)�”}”(hXýSearch for the inode specified by **hashval** and **data** in the inode cache, where the helper function **match** will return 0 if the inode does not match, 1 if the inode does match, and -1 if the search should be stopped. The **match** function must be responsible for taking the i_lock spin_lock and checking i_state for an inode being freed or being initialized, and incrementing the reference count before returning 1. It also must not sleep, since it is called with the inode_hash_lock spinlock held.”h]”(hŒ"Search for the inode specified by ”…”�”}”(hjeÊh²hh³Nh´Nubj©)�”}”(hŒ **hashval**”h]”hŒhashval”…”�”}”(hjmÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjeÊubhŒ and ”…”�”}”(hjeÊh²hh³Nh´Nubj©)�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjeÊubhŒ/ in the inode cache, where the helper function ”…”�”}”(hjeÊh²hh³Nh´Nubj©)�”}”(hŒ **match**”h]”hŒmatch”…”�”}”(hj‘Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjeÊubhŒt will return 0 if the inode does not match, 1 if the inode does match, and -1 if the search should be stopped. The ”…”�”}”(hjeÊh²hh³Nh´Nubj©)�”}”(hŒ **match**”h]”hŒmatch”…”�”}”(hj£Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjeÊubhX function must be responsible for taking the i_lock spin_lock and checking i_state for an inode being freed or being initialized, and incrementing the reference count before returning 1. It also must not sleep, since it is called with the inode_hash_lock spinlock held.”…”�”}”(hjeÊh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mêhj6ÉubhÌ)�”}”(hXZThis is a even more generalized version of ilookup5() when the function must never block --- find_inode() can block in __wait_on_freeing_inode() --- or when the caller can not increment the reference count because the resulting iput() might cause an inode eviction. The tradeoff is that the **match** function must be very carefully implemented.”h]”(hX$This is a even more generalized version of ilookup5() when the function must never block --- find_inode() can block in __wait_on_freeing_inode() --- or when the caller can not increment the reference count because the resulting iput() might cause an inode eviction. The tradeoff is that the ”…”�”}”(hj¼Êh²hh³Nh´Nubj©)�”}”(hŒ **match**”h]”hŒmatch”…”�”}”(hjÄÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¼ÊubhŒ- function must be very carefully implemented.”…”�”}”(hj¼Êh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Móhj6Éubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œfind_inode_rcu (C function)”Œc.find_inode_rcu”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒtstruct inode * find_inode_rcu (struct super_block *sb, u64 hashval, int (*test)(struct inode *, void *), void *data)”h]”j)�”}”(hŒpstruct inode *find_inode_rcu(struct super_block *sb, u64 hashval, int (*test)(struct inode*, void*), void *data)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjýÊh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjùÊh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Ëh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjùÊh²hh³j Ëh´Mubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjËubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jËŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒfind_inode_rcu”sbŒc.find_inode_rcu”†”asbuh1hhjùÊh²hh³j Ëh´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=Ëh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjùÊh²hh³j Ëh´Mubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjKËh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjùÊh²hh³j Ëh´MubjC)�”}”(hŒfind_inode_rcu”h]”jI)�”}”(hj:Ëh]”hŒfind_inode_rcu”…”�”}”(hj\Ëh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjXËubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjùÊh²hh³j Ëh´Mubj=)�”}”(hŒT(struct super_block *sb, u64 hashval, int (*test)(struct inode*, void*), void *data)”h]”(jC)�”}”(hŒstruct super_block *sb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjwËh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjsËubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„Ëh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjsËubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hj•Ëh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj’Ëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j—ËŒmodname”NŒ classname”Njj )�”}”j ]”j8ËŒc.find_inode_rcu”†”asbuh1hhjsËubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³Ëh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjsËubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÁËh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjsËubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hjÎËh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjsËubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjoËubjC)�”}”(hŒ u64 hashval”h]”(h)�”}”(hhh]”jI)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjêËh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjçËubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jìËŒmodname”NŒ classname”Njj )�”}”j ]”j8ËŒc.find_inode_rcu”†”asbuh1hhjãËubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjãËubjI)�”}”(hŒhashval”h]”hŒhashval”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjãËubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjoËubjC)�”}”(hŒ!int (*test)(struct inode*, void*)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj/Ìh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj+Ìubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=Ìh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj+Ìubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hjKÌh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj+Ìubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjXÌh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj+ÌubjI)�”}”(hŒtest”h]”hŒtest”…”�”}”(hjeÌh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj+Ìubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hjsÌh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj+Ìubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hj€Ìh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj+Ìubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj�Ìh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj+Ìubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšÌh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj+Ìubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj«Ìh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¨Ìubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j­ÌŒmodname”NŒ classname”Njj )�”}”j ]”j8ËŒc.find_inode_rcu”†”asbuh1hhj+Ìubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÉÌh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj+Ìubj¯)�”}”(hjW¦h]”hŒ,”…”�”}”(hjÖÌh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj+Ìubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãÌh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj+Ìubj�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjñÌh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj+Ìubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÿÌh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj+Ìubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hj Íh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj+Ìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjoËubjC)�”}”(hŒ void *data”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj$Íh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj Íubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2Íh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj Íubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj@Íh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ÍubjI)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjMÍh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj Íubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjoËubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjùÊh²hh³j Ëh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjõÊh²hh³j Ëh´Mubah}”(h]”jðÊah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j Ëh´MhjòÊh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ find an inode in the inode cache”h]”hŒ find an inode in the inode cache”…”�”}”(hjwÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MhjtÍh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjòÊh²hh³j Ëh´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j�Íjšj�Íj›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hX:**Parameters** ``struct super_block *sb`` Super block of file system to search ``u64 hashval`` Key to hash ``int (*test)(struct inode *, void *)`` Function to test match on an inode ``void *data`` Data for test function **Description** Search for the inode specified by **hashval** and **data** in the inode cache, where the helper function **test** will return 0 if the inode does not match and 1 if it does. The **test** function must be responsible for taking the i_lock spin_lock and checking i_state for an inode being freed or being initialized. If successful, this will return the inode for which the **test** function returned 1 and NULL otherwise. The **test** function is not permitted to take a ref on any inode presented. It is also not permitted to sleep. The caller must hold the RCU read lock.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj™Íh]”hŒ Parameters”…”�”}”(hj›Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj—Íubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mhj“Íubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ@``struct super_block *sb`` Super block of file system to search ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hj¸Íh]”hŒstruct super_block *sb”…”�”}”(hjºÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¶Íubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mhj²Íubjæ)�”}”(hhh]”hÌ)�”}”(hŒ$Super block of file system to search”h]”hŒ$Super block of file system to search”…”�”}”(hjÑÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÍÍh´MhjÎÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj²Íubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÍÍh´Mhj¯ÍubjÄ)�”}”(hŒ``u64 hashval`` Key to hash ”h]”(jÊ)�”}”(hŒ``u64 hashval``”h]”jÐ)�”}”(hjñÍh]”hŒ u64 hashval”…”�”}”(hjóÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjïÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MhjëÍubjæ)�”}”(hhh]”hÌ)�”}”(hŒ Key to hash”h]”hŒ Key to hash”…”�”}”(hj Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÎh´MhjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjëÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÎh´Mhj¯ÍubjÄ)�”}”(hŒK``int (*test)(struct inode *, void *)`` Function to test match on an inode ”h]”(jÊ)�”}”(hŒ'``int (*test)(struct inode *, void *)``”h]”jÐ)�”}”(hj*Îh]”hŒ#int (*test)(struct inode *, void *)”…”�”}”(hj,Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj(Îubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mhj$Îubjæ)�”}”(hhh]”hÌ)�”}”(hŒ"Function to test match on an inode”h]”hŒ"Function to test match on an inode”…”�”}”(hjCÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j?Îh´Mhj@Îubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj$Îubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j?Îh´Mhj¯ÍubjÄ)�”}”(hŒ&``void *data`` Data for test function ”h]”(jÊ)�”}”(hŒ``void *data``”h]”jÐ)�”}”(hjcÎh]”hŒ void *data”…”�”}”(hjeÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjaÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mhj]Îubjæ)�”}”(hhh]”hÌ)�”}”(hŒData for test function”h]”hŒData for test function”…”�”}”(hj|Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jxÎh´MhjyÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj]Îubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jxÎh´Mhj¯Íubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj“ÍubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjžÎh]”hŒ Description”…”�”}”(hj Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjœÎubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mhj“ÍubhÌ)�”}”(hX<Search for the inode specified by **hashval** and **data** in the inode cache, where the helper function **test** will return 0 if the inode does not match and 1 if it does. The **test** function must be responsible for taking the i_lock spin_lock and checking i_state for an inode being freed or being initialized.”h]”(hŒ"Search for the inode specified by ”…”�”}”(hj´Îh²hh³Nh´Nubj©)�”}”(hŒ **hashval**”h]”hŒhashval”…”�”}”(hj¼Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj´ÎubhŒ and ”…”�”}”(hj´Îh²hh³Nh´Nubj©)�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hjÎÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj´ÎubhŒ/ in the inode cache, where the helper function ”…”�”}”(hj´Îh²hh³Nh´Nubj©)�”}”(hŒ**test**”h]”hŒtest”…”�”}”(hjàÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj´ÎubhŒB will return 0 if the inode does not match and 1 if it does. The ”…”�”}”(hj´Îh²hh³Nh´Nubj©)�”}”(hŒ**test**”h]”hŒtest”…”�”}”(hjòÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj´ÎubhŒ� function must be responsible for taking the i_lock spin_lock and checking i_state for an inode being freed or being initialized.”…”�”}”(hj´Îh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mhj“ÍubhÌ)�”}”(hŒhIf successful, this will return the inode for which the **test** function returned 1 and NULL otherwise.”h]”(hŒ8If successful, this will return the inode for which the ”…”�”}”(hj Ïh²hh³Nh´Nubj©)�”}”(hŒ**test**”h]”hŒtest”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj ÏubhŒ( function returned 1 and NULL otherwise.”…”�”}”(hj Ïh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M"hj“ÍubhÌ)�”}”(hŒoThe **test** function is not permitted to take a ref on any inode presented. It is also not permitted to sleep.”h]”(hŒThe ”…”�”}”(hj,Ïh²hh³Nh´Nubj©)�”}”(hŒ**test**”h]”hŒtest”…”�”}”(hj4Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj,ÏubhŒc function is not permitted to take a ref on any inode presented. It is also not permitted to sleep.”…”�”}”(hj,Ïh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M%hj“ÍubhÌ)�”}”(hŒ'The caller must hold the RCU read lock.”h]”hŒ'The caller must hold the RCU read lock.”…”�”}”(hjMÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M(hj“Íubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ"find_inode_by_ino_rcu (C function)”Œc.find_inode_by_ino_rcu”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒFstruct inode * find_inode_by_ino_rcu (struct super_block *sb, u64 ino)”h]”j)�”}”(hŒDstruct inode *find_inode_by_ino_rcu(struct super_block *sb, u64 ino)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj|Ïh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjxÏh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M?ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠÏh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjxÏh²hh³j‰Ïh´M?ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj›Ïh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj˜Ïubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j�ÏŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒfind_inode_by_ino_rcu”sbŒc.find_inode_by_ino_rcu”†”asbuh1hhjxÏh²hh³j‰Ïh´M?ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼Ïh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjxÏh²hh³j‰Ïh´M?ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÊÏh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjxÏh²hh³j‰Ïh´M?ubjC)�”}”(hŒfind_inode_by_ino_rcu”h]”jI)�”}”(hj¹Ïh]”hŒfind_inode_by_ino_rcu”…”�”}”(hjÛÏh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj×Ïubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjxÏh²hh³j‰Ïh´M?ubj=)�”}”(hŒ!(struct super_block *sb, u64 ino)”h]”(jC)�”}”(hŒstruct super_block *sb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjöÏh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjòÏubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjòÏubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÐubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÐŒmodname”NŒ classname”Njj )�”}”j ]”j·ÏŒc.find_inode_by_ino_rcu”†”asbuh1hhjòÏubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2Ðh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjòÏubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj@Ðh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjòÏubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hjMÐh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjòÏubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjîÏubjC)�”}”(hŒu64 ino”h]”(h)�”}”(hhh]”jI)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjiÐh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjfÐubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jkÐŒmodname”NŒ classname”Njj )�”}”j ]”j·ÏŒc.find_inode_by_ino_rcu”†”asbuh1hhjbÐubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡Ðh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjbÐubjI)�”}”(hŒino”h]”hŒino”…”�”}”(hj•Ðh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjbÐubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjîÏubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjxÏh²hh³j‰Ïh´M?ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjtÏh²hh³j‰Ïh´M?ubah}”(h]”joÏah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j‰Ïh´M?hjqÏh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ Find an inode in the inode cache”h]”hŒ Find an inode in the inode cache”…”�”}”(hj¿Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M?hj¼Ðh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjqÏh²hh³j‰Ïh´M?ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j×Ðjšj×Ðj›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hXÍ**Parameters** ``struct super_block *sb`` Super block of file system to search ``u64 ino`` The inode number to match **Description** Search for the inode specified by **hashval** and **data** in the inode cache, where the helper function **test** will return 0 if the inode does not match and 1 if it does. The **test** function must be responsible for taking the i_lock spin_lock and checking i_state for an inode being freed or being initialized. If successful, this will return the inode for which the **test** function returned 1 and NULL otherwise. The **test** function is not permitted to take a ref on any inode presented. It is also not permitted to sleep. The caller must hold the RCU read lock.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjáÐh]”hŒ Parameters”…”�”}”(hjãÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjßÐubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MChjÛÐubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ@``struct super_block *sb`` Super block of file system to search ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hjÑh]”hŒstruct super_block *sb”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjþÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M@hjúÐubjæ)�”}”(hhh]”hÌ)�”}”(hŒ$Super block of file system to search”h]”hŒ$Super block of file system to search”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÑh´M@hjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjúÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÑh´M@hj÷ÐubjÄ)�”}”(hŒ&``u64 ino`` The inode number to match ”h]”(jÊ)�”}”(hŒ ``u64 ino``”h]”jÐ)�”}”(hj9Ñh]”hŒu64 ino”…”�”}”(hj;Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj7Ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MAhj3Ñubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe inode number to match”h]”hŒThe inode number to match”…”�”}”(hjRÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jNÑh´MAhjOÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj3Ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jNÑh´MAhj÷Ðubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÛÐubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjtÑh]”hŒ Description”…”�”}”(hjvÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjrÑubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MChjÛÐubhÌ)�”}”(hX<Search for the inode specified by **hashval** and **data** in the inode cache, where the helper function **test** will return 0 if the inode does not match and 1 if it does. The **test** function must be responsible for taking the i_lock spin_lock and checking i_state for an inode being freed or being initialized.”h]”(hŒ"Search for the inode specified by ”…”�”}”(hjŠÑh²hh³Nh´Nubj©)�”}”(hŒ **hashval**”h]”hŒhashval”…”�”}”(hj’Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjŠÑubhŒ and ”…”�”}”(hjŠÑh²hh³Nh´Nubj©)�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hj¤Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjŠÑubhŒ/ in the inode cache, where the helper function ”…”�”}”(hjŠÑh²hh³Nh´Nubj©)�”}”(hŒ**test**”h]”hŒtest”…”�”}”(hj¶Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjŠÑubhŒB will return 0 if the inode does not match and 1 if it does. The ”…”�”}”(hjŠÑh²hh³Nh´Nubj©)�”}”(hŒ**test**”h]”hŒtest”…”�”}”(hjÈÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjŠÑubhŒ� function must be responsible for taking the i_lock spin_lock and checking i_state for an inode being freed or being initialized.”…”�”}”(hjŠÑh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MBhjÛÐubhÌ)�”}”(hŒhIf successful, this will return the inode for which the **test** function returned 1 and NULL otherwise.”h]”(hŒ8If successful, this will return the inode for which the ”…”�”}”(hjáÑh²hh³Nh´Nubj©)�”}”(hŒ**test**”h]”hŒtest”…”�”}”(hjéÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjáÑubhŒ( function returned 1 and NULL otherwise.”…”�”}”(hjáÑh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MHhjÛÐubhÌ)�”}”(hŒoThe **test** function is not permitted to take a ref on any inode presented. It is also not permitted to sleep.”h]”(hŒThe ”…”�”}”(hjÒh²hh³Nh´Nubj©)�”}”(hŒ**test**”h]”hŒtest”…”�”}”(hj Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÒubhŒc function is not permitted to take a ref on any inode presented. It is also not permitted to sleep.”…”�”}”(hjÒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MKhjÛÐubhÌ)�”}”(hŒ'The caller must hold the RCU read lock.”h]”hŒ'The caller must hold the RCU read lock.”…”�”}”(hj#Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MNhjÛÐubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œiput (C function)”Œc.iput”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒvoid iput (struct inode *inode)”h]”j)�”}”(hŒvoid iput(struct inode *inode)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjRÒh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjNÒh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Míubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaÒh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjNÒh²hh³j`Òh´MíubjC)�”}”(hŒiput”h]”jI)�”}”(hŒiput”h]”hŒiput”…”�”}”(hjsÒh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjoÒubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjNÒh²hh³j`Òh´Míubj=)�”}”(hŒ(struct inode *inode)”h]”jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj�Òh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj‹Òubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœÒh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‹Òubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj­Òh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjªÒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¯ÒŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjuÒsbŒc.iput”†”asbuh1hhj‹Òubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍÒh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‹Òubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÛÒh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj‹ÒubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjèÒh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‹Òubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj‡Òubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjNÒh²hh³j`Òh´Míubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjJÒh²hh³j`Òh´Míubah}”(h]”jEÒah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j`Òh´MíhjGÒh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ put an inode”h]”hŒ put an inode”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MíhjÓh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjGÒh²hh³j`Òh´Míubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j*Ójšj*Ój›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hŒö**Parameters** ``struct inode *inode`` inode to put **Description** Puts an inode, dropping its usage count. If the inode use count hits zero, the inode is then freed and may also be destroyed. Consequently, iput() can sleep.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj4Óh]”hŒ Parameters”…”�”}”(hj6Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj2Óubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mñhj.Óubj¿)�”}”(hhh]”jÄ)�”}”(hŒ%``struct inode *inode`` inode to put ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjSÓh]”hŒstruct inode *inode”…”�”}”(hjUÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjQÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MîhjMÓubjæ)�”}”(hhh]”hÌ)�”}”(hŒ inode to put”h]”hŒ inode to put”…”�”}”(hjlÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jhÓh´MîhjiÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjMÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jhÓh´MîhjJÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj.ÓubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjŽÓh]”hŒ Description”…”�”}”(hj�Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjŒÓubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mðhj.ÓubjÁ™)�”}”(hŒžPuts an inode, dropping its usage count. If the inode use count hits zero, the inode is then freed and may also be destroyed. Consequently, iput() can sleep.”h]”(hÌ)�”}”(hŒ}Puts an inode, dropping its usage count. If the inode use count hits zero, the inode is then freed and may also be destroyed.”h]”hŒ}Puts an inode, dropping its usage count. If the inode use count hits zero, the inode is then freed and may also be destroyed.”…”�”}”(hj¨Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mïhj¤ÓubhÌ)�”}”(hŒConsequently, iput() can sleep.”h]”hŒConsequently, iput() can sleep.”…”�”}”(hj·Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mòhj¤Óubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀ™h³j¶Óh´Mïhj.Óubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œiput_not_last (C function)”Œc.iput_not_last”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ(void iput_not_last (struct inode *inode)”h]”j)�”}”(hŒ'void iput_not_last(struct inode *inode)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjìÓh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjèÓh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûÓh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjèÓh²hh³júÓh´MubjC)�”}”(hŒ iput_not_last”h]”jI)�”}”(hŒ iput_not_last”h]”hŒ iput_not_last”…”�”}”(hj Ôh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj Ôubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjèÓh²hh³júÓh´Mubj=)�”}”(hŒ(struct inode *inode)”h]”jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj)Ôh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj%Ôubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6Ôh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj%Ôubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjGÔh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjDÔubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jIÔŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÔsbŒc.iput_not_last”†”asbuh1hhj%Ôubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgÔh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj%Ôubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjuÔh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj%ÔubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj‚Ôh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj%Ôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj!Ôubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjèÓh²hh³júÓh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjäÓh²hh³júÓh´Mubah}”(h]”jßÓah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³júÓh´MhjáÓh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ4put an inode assuming this is not the last reference”h]”hŒ4put an inode assuming this is not the last reference”…”�”}”(hj¬Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mhj©Ôh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjáÓh²hh³júÓh´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÄÔjšjÄÔj›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hŒ6**Parameters** ``struct inode *inode`` inode to put”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÎÔh]”hŒ Parameters”…”�”}”(hjÐÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÌÔubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M#hjÈÔubj¿)�”}”(hhh]”jÄ)�”}”(hŒ$``struct inode *inode`` inode to put”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjíÔh]”hŒstruct inode *inode”…”�”}”(hjïÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjëÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M%hjçÔubjæ)�”}”(hhh]”hÌ)�”}”(hŒ inode to put”h]”hŒ inode to put”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M hjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjçÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÕh´M%hjäÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÈÔubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbmap (C function)”Œc.bmap”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ/int bmap (struct inode *inode, sector_t *block)”h]”j)�”}”(hŒ.int bmap(struct inode *inode, sector_t *block)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjGÕh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjCÕh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M-ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVÕh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjCÕh²hh³jUÕh´M-ubjC)�”}”(hŒbmap”h]”jI)�”}”(hŒbmap”h]”hŒbmap”…”�”}”(hjhÕh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjdÕubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjCÕh²hh³jUÕh´M-ubj=)�”}”(hŒ&(struct inode *inode, sector_t *block)”h]”(jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj„Õh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj€Õubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘Õh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj€Õubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj¢Õh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŸÕubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¤ÕŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjjÕsbŒc.bmap”†”asbuh1hhj€Õubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂÕh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj€Õubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÐÕh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj€ÕubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjÝÕh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj€Õubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj|ÕubjC)�”}”(hŒsector_t *block”h]”(h)�”}”(hhh]”jI)�”}”(hŒsector_t”h]”hŒsector_t”…”�”}”(hjùÕh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjöÕubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jûÕŒmodname”NŒ classname”Njj )�”}”j ]”j¾ÕŒc.bmap”†”asbuh1hhjòÕubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjòÕubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj%Öh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjòÕubjI)�”}”(hŒblock”h]”hŒblock”…”�”}”(hj2Öh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjòÕubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj|Õubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjCÕh²hh³jUÕh´M-ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj?Õh²hh³jUÕh´M-ubah}”(h]”j:Õah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jUÕh´M-hj<Õh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒfind a block number in a file”h]”hŒfind a block number in a file”…”�”}”(hj\Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M-hjYÖh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj<Õh²hh³jUÕh´M-ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jtÖjšjtÖj›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hXj**Parameters** ``struct inode *inode`` inode owning the block number being requested ``sector_t *block`` pointer containing the block to find **Description** Replaces the value in ``*block`` with the block number on the device holding corresponding to the requested block number in the file. That is, asked for block 4 of inode 1 the function will replace the 4 in ``*block``, with disk block relative to the disk start that holds that block of the file. Returns -EINVAL in case of error, 0 otherwise. If mapping falls into a hole, returns 0 and ``*block`` is also set to 0.”• h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj~Öh]”hŒ Parameters”…”�”}”(hj€Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj|Öubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M1hjxÖubj¿)�”}”(hhh]”(jÄ)�”}”(hŒF``struct inode *inode`` inode owning the block number being requested ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj�Öh]”hŒstruct inode *inode”…”�”}”(hjŸÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj›Öubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M.hj—Öubjæ)�”}”(hhh]”hÌ)�”}”(hŒ-inode owning the block number being requested”h]”hŒ-inode owning the block number being requested”…”�”}”(hj¶Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j²Öh´M.hj³Öubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj—Öubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j²Öh´M.hj”ÖubjÄ)�”}”(hŒ9``sector_t *block`` pointer containing the block to find ”h]”(jÊ)�”}”(hŒ``sector_t *block``”h]”jÐ)�”}”(hjÖÖh]”hŒsector_t *block”…”�”}”(hjØÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÔÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M/hjÐÖubjæ)�”}”(hhh]”hÌ)�”}”(hŒ$pointer containing the block to find”h]”hŒ$pointer containing the block to find”…”�”}”(hjïÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jëÖh´M/hjìÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÐÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jëÖh´M/hj”Öubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjxÖubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj×h]”hŒ Description”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M1hjxÖubjÁ™)�”}”(hX¡Replaces the value in ``*block`` with the block number on the device holding corresponding to the requested block number in the file. That is, asked for block 4 of inode 1 the function will replace the 4 in ``*block``, with disk block relative to the disk start that holds that block of the file. Returns -EINVAL in case of error, 0 otherwise. If mapping falls into a hole, returns 0 and ``*block`` is also set to 0.”h]”(hÌ)�”}”(hX(Replaces the value in ``*block`` with the block number on the device holding corresponding to the requested block number in the file. That is, asked for block 4 of inode 1 the function will replace the 4 in ``*block``, with disk block relative to the disk start that holds that block of the file.”h]”(hŒReplaces the value in ”…”�”}”(hj+×h²hh³Nh´NubjÐ)�”}”(hŒ ``*block``”h]”hŒ*block”…”�”}”(hj3×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj+×ubhŒ¯ with the block number on the device holding corresponding to the requested block number in the file. That is, asked for block 4 of inode 1 the function will replace the 4 in ”…”�”}”(hj+×h²hh³Nh´NubjÐ)�”}”(hŒ ``*block``”h]”hŒ*block”…”�”}”(hjE×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj+×ubhŒO, with disk block relative to the disk start that holds that block of the file.”…”�”}”(hj+×h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M0hj'×ubhÌ)�”}”(hŒwReturns -EINVAL in case of error, 0 otherwise. If mapping falls into a hole, returns 0 and ``*block`` is also set to 0.”h]”(hŒ[Returns -EINVAL in case of error, 0 otherwise. If mapping falls into a hole, returns 0 and ”…”�”}”(hj^×h²hh³Nh´NubjÐ)�”}”(hŒ ``*block``”h]”hŒ*block”…”�”}”(hjf×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj^×ubhŒ is also set to 0.”…”�”}”(hj^×h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M6hj'×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀ™h³j]×h´M0hjxÖubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œinode_update_time (C function)”Œc.inode_update_time”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒYint inode_update_time (struct inode *inode, enum fs_update_time type, unsigned int flags)”h]”j)�”}”(hŒXint inode_update_time(struct inode *inode, enum fs_update_time type, unsigned int flags)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj¥×h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¡×h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M¡ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´×h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¡×h²hh³j³×h´M¡ubjC)�”}”(hŒinode_update_time”h]”jI)�”}”(hŒinode_update_time”h]”hŒinode_update_time”…”�”}”(hjÆ×h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÂ×ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj¡×h²hh³j³×h´M¡ubj=)�”}”(hŒC(struct inode *inode, enum fs_update_time type, unsigned int flags)”h]”(jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjâ×h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÞ×ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï×h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÞ×ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjý×ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jØŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÈ×sbŒc.inode_update_time”†”asbuh1hhjÞ×ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Øh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÞ×ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj.Øh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÞ×ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj;Øh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÞ×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÚ×ubjC)�”}”(hŒenum fs_update_time type”h]”(j )�”}”(hj#h]”hŒenum”…”�”}”(hjTØh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjPØubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaØh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjPØubh)�”}”(hhh]”jI)�”}”(hŒfs_update_time”h]”hŒfs_update_time”…”�”}”(hjrØh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjoØubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jtØŒmodname”NŒ classname”Njj )�”}”j ]”jØŒc.inode_update_time”†”asbuh1hhjPØubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Øh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjPØubjI)�”}”(hŒtype”h]”hŒtype”…”�”}”(hjžØh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjPØubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÚ×ubjC)�”}”(hŒunsigned int flags”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj·Øh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj³Øubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅØh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj³Øubj�)�”}”(hŒint”h]”hŒint”…”�”}”(hjÓØh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj³Øubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáØh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj³ØubjI)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjïØh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj³Øubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÚ×ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj¡×h²hh³j³×h´M¡ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj�×h²hh³j³×h´M¡ubah}”(h]”j˜×ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j³×h´M¡hjš×h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ9update either atime or c/mtime and i_version on the inode”h]”hŒ9update either atime or c/mtime and i_version on the inode”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M¡hjÙh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjš×h²hh³j³×h´M¡ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j1Ùjšj1Ùj›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hXù**Parameters** ``struct inode *inode`` inode to be updated ``enum fs_update_time type`` timestamp to be updated ``unsigned int flags`` flags for the update **Description** Update either atime or c/mtime and version in a inode if needed for a file access or modification. It is up to the caller to mark the inode dirty appropriately. Returns the positive I_DIRTY_* flags for __mark_inode_dirty() if the inode needs to be marked dirty, 0 if it did not, or a negative errno if an error happened.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj;Ùh]”hŒ Parameters”…”�”}”(hj=Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj9Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M¥hj5Ùubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ,``struct inode *inode`` inode to be updated ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjZÙh]”hŒstruct inode *inode”…”�”}”(hj\Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjXÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M¢hjTÙubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode to be updated”h]”hŒinode to be updated”…”�”}”(hjsÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³joÙh´M¢hjpÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjTÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³joÙh´M¢hjQÙubjÄ)�”}”(hŒ5``enum fs_update_time type`` timestamp to be updated ”h]”(jÊ)�”}”(hŒ``enum fs_update_time type``”h]”jÐ)�”}”(hj“Ùh]”hŒenum fs_update_time type”…”�”}”(hj•Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj‘Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M£hj�Ùubjæ)�”}”(hhh]”hÌ)�”}”(hŒtimestamp to be updated”h]”hŒtimestamp to be updated”…”�”}”(hj¬Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¨Ùh´M£hj©Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj�Ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¨Ùh´M£hjQÙubjÄ)�”}”(hŒ,``unsigned int flags`` flags for the update ”h]”(jÊ)�”}”(hŒ``unsigned int flags``”h]”jÐ)�”}”(hjÌÙh]”hŒunsigned int flags”…”�”}”(hjÎÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÊÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M¤hjÆÙubjæ)�”}”(hhh]”hÌ)�”}”(hŒflags for the update”h]”hŒflags for the update”…”�”}”(hjåÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jáÙh´M¤hjâÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÆÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jáÙh´M¤hjQÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj5ÙubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÚh]”hŒ Description”…”�”}”(hj Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M¦hj5ÙubhÌ)�”}”(hŒ¡Update either atime or c/mtime and version in a inode if needed for a file access or modification. It is up to the caller to mark the inode dirty appropriately.”h]”hŒ¡Update either atime or c/mtime and version in a inode if needed for a file access or modification. It is up to the caller to mark the inode dirty appropriately.”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M¥hj5ÙubhÌ)�”}”(hŒŸReturns the positive I_DIRTY_* flags for __mark_inode_dirty() if the inode needs to be marked dirty, 0 if it did not, or a negative errno if an error happened.”h]”hŒŸReturns the positive I_DIRTY_* flags for __mark_inode_dirty() if the inode needs to be marked dirty, 0 if it did not, or a negative errno if an error happened.”…”�”}”(hj,Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M©hj5Ùubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ generic_update_time (C function)”Œc.generic_update_time”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ[int generic_update_time (struct inode *inode, enum fs_update_time type, unsigned int flags)”h]”j)�”}”(hŒZint generic_update_time(struct inode *inode, enum fs_update_time type, unsigned int flags)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj[Úh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjWÚh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M¾ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjÚh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjWÚh²hh³jiÚh´M¾ubjC)�”}”(hŒgeneric_update_time”h]”jI)�”}”(hŒgeneric_update_time”h]”hŒgeneric_update_time”…”�”}”(hj|Úh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjxÚubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjWÚh²hh³jiÚh´M¾ubj=)�”}”(hŒC(struct inode *inode, enum fs_update_time type, unsigned int flags)”h]”(jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj˜Úh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj”Úubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥Úh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj”Úubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj¶Úh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj³Úubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¸ÚŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj~ÚsbŒc.generic_update_time”†”asbuh1hhj”Úubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖÚh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj”Úubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjäÚh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj”ÚubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjñÚh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj”Úubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj�ÚubjC)�”}”(hŒenum fs_update_time type”h]”(j )�”}”(hj#h]”hŒenum”…”�”}”(hj Ûh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÛubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÛubh)�”}”(hhh]”jI)�”}”(hŒfs_update_time”h]”hŒfs_update_time”…”�”}”(hj(Ûh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj%Ûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j*ÛŒmodname”NŒ classname”Njj )�”}”j ]”jÒÚŒc.generic_update_time”†”asbuh1hhjÛubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFÛh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÛubjI)�”}”(hŒtype”h]”hŒtype”…”�”}”(hjTÛh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÛubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj�ÚubjC)�”}”(hŒunsigned int flags”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjmÛh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjiÛubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{Ûh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjiÛubj�)�”}”(hŒint”h]”hŒint”…”�”}”(hj‰Ûh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjiÛubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—Ûh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjiÛubjI)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj¥Ûh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjiÛubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj�Úubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjWÚh²hh³jiÚh´M¾ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjSÚh²hh³jiÚh´M¾ubah}”(h]”jNÚah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jiÚh´M¾hjPÚh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ"update the timestamps on the inode”h]”hŒ"update the timestamps on the inode”…”�”}”(hjÏÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M¾hjÌÛh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjPÚh²hh³jiÚh´M¾ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jçÛjšjçÛj›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hŒç**Parameters** ``struct inode *inode`` inode to be updated ``enum fs_update_time type`` timestamp to be updated ``unsigned int flags`` flags for the update **Description** Returns a negative error value on error, else 0.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjñÛh]”hŒ Parameters”…”�”}”(hjóÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjïÛubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MÂhjëÛubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ,``struct inode *inode`` inode to be updated ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjÜh]”hŒstruct inode *inode”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M¿hj Üubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode to be updated”h]”hŒinode to be updated”…”�”}”(hj)Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j%Üh´M¿hj&Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj Üubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j%Üh´M¿hjÜubjÄ)�”}”(hŒ5``enum fs_update_time type`` timestamp to be updated ”h]”(jÊ)�”}”(hŒ``enum fs_update_time type``”h]”jÐ)�”}”(hjIÜh]”hŒenum fs_update_time type”…”�”}”(hjKÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjGÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MÀhjCÜubjæ)�”}”(hhh]”hÌ)�”}”(hŒtimestamp to be updated”h]”hŒtimestamp to be updated”…”�”}”(hjbÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j^Üh´MÀhj_Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjCÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j^Üh´MÀhjÜubjÄ)�”}”(hŒ,``unsigned int flags`` flags for the update ”h]”(jÊ)�”}”(hŒ``unsigned int flags``”h]”jÐ)�”}”(hj‚Üh]”hŒunsigned int flags”…”�”}”(hj„Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj€Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MÁhj|Üubjæ)�”}”(hhh]”hÌ)�”}”(hŒflags for the update”h]”hŒflags for the update”…”�”}”(hj›Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j—Üh´MÁhj˜Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj|Üubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j—Üh´MÁhjÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjëÛubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj½Üh]”hŒ Description”…”�”}”(hj¿Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj»Üubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MÃhjëÛubhÌ)�”}”(hŒ0Returns a negative error value on error, else 0.”h]”hŒ0Returns a negative error value on error, else 0.”…”�”}”(hjÓÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MÂhjëÛubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œfile_remove_privs (C function)”Œc.file_remove_privs”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ)int file_remove_privs (struct file *file)”h]”j)�”}”(hŒ(int file_remove_privs(struct file *file)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjþÜh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mi ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjþÜh²hh³jÝh´Mi ubjC)�”}”(hŒfile_remove_privs”h]”jI)�”}”(hŒfile_remove_privs”h]”hŒfile_remove_privs”…”�”}”(hj#Ýh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÝubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjþÜh²hh³jÝh´Mi ubj=)�”}”(hŒ(struct file *file)”h]”jC)�”}”(hŒstruct file *file”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj?Ýh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj;Ýubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLÝh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj;Ýubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj]Ýh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjZÝubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j_ÝŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj%ÝsbŒc.file_remove_privs”†”asbuh1hhj;Ýubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}Ýh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj;Ýubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj‹Ýh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj;ÝubjI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj˜Ýh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj;Ýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj7Ýubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjþÜh²hh³jÝh´Mi ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjúÜh²hh³jÝh´Mi ubah}”(h]”jõÜah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÝh´Mi hj÷Üh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ3remove special file privileges (suid, capabilities)”h]”hŒ3remove special file privileges (suid, capabilities)”…”�”}”(hjÂÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mi hj¿Ýh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj÷Üh²hh³jÝh´Mi ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÚÝjšjÚÝj›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hŒî**Parameters** ``struct file *file`` file to remove privileges from **Description** When file is modified by a write or truncation ensure that special file privileges are removed. **Return** 0 on success, negative errno on failure.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjäÝh]”hŒ Parameters”…”�”}”(hjæÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjâÝubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mm hjÞÝubj¿)�”}”(hhh]”jÄ)�”}”(hŒ5``struct file *file`` file to remove privileges from ”h]”(jÊ)�”}”(hŒ``struct file *file``”h]”jÐ)�”}”(hjÞh]”hŒstruct file *file”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mj hjýÝubjæ)�”}”(hhh]”hÌ)�”}”(hŒfile to remove privileges from”h]”hŒfile to remove privileges from”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÞh´Mj hjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjýÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÞh´Mj hjúÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÞÝubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj>Þh]”hŒ Description”…”�”}”(hj@Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj<Þubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Ml hjÞÝubhÌ)�”}”(hŒ_When file is modified by a write or truncation ensure that special file privileges are removed.”h]”hŒ_When file is modified by a write or truncation ensure that special file privileges are removed.”…”�”}”(hjTÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mk hjÞÝubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjeÞh]”hŒReturn”…”�”}”(hjgÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjcÞubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mn hjÞÝubhÌ)�”}”(hŒ(0 on success, negative errno on failure.”h]”hŒ(0 on success, negative errno on failure.”…”�”}”(hj{Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mo hjÞÝubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œcurrent_time (C function)”Œc.current_time”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ4struct timespec64 current_time (struct inode *inode)”h]”j)�”}”(hŒ3struct timespec64 current_time(struct inode *inode)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjªÞh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¦Þh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mx ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸Þh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¦Þh²hh³j·Þh´Mx ubh)�”}”(hhh]”jI)�”}”(hŒ timespec64”h]”hŒ timespec64”…”�”}”(hjÉÞh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÆÞubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jËÞŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒ current_time”sbŒc.current_time”†”asbuh1hhj¦Þh²hh³j·Þh´Mx ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêÞh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¦Þh²hh³j·Þh´Mx ubjC)�”}”(hŒ current_time”h]”jI)�”}”(hjçÞh]”hŒ current_time”…”�”}”(hjüÞh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjøÞubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj¦Þh²hh³j·Þh´Mx ubj=)�”}”(hŒ(struct inode *inode)”h]”jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjßubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$ßh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjßubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj5ßh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj2ßubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j7ߌmodname”NŒ classname”Njj )�”}”j ]”jåÞŒc.current_time”†”asbuh1hhjßubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSßh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjßubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjaßh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjßubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjnßh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjßubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjßubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj¦Þh²hh³j·Þh´Mx ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj¢Þh²hh³j·Þh´Mx ubah}”(h]”j�Þah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j·Þh´Mx hjŸÞh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ&Return FS time (possibly fine-grained)”h]”hŒ&Return FS time (possibly fine-grained)”…”�”}”(hj˜ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mx hj•ßh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjŸÞh²hh³j·Þh´Mx ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j°ßjšj°ßj›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hXÂ**Parameters** ``struct inode *inode`` inode. **Description** Return the current time truncated to the time granularity supported by the fs, as suitable for a ctime/mtime change. If the ctime is flagged as having been QUERIED, get a fine-grained timestamp, but don't update the floor. For a multigrain inode, this is effectively an estimate of the timestamp that a file would receive. An actual update must go through inode_set_ctime_current().”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjºßh]”hŒ Parameters”…”�”}”(hj¼ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¸ßubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M| hj´ßubj¿)�”}”(hhh]”jÄ)�”}”(hŒ``struct inode *inode`` inode. ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjÙßh]”hŒstruct inode *inode”…”�”}”(hjÛßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj×ßubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´My hjÓßubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode.”h]”hŒinode.”…”�”}”(hjòßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jîßh´My hjïßubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÓßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jîßh´My hjÐßubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj´ßubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjàh]”hŒ Description”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjàubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M{ hj´ßubhÌ)�”}”(hŒÞReturn the current time truncated to the time granularity supported by the fs, as suitable for a ctime/mtime change. If the ctime is flagged as having been QUERIED, get a fine-grained timestamp, but don't update the floor.”h]”hŒàReturn the current time truncated to the time granularity supported by the fs, as suitable for a ctime/mtime change. If the ctime is flagged as having been QUERIED, get a fine-grained timestamp, but don’t update the floor.”…”�”}”(hj*àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mz hj´ßubhÌ)�”}”(hŒŸFor a multigrain inode, this is effectively an estimate of the timestamp that a file would receive. An actual update must go through inode_set_ctime_current().”h]”hŒŸFor a multigrain inode, this is effectively an estimate of the timestamp that a file would receive. An actual update must go through inode_set_ctime_current().”…”�”}”(hj9àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M hj´ßubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œfile_update_time (C function)”Œc.file_update_time”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ(int file_update_time (struct file *file)”h]”j)�”}”(hŒ'int file_update_time(struct file *file)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjhàh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjdàh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mà ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwàh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjdàh²hh³jvàh´Mà ubjC)�”}”(hŒfile_update_time”h]”jI)�”}”(hŒfile_update_time”h]”hŒfile_update_time”…”�”}”(hj‰àh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj…àubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjdàh²hh³jvàh´Mà ubj=)�”}”(hŒ(struct file *file)”h]”jC)�”}”(hŒstruct file *file”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¥àh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¡àubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²àh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¡àubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjÃàh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÀàubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÅàŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj‹àsbŒc.file_update_time”†”asbuh1hhj¡àubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãàh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¡àubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjñàh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¡àubjI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjþàh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¡àubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj�àubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjdàh²hh³jvàh´Mà ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj`àh²hh³jvàh´Mà ubah}”(h]”j[àah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jvàh´Mà hj]àh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒupdate mtime and ctime time”h]”hŒupdate mtime and ctime time”…”�”}”(hj(áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mà hj%áh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj]àh²hh³jvàh´Mà ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j@ájšj@áj›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hXD**Parameters** ``struct file *file`` file accessed **Description** Update the mtime and ctime members of an inode and mark the inode for writeback. Note that this function is meant exclusively for usage in the file write path of filesystems, and filesystems may choose to explicitly ignore updates via this function with the _NOCMTIME inode flag, e.g. for network filesystem where these imestamps are handled by the server. This can return an error for file systems who need to allocate space in order to update an inode. **Return** 0 on success, negative errno on failure.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjJáh]”hŒ Parameters”…”�”}”(hjLáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjHáubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MÇ hjDáubj¿)�”}”(hhh]”jÄ)�”}”(hŒ$``struct file *file`` file accessed ”h]”(jÊ)�”}”(hŒ``struct file *file``”h]”jÐ)�”}”(hjiáh]”hŒstruct file *file”…”�”}”(hjkáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjgáubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MÄ hjcáubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file accessed”h]”hŒ file accessed”…”�”}”(hj‚áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j~áh´MÄ hjáubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjcáubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j~áh´MÄ hj`áubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjDáubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj¤áh]”hŒ Description”…”�”}”(hj¦áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¢áubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MÆ hjDáubhÌ)�”}”(hXÆUpdate the mtime and ctime members of an inode and mark the inode for writeback. Note that this function is meant exclusively for usage in the file write path of filesystems, and filesystems may choose to explicitly ignore updates via this function with the _NOCMTIME inode flag, e.g. for network filesystem where these imestamps are handled by the server. This can return an error for file systems who need to allocate space in order to update an inode.”h]”hXÆUpdate the mtime and ctime members of an inode and mark the inode for writeback. Note that this function is meant exclusively for usage in the file write path of filesystems, and filesystems may choose to explicitly ignore updates via this function with the _NOCMTIME inode flag, e.g. for network filesystem where these imestamps are handled by the server. This can return an error for file systems who need to allocate space in order to update an inode.”…”�”}”(hjºáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MÅ hjDáubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjËáh]”hŒReturn”…”�”}”(hjÍáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÉáubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MÍ hjDáubhÌ)�”}”(hŒ(0 on success, negative errno on failure.”h]”hŒ(0 on success, negative errno on failure.”…”�”}”(hjááh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MÎ hjDáubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œfile_modified (C function)”Œc.file_modified”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ%int file_modified (struct file *file)”h]”j)�”}”(hŒ$int file_modified(struct file *file)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj âh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mô ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj âh²hh³jâh´Mô ubjC)�”}”(hŒ file_modified”h]”jI)�”}”(hŒ file_modified”h]”hŒ file_modified”…”�”}”(hj1âh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj-âubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj âh²hh³jâh´Mô ubj=)�”}”(hŒ(struct file *file)”h]”jC)�”}”(hŒstruct file *file”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjMâh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjIâubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZâh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjIâubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjkâh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjhâubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jmâŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj3âsbŒc.file_modified”†”asbuh1hhjIâubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹âh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjIâubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj™âh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjIâubjI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj¦âh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjIâubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjEâubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj âh²hh³jâh´Mô ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjâh²hh³jâh´Mô ubah}”(h]”jâah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jâh´Mô hjâh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ1handle mandated vfs changes when modifying a file”h]”hŒ1handle mandated vfs changes when modifying a file”…”�”}”(hjÐâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mô hjÍâh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjâh²hh³jâh´Mô ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jèâjšjèâj›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hX'**Parameters** ``struct file *file`` file that was modified **Description** When file has been modified ensure that special file privileges are removed and time settings are updated. **Context** Caller must hold the file's inode lock. **Return** 0 on success, negative errno on failure.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjòâh]”hŒ Parameters”…”�”}”(hjôâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjðâubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mø hjìâubj¿)�”}”(hhh]”jÄ)�”}”(hŒ-``struct file *file`` file that was modified ”h]”(jÊ)�”}”(hŒ``struct file *file``”h]”jÐ)�”}”(hjãh]”hŒstruct file *file”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjãubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mõ hj ãubjæ)�”}”(hhh]”hÌ)�”}”(hŒfile that was modified”h]”hŒfile that was modified”…”�”}”(hj*ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j&ãh´Mõ hj'ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j&ãh´Mõ hjãubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjìâubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjLãh]”hŒ Description”…”�”}”(hjNãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjJãubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M÷ hjìâubhÌ)�”}”(hŒjWhen file has been modified ensure that special file privileges are removed and time settings are updated.”h]”hŒjWhen file has been modified ensure that special file privileges are removed and time settings are updated.”…”�”}”(hjbãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mö hjìâubhÌ)�”}”(hŒ **Context**”h]”j©)�”}”(hjsãh]”hŒContext”…”�”}”(hjuãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjqãubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mù hjìâubhÌ)�”}”(hŒ'Caller must hold the file's inode lock.”h]”hŒ)Caller must hold the file’s inode lock.”…”�”}”(hj‰ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mú hjìâubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjšãh]”hŒReturn”…”�”}”(hjœãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj˜ãubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mü hjìâubhÌ)�”}”(hŒ(0 on success, negative errno on failure.”h]”hŒ(0 on success, negative errno on failure.”…”�”}”(hj°ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mü hjìâubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œkiocb_modified (C function)”Œc.kiocb_modified”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ'int kiocb_modified (struct kiocb *iocb)”h]”j)�”}”(hŒ&int kiocb_modified(struct kiocb *iocb)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjßãh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÛãh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîãh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÛãh²hh³jíãh´M ubjC)�”}”(hŒkiocb_modified”h]”jI)�”}”(hŒkiocb_modified”h]”hŒkiocb_modified”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjüãubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÛãh²hh³jíãh´M ubj=)�”}”(hŒ(struct kiocb *iocb)”h]”jC)�”}”(hŒstruct kiocb *iocb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjäubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)äh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjäubh)�”}”(hhh]”jI)�”}”(hŒkiocb”h]”hŒkiocb”…”�”}”(hj:äh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj7äubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j<äŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjäsbŒc.kiocb_modified”†”asbuh1hhjäubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZäh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjäubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjhäh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjäubjI)�”}”(hŒiocb”h]”hŒiocb”…”�”}”(hjuäh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjäubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjäubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÛãh²hh³jíãh´M ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj×ãh²hh³jíãh´M ubah}”(h]”jÒãah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jíãh´M hjÔãh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ1handle mandated vfs changes when modifying a file”h]”hŒ1handle mandated vfs changes when modifying a file”…”�”}”(hjŸäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M hjœäh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÔãh²hh³jíãh´M ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j·äjšj·äj›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hX(**Parameters** ``struct kiocb *iocb`` iocb that was modified **Description** When file has been modified ensure that special file privileges are removed and time settings are updated. **Context** Caller must hold the file's inode lock. **Return** 0 on success, negative errno on failure.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÁäh]”hŒ Parameters”…”�”}”(hjÃäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¿äubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M hj»äubj¿)�”}”(hhh]”jÄ)�”}”(hŒ.``struct kiocb *iocb`` iocb that was modified ”h]”(jÊ)�”}”(hŒ``struct kiocb *iocb``”h]”jÐ)�”}”(hjàäh]”hŒstruct kiocb *iocb”…”�”}”(hjâäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÞäubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M hjÚäubjæ)�”}”(hhh]”hÌ)�”}”(hŒiocb that was modified”h]”hŒiocb that was modified”…”�”}”(hjùäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jõäh´M hjöäubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÚäubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jõäh´M hj×äubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj»äubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjåh]”hŒ Description”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjåubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M hj»äubhÌ)�”}”(hŒjWhen file has been modified ensure that special file privileges are removed and time settings are updated.”h]”hŒjWhen file has been modified ensure that special file privileges are removed and time settings are updated.”…”�”}”(hj1åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M hj»äubhÌ)�”}”(hŒ **Context**”h]”j©)�”}”(hjBåh]”hŒContext”…”�”}”(hjDåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj@åubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M hj»äubhÌ)�”}”(hŒ'Caller must hold the file's inode lock.”h]”hŒ)Caller must hold the file’s inode lock.”…”�”}”(hjXåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M hj»äubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjiåh]”hŒReturn”…”�”}”(hjkåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjgåubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M hj»äubhÌ)�”}”(hŒ(0 on success, negative errno on failure.”h]”hŒ(0 on success, negative errno on failure.”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M hj»äubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œinode_init_owner (C function)”Œc.inode_init_owner”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒqvoid inode_init_owner (const struct mnt_idmap *idmap, struct inode *inode, const struct inode *dir, umode_t mode)”h]”j)�”}”(hŒpvoid inode_init_owner(const struct mnt_idmap *idmap, struct inode *inode, const struct inode *dir, umode_t mode)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj®åh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjªåh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M� ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½åh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjªåh²hh³j¼åh´M� ubjC)�”}”(hŒinode_init_owner”h]”jI)�”}”(hŒinode_init_owner”h]”hŒinode_init_owner”…”�”}”(hjÏåh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjËåubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjªåh²hh³j¼åh´M� ubj=)�”}”(hŒ[(const struct mnt_idmap *idmap, struct inode *inode, const struct inode *dir, umode_t mode)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjëåh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjçåubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøåh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjçåubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjçåubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjçåubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hj$æh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj!æubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j&æŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÑåsbŒc.inode_init_owner”†”asbuh1hhjçåubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDæh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjçåubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjRæh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjçåubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hj_æh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjçåubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjãåubjC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjxæh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjtæubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…æh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjtæubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj–æh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj“æubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j˜æŒmodname”NŒ classname”Njj )�”}”j ]”j@æŒc.inode_init_owner”†”asbuh1hhjtæubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´æh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjtæubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÂæh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjtæubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjÏæh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjtæubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjãåubjC)�”}”(hŒconst struct inode *dir”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjèæh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjäæubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõæh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjäæubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjäæubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjäæubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj!çh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjçubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j#çŒmodname”NŒ classname”Njj )�”}”j ]”j@æŒc.inode_init_owner”†”asbuh1hhjäæubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?çh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjäæubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjMçh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjäæubjI)�”}”(hŒdir”h]”hŒdir”…”�”}”(hjZçh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjäæubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjãåubjC)�”}”(hŒ umode_t mode”h]”(h)�”}”(hhh]”jI)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hjvçh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjsçubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jxçŒmodname”NŒ classname”Njj )�”}”j ]”j@æŒc.inode_init_owner”†”asbuh1hhjoçubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”çh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjoçubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj¢çh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjoçubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjãåubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjªåh²hh³j¼åh´M� ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj¦åh²hh³j¼åh´M� ubah}”(h]”j¡åah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j¼åh´M� hj£åh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒah"]”h$]”h&]”uh1j1hjjéh²hh³j{éh´Mº ubjC)�”}”(hŒinode_owner_or_capable”h]”jI)�”}”(hŒinode_owner_or_capable”h]”hŒinode_owner_or_capable”…”�”}”(hjŽéh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŠéubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjjéh²hh³j{éh´Mº ubj=)�”}”(hŒ:(const struct mnt_idmap *idmap, const struct inode *inode)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjªéh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¦éubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·éh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¦éubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÅéh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¦éubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒéh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¦éubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hjãéh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjàéubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jåéŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj�ésbŒc.inode_owner_or_capable”†”asbuh1hhj¦éubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¦éubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¦éubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¦éubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¢éubjC)�”}”(hŒconst struct inode *inode”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj7êh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj3êubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDêh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj3êubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjRêh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj3êubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_êh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj3êubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjpêh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjmêubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jrêŒmodname”NŒ classname”Njj )�”}”j ]”jÿéŒc.inode_owner_or_capable”†”asbuh1hhj3êubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽêh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj3êubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjœêh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj3êubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj©êh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj3êubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¢éubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjjéh²hh³j{éh´Mº ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjféh²hh³j{éh´Mº ubah}”(h]”jaéah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j{éh´Mº hjcéh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ'check current task permissions to inode”h]”hŒ'check current task permissions to inode”…”�”}”(hjÓêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mº hjÐêh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjcéh²hh³j{éh´Mº ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jëêjšjëêj›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hXc**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ``const struct inode *inode`` inode being checked **Description** Return true if current either has CAP_FOWNER in a namespace with the inode owner uid mapped, or owns the file. If the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through **idmap**. This function will then take care to map the inode according to **idmap** before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass **nop_mnt_idmap**.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjõêh]”hŒ Parameters”…”�”}”(hj÷êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjóêubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M¾ hjïêubj¿)�”}”(hhh]”(jÄ)�”}”(hŒN``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjëh]”hŒconst struct mnt_idmap *idmap”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjëubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M» hjëubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+idmap of the mount the inode was found from”h]”hŒ+idmap of the mount the inode was found from”…”�”}”(hj-ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j)ëh´M» hj*ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j)ëh´M» hj ëubjÄ)�”}”(hŒ2``const struct inode *inode`` inode being checked ”h]”(jÊ)�”}”(hŒ``const struct inode *inode``”h]”jÐ)�”}”(hjMëh]”hŒconst struct inode *inode”…”�”}”(hjOëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjKëubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M¼ hjGëubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode being checked”h]”hŒinode being checked”…”�”}”(hjfëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jbëh´M¼ hjcëubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjGëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jbëh´M¼ hj ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjïêubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjˆëh]”hŒ Description”…”�”}”(hjŠëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj†ëubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M¾ hjïêubhÌ)�”}”(hŒnReturn true if current either has CAP_FOWNER in a namespace with the inode owner uid mapped, or owns the file.”h]”hŒnReturn true if current either has CAP_FOWNER in a namespace with the inode owner uid mapped, or owns the file.”…”�”}”(hjžëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M½ hjïêubhÌ)�”}”(hXLIf the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through **idmap**. This function will then take care to map the inode according to **idmap** before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass **nop_mnt_idmap**.”•h]”(hŒgIf the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through ”…”�”}”(hj­ëh²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hjµëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj­ëubhŒB. This function will then take care to map the inode according to ”…”�”}”(hj­ëh²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hjÇëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj­ëubhŒ before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass ”…”�”}”(hj­ëh²hh³Nh´Nubj©)�”}”(hŒ**nop_mnt_idmap**”h]”hŒ nop_mnt_idmap”…”�”}”(hjÙëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj­ëubhŒ.”…”�”}”(hj­ëh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MÀ hjïêubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œinode_dio_wait (C function)”Œc.inode_dio_wait”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ)void inode_dio_wait (struct inode *inode)”h]”j)�”}”(hŒ(void inode_dio_wait(struct inode *inode)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjìh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mâ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!ìh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjìh²hh³j ìh´Mâ ubjC)�”}”(hŒinode_dio_wait”h]”jI)�”}”(hŒinode_dio_wait”h]”hŒinode_dio_wait”…”�”}”(hj3ìh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj/ìubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjìh²hh³j ìh´Mâ ubj=)�”}”(hŒ(struct inode *inode)”h]”jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjOìh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjKìubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\ìh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjKìubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjmìh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjjìubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”joìŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj5ìsbŒc.inode_dio_wait”†”asbuh1hhjKìubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�ìh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjKìubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj›ìh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjKìubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj¨ìh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjKìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjGìubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjìh²hh³j ìh´Mâ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj ìh²hh³j ìh´Mâ ubah}”(h]”jìah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j ìh´Mâ hjìh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ+wait for outstanding DIO requests to finish”h]”hŒ+wait for outstanding DIO requests to finish”…”�”}”(hjÒìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mâ hjÏìh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjìh²hh³j ìh´Mâ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jêìjšjêìj›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hX/**Parameters** ``struct inode *inode`` inode to wait for **Description** Waits for all pending direct I/O requests to finish so that we can proceed with a truncate or equivalent operation. Must be called under a lock that serializes taking new references to i_dio_count, usually by inode->i_rwsem.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjôìh]”hŒ Parameters”…”�”}”(hjöìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjòìubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mæ hjîìubj¿)�”}”(hhh]”jÄ)�”}”(hŒ*``struct inode *inode`` inode to wait for ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjíh]”hŒstruct inode *inode”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjíubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mã hj íubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode to wait for”h]”hŒinode to wait for”…”�”}”(hj,íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j(íh´Mã hj)íubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj íubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j(íh´Mã hj íubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjîìubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjNíh]”hŒ Description”…”�”}”(hjPíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjLíubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Må hjîìubhÌ)�”}”(hŒsWaits for all pending direct I/O requests to finish so that we can proceed with a truncate or equivalent operation.”h]”hŒsWaits for all pending direct I/O requests to finish so that we can proceed with a truncate or equivalent operation.”…”�”}”(hjdíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mä hjîìubhÌ)�”}”(hŒlMust be called under a lock that serializes taking new references to i_dio_count, usually by inode->i_rwsem.”h]”hŒlMust be called under a lock that serializes taking new references to i_dio_count, usually by inode->i_rwsem.”…”�”}”(hjsíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mç hjîìubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œtimestamp_truncate (C function)”Œc.timestamp_truncate”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒOstruct timespec64 timestamp_truncate (struct timespec64 t, struct inode *inode)”h]”j)�”}”(hŒNstruct timespec64 timestamp_truncate(struct timespec64 t, struct inode *inode)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¢íh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjžíh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M! ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°íh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjžíh²hh³j¯íh´M! ubh)�”}”(hhh]”jI)�”}”(hŒ timespec64”h]”hŒ timespec64”…”�”}”(hjÁíh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¾íubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÃíŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒtimestamp_truncate”sbŒc.timestamp_truncate”†”asbuh1hhjžíh²hh³j¯íh´M! ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâíh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjžíh²hh³j¯íh´M! ubjC)�”}”(hŒtimestamp_truncate”h]”jI)�”}”(hjßíh]”hŒtimestamp_truncate”…”�”}”(hjôíh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjðíubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjžíh²hh³j¯íh´M! ubj=)�”}”(hŒ*(struct timespec64 t, struct inode *inode)”h]”(jC)�”}”(hŒstruct timespec64 t”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj îubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj îubh)�”}”(hhh]”jI)�”}”(hŒ timespec64”h]”hŒ timespec64”…”�”}”(hj-îh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj*îubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j/îŒmodname”NŒ classname”Njj )�”}”j ]”jÝíŒc.timestamp_truncate”†”asbuh1hhj îubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKîh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj îubjI)�”}”(hŒt”h]”hŒt”…”�”}”(hjYîh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj îubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjîubjC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjrîh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjnîubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjnîubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj�îh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�îubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j’îŒmodname”NŒ classname”Njj )�”}”j ]”jÝíŒc.timestamp_truncate”†”asbuh1hhjnîubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®îh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjnîubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¼îh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjnîubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjÉîh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjnîubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjîubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjžíh²hh³j¯íh´M! ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjšíh²hh³j¯íh´M! ubah}”(h]”j•íah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j¯íh´M! hj—íh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ"Truncate timespec to a granularity”h]”hŒ"Truncate timespec to a granularity”…”�”}”(hjóîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M! hjðîh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj—íh²hh³j¯íh´M! ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j ïjšj ïj›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hX!**Parameters** ``struct timespec64 t`` Timespec ``struct inode *inode`` inode being updated **Description** Truncate a timespec to the granularity supported by the fs containing the inode. Always rounds down. gran must not be 0 nor greater than a second (NSEC_PER_SEC, or 10^9 ns).”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjïh]”hŒ Parameters”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjïubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M% hjïubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ!``struct timespec64 t`` Timespec ”h]”(jÊ)�”}”(hŒ``struct timespec64 t``”h]”jÐ)�”}”(hj4ïh]”hŒstruct timespec64 t”…”�”}”(hj6ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj2ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M" hj.ïubjæ)�”}”(hhh]”hÌ)�”}”(hŒTimespec”h]”hŒTimespec”…”�”}”(hjMïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jIïh´M" hjJïubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj.ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jIïh´M" hj+ïubjÄ)�”}”(hŒ,``struct inode *inode`` inode being updated ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjmïh]”hŒstruct inode *inode”…”�”}”(hjoïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjkïubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M# hjgïubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode being updated”h]”hŒinode being updated”…”�”}”(hj†ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‚ïh´M# hjƒïubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjgïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‚ïh´M# hj+ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjïubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj¨ïh]”hŒ Description”…”�”}”(hjªïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¦ïubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M% hjïubhÌ)�”}”(hŒ­Truncate a timespec to the granularity supported by the fs containing the inode. Always rounds down. gran must not be 0 nor greater than a second (NSEC_PER_SEC, or 10^9 ns).”h]”hŒ­Truncate a timespec to the granularity supported by the fs containing the inode. Always rounds down. gran must not be 0 nor greater than a second (NSEC_PER_SEC, or 10^9 ns).”…”�”}”(hj¾ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M$ hjïubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ$inode_set_ctime_current (C function)”Œc.inode_set_ctime_current”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ?struct timespec64 inode_set_ctime_current (struct inode *inode)”h]”j)�”}”(hŒ>struct timespec64 inode_set_ctime_current(struct inode *inode)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjíïh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjéïh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M@ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûïh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjéïh²hh³júïh´M@ ubh)�”}”(hhh]”jI)�”}”(hŒ timespec64”h]”hŒ timespec64”…”�”}”(hj ðh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ðubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jðŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒinode_set_ctime_current”sbŒc.inode_set_ctime_current”†”asbuh1hhjéïh²hh³júïh´M@ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-ðh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjéïh²hh³júïh´M@ ubjC)�”}”(hŒinode_set_ctime_current”h]”jI)�”}”(hj*ðh]”hŒinode_set_ctime_current”…”�”}”(hj?ðh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj;ðubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjéïh²hh³júïh´M@ ubj=)�”}”(hŒ(struct inode *inode)”h]”jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjZðh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjVðubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgðh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjVðubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjxðh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjuðubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jzðŒmodname”NŒ classname”Njj )�”}”j ]”j(ðŒc.inode_set_ctime_current”†”asbuh1hhjVðubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–ðh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjVðubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¤ðh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjVðubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj±ðh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjVðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjRðubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjéïh²hh³júïh´M@ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjåïh²hh³júïh´M@ ubah}”(h]”jàïah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³júïh´M@ hjâïh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒset the ctime to current_time”h]”hŒset the ctime to current_time”…”�”}”(hjÛðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M@ hjØðh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjâïh²hh³júïh´M@ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jóðjšjóðj›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hX°**Parameters** ``struct inode *inode`` inode **Description** Set the inode's ctime to the current value for the inode. Returns the current value that was assigned. If this is not a multigrain inode, then we set it to the later of the coarse time and floor value. If it is multigrain, then we first see if the coarse-grained timestamp is distinct from what is already there. If so, then use that. Otherwise, get a fine-grained timestamp. After that, try to swap the new value into i_ctime_nsec. Accept the resulting ctime, regardless of the outcome of the swap. If it has already been replaced, then that timestamp is later than the earlier unacceptable one, and is thus acceptable.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjýðh]”hŒ Parameters”…”�”}”(hjÿðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjûðubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MD hj÷ðubj¿)�”}”(hhh]”jÄ)�”}”(hŒ``struct inode *inode`` inode ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjñh]”hŒstruct inode *inode”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjñubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MA hjñubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj5ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j1ñh´MA hj2ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j1ñh´MA hjñubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj÷ðubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjWñh]”hŒ Description”…”�”}”(hjYñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjUñubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MC hj÷ðubhÌ)�”}”(hŒÉSet the inode's ctime to the current value for the inode. Returns the current value that was assigned. If this is not a multigrain inode, then we set it to the later of the coarse time and floor value.”h]”hŒËSet the inode’s ctime to the current value for the inode. Returns the current value that was assigned. If this is not a multigrain inode, then we set it to the later of the coarse time and floor value.”…”�”}”(hjmñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MB hj÷ðubhÌ)�”}”(hŒ­If it is multigrain, then we first see if the coarse-grained timestamp is distinct from what is already there. If so, then use that. Otherwise, get a fine-grained timestamp.”h]”hŒ­If it is multigrain, then we first see if the coarse-grained timestamp is distinct from what is already there. If so, then use that. Otherwise, get a fine-grained timestamp.”…”�”}”(hj|ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MF hj÷ðubhÌ)�”}”(hŒôAfter that, try to swap the new value into i_ctime_nsec. Accept the resulting ctime, regardless of the outcome of the swap. If it has already been replaced, then that timestamp is later than the earlier unacceptable one, and is thus acceptable.”h]”hŒôAfter that, try to swap the new value into i_ctime_nsec. Accept the resulting ctime, regardless of the outcome of the swap. If it has already been replaced, then that timestamp is later than the earlier unacceptable one, and is thus acceptable.”…”�”}”(hj‹ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MJ hj÷ðubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ"inode_set_ctime_deleg (C function)”Œc.inode_set_ctime_deleg”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒWstruct timespec64 inode_set_ctime_deleg (struct inode *inode, struct timespec64 update)”h]”j)�”}”(hŒVstruct timespec64 inode_set_ctime_deleg(struct inode *inode, struct timespec64 update)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjºñh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¶ñh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M’ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈñh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¶ñh²hh³jÇñh´M’ ubh)�”}”(hhh]”jI)�”}”(hŒ timespec64”h]”hŒ timespec64”…”�”}”(hjÙñh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÖñubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÛñŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒinode_set_ctime_deleg”sbŒc.inode_set_ctime_deleg”†”asbuh1hhj¶ñh²hh³jÇñh´M’ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúñh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¶ñh²hh³jÇñh´M’ ubjC)�”}”(hŒinode_set_ctime_deleg”h]”jI)�”}”(hj÷ñh]”hŒinode_set_ctime_deleg”…”�”}”(hj òh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjòubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj¶ñh²hh³jÇñh´M’ ubj=)�”}”(hŒ/(struct inode *inode, struct timespec64 update)”h]”(jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj'òh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj#òubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4òh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj#òubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjEòh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjBòubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jGòŒmodname”NŒ classname”Njj )�”}”j ]”jõñŒc.inode_set_ctime_deleg”†”asbuh1hhj#òubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcòh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj#òubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjqòh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj#òubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj~òh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj#òubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjòubjC)�”}”(hŒstruct timespec64 update”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj—òh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj“òubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤òh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj“òubh)�”}”(hhh]”jI)�”}”(hŒ timespec64”h]”hŒ timespec64”…”�”}”(hjµòh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj²òubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j·òŒmodname”NŒ classname”Njj )�”}”j ]”jõñŒc.inode_set_ctime_deleg”†”asbuh1hhj“òubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓòh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj“òubjI)�”}”(hŒupdate”h]”hŒupdate”…”�”}”(hjáòh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj“òubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjòubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj¶ñh²hh³jÇñh´M’ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj²ñh²hh³jÇñh´M’ ubah}”(h]”j­ñah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÇñh´M’ hj¯ñh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ,try to update the ctime on a delegated inode”h]”hŒ,try to update the ctime on a delegated inode”…”�”}”(hj óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M’ hjóh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¯ñh²hh³jÇñh´M’ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j#ójšj#ój›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hXK**Parameters** ``struct inode *inode`` inode to update ``struct timespec64 update`` timespec64 to set the ctime **Description** Attempt to atomically update the ctime on behalf of a delegation holder. The nfs server can call back the holder of a delegation to get updated inode attributes, including the mtime. When updating the mtime, update the ctime to a value at least equal to that. This can race with concurrent updates to the inode, in which case the update is skipped. Note that this works even when multigrain timestamps are not enabled, so it is used in either case.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj-óh]”hŒ Parameters”…”�”}”(hj/óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj+óubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M– hj'óubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ(``struct inode *inode`` inode to update ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjLóh]”hŒstruct inode *inode”…”�”}”(hjNóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjJóubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M“ hjFóubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode to update”h]”hŒinode to update”…”�”}”(hjeóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jaóh´M“ hjbóubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjFóubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jaóh´M“ hjCóubjÄ)�”}”(hŒ9``struct timespec64 update`` timespec64 to set the ctime ”h]”(jÊ)�”}”(hŒ``struct timespec64 update``”h]”jÐ)�”}”(hj…óh]”hŒstruct timespec64 update”…”�”}”(hj‡óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjƒóubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M” hjóubjæ)�”}”(hhh]”hÌ)�”}”(hŒtimespec64 to set the ctime”h]”hŒtimespec64 to set the ctime”…”�”}”(hjžóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jšóh´M” hj›óubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjóubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jšóh´M” hjCóubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj'óubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÀóh]”hŒ Description”…”�”}”(hjÂóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¾óubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M– hj'óubhÌ)�”}”(hŒHAttempt to atomically update the ctime on behalf of a delegation holder.”h]”hŒHAttempt to atomically update the ctime on behalf of a delegation holder.”…”�”}”(hjÖóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M• hj'óubhÌ)�”}”(hŒºThe nfs server can call back the holder of a delegation to get updated inode attributes, including the mtime. When updating the mtime, update the ctime to a value at least equal to that.”h]”hŒºThe nfs server can call back the holder of a delegation to get updated inode attributes, including the mtime. When updating the mtime, update the ctime to a value at least equal to that.”…”�”}”(hjåóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M— hj'óubhÌ)�”}”(hŒXThis can race with concurrent updates to the inode, in which case the update is skipped.”h]”hŒXThis can race with concurrent updates to the inode, in which case the update is skipped.”…”�”}”(hjôóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M› hj'óubhÌ)�”}”(hŒcNote that this works even when multigrain timestamps are not enabled, so it is used in either case.”h]”hŒcNote that this works even when multigrain timestamps are not enabled, so it is used in either case.”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mž hj'óubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ in_group_or_capable (C function)”Œc.in_group_or_capable”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒdbool in_group_or_capable (const struct mnt_idmap *idmap, const struct inode *inode, vfsgid_t vfsgid)”h]”j)�”}”(hŒcbool in_group_or_capable(const struct mnt_idmap *idmap, const struct inode *inode, vfsgid_t vfsgid)”h]”(j�)�”}”(hj„h]”hŒbool”…”�”}”(hj2ôh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj.ôh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MÛ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@ôh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj.ôh²hh³j?ôh´MÛ ubjC)�”}”(hŒin_group_or_capable”h]”jI)�”}”(hŒin_group_or_capable”h]”hŒin_group_or_capable”…”�”}”(hjRôh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjNôubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj.ôh²hh³j?ôh´MÛ ubj=)�”}”(hŒK(const struct mnt_idmap *idmap, const struct inode *inode, vfsgid_t vfsgid)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjnôh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjjôubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{ôh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjjôubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj‰ôh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjjôubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–ôh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjjôubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hj§ôh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¤ôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j©ôŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjTôsbŒc.in_group_or_capable”†”asbuh1hhjjôubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇôh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjjôubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÕôh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjjôubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hjâôh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjjôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjfôubjC)�”}”(hŒconst struct inode *inode”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjûôh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj÷ôubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj÷ôubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj÷ôubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#õh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj÷ôubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj4õh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj1õubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j6õŒmodname”NŒ classname”Njj )�”}”j ]”jÃôŒc.in_group_or_capable”†”asbuh1hhj÷ôubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRõh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj÷ôubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj`õh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj÷ôubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjmõh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj÷ôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjfôubjC)�”}”(hŒvfsgid_t vfsgid”h]”(h)�”}”(hhh]”jI)�”}”(hŒvfsgid_t”h]”hŒvfsgid_t”…”�”}”(hj‰õh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj†õubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j‹õŒmodname”NŒ classname”Njj )�”}”j ]”jÃôŒc.in_group_or_capable”†”asbuh1hhj‚õubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§õh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‚õubjI)�”}”(hŒvfsgid”h]”hŒvfsgid”…”�”}”(hjµõh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‚õubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjfôubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj.ôh²hh³j?ôh´MÛ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj*ôh²hh³j?ôh´MÛ ubah}”(h]”j%ôah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j?ôh´MÛ hj'ôh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ-check whether caller is CAP_FSETID privileged”h]”hŒ-check whether caller is CAP_FSETID privileged”…”�”}”(hjßõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MÛ hjÜõh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj'ôh²hh³j?ôh´MÛ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j÷õjšj÷õj›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hXñ**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount **inode** was found from ``const struct inode *inode`` inode to check ``vfsgid_t vfsgid`` the new/current vfsgid of **inode** **Description** Check whether **vfsgid** is in the caller's group list or if the caller is privileged with CAP_FSETID over **inode**. This can be used to determine whether the setgid bit can be kept or must be dropped. **Return** true if the caller is sufficiently privileged, false if not.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjöh]”hŒ Parameters”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÿõubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mß hjûõubj¿)�”}”(hhh]”(jÄ)�”}”(hŒN``const struct mnt_idmap *idmap`` idmap of the mount **inode** was found from ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj öh]”hŒconst struct mnt_idmap *idmap”…”�”}”(hj"öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjöubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MÜ hjöubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+idmap of the mount **inode** was found from”h]”(hŒidmap of the mount ”…”�”}”(hj9öh²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hjAöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj9öubhŒ was found from”…”�”}”(hj9öh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j5öh´MÜ hj6öubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j5öh´MÜ hjöubjÄ)�”}”(hŒ-``const struct inode *inode`` inode to check ”h]”(jÊ)�”}”(hŒ``const struct inode *inode``”h]”jÐ)�”}”(hjköh]”hŒconst struct inode *inode”…”�”}”(hjmöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjiöubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MÝ hjeöubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode to check”h]”hŒinode to check”…”�”}”(hj„öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j€öh´MÝ hj�öubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjeöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j€öh´MÝ hjöubjÄ)�”}”(hŒ8``vfsgid_t vfsgid`` the new/current vfsgid of **inode** ”h]”(jÊ)�”}”(hŒ``vfsgid_t vfsgid``”h]”jÐ)�”}”(hj¤öh]”hŒvfsgid_t vfsgid”…”�”}”(hj¦öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¢öubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MÞ hjžöubjæ)�”}”(hhh]”hÌ)�”}”(hŒ#the new/current vfsgid of **inode**”h]”(hŒthe new/current vfsgid of ”…”�”}”(hj½öh²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hjÅöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj½öubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¹öh´MÞ hjºöubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjžöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¹öh´MÞ hjöubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjûõubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjíöh]”hŒ Description”…”�”}”(hjïöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjëöubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mà hjûõubhÌ)�”}”(hŒÊCheck whether **vfsgid** is in the caller's group list or if the caller is privileged with CAP_FSETID over **inode**. This can be used to determine whether the setgid bit can be kept or must be dropped.”h]”(hŒCheck whether ”…”�”}”(hj÷h²hh³Nh´Nubj©)�”}”(hŒ **vfsgid**”h]”hŒvfsgid”…”�”}”(hj ÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj÷ubhŒU is in the caller’s group list or if the caller is privileged with CAP_FSETID over ”…”�”}”(hj÷h²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj÷ubhŒV. This can be used to determine whether the setgid bit can be kept or must be dropped.”…”�”}”(hj÷h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mß hjûõubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj8÷h]”hŒReturn”…”�”}”(hj:÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj6÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mã hjûõubhÌ)�”}”(hŒah"]”h$]”h&]”uh1j1hjy÷h²hh³j¡÷h´Mò ubjC)�”}”(hŒmode_strip_sgid”h]”jI)�”}”(hjž÷h]”hŒmode_strip_sgid”…”�”}”(hj´÷h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj°÷ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjy÷h²hh³j¡÷h´Mò ubj=)�”}”(hŒF(const struct mnt_idmap *idmap, const struct inode *dir, umode_t mode)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjÏ÷h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjË÷ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜ÷h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjË÷ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjê÷h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjË÷ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷÷h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjË÷ubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjøubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j øŒmodname”NŒ classname”Njj )�”}”j ]”jœ÷Œc.mode_strip_sgid”†”asbuh1hhjË÷ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&øh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjË÷ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj4øh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjË÷ubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hjAøh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjË÷ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÇ÷ubjC)�”}”(hŒconst struct inode *dir”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjZøh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjVøubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgøh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjVøubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjuøh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjVøubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚øh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjVøubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj“øh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�øubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j•øŒmodname”NŒ classname”Njj )�”}”j ]”jœ÷Œc.mode_strip_sgid”†”asbuh1hhjVøubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±øh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjVøubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¿øh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjVøubjI)�”}”(hŒdir”h]”hŒdir”…”�”}”(hjÌøh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjVøubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÇ÷ubjC)�”}”(hŒ umode_t mode”h]”(h)�”}”(hhh]”jI)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hjèøh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjåøubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jêøŒmodname”NŒ classname”Njj )�”}”j ]”jœ÷Œc.mode_strip_sgid”†”asbuh1hhjáøubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjáøubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjáøubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÇ÷ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjy÷h²hh³j¡÷h´Mò ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhju÷h²hh³j¡÷h´Mò ubah}”(h]”jp÷ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j¡÷h´Mò hjr÷h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ'handle the sgid bit for non-directories”h]”hŒ'handle the sgid bit for non-directories”…”�”}”(hj>ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mò hj;ùh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjr÷h²hh³j¡÷h´Mò ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jVùjšjVùj›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hXe**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount the inode was created from ``const struct inode *dir`` parent directory inode ``umode_t mode`` mode of the file to be created in **dir** **Description** If the **mode** of the new file has both the S_ISGID and S_IXGRP bit raised and **dir** has the S_ISGID bit raised ensure that the caller is either in the group of the parent directory or they have CAP_FSETID in their user namespace and are privileged over the parent directory. In all other cases, strip the S_ISGID bit from **mode**. **Return** the new mode to use for the file”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj`ùh]”hŒ Parameters”…”�”}”(hjbùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj^ùubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mö hjZùubj¿)�”}”(hhh]”(jÄ)�”}”(hŒP``const struct mnt_idmap *idmap`` idmap of the mount the inode was created from ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjùh]”hŒconst struct mnt_idmap *idmap”…”�”}”(hj�ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj}ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mó hjyùubjæ)�”}”(hhh]”hÌ)�”}”(hŒ-idmap of the mount the inode was created from”h]”hŒ-idmap of the mount the inode was created from”…”�”}”(hj˜ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j”ùh´Mó hj•ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjyùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j”ùh´Mó hjvùubjÄ)�”}”(hŒ3``const struct inode *dir`` parent directory inode ”h]”(jÊ)�”}”(hŒ``const struct inode *dir``”h]”jÐ)�”}”(hj¸ùh]”hŒconst struct inode *dir”…”�”}”(hjºùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¶ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mô hj²ùubjæ)�”}”(hhh]”hÌ)�”}”(hŒparent directory inode”h]”hŒparent directory inode”…”�”}”(hjÑùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÍùh´Mô hjÎùubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj²ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÍùh´Mô hjvùubjÄ)�”}”(hŒ;``umode_t mode`` mode of the file to be created in **dir** ”h]”(jÊ)�”}”(hŒ``umode_t mode``”h]”jÐ)�”}”(hjñùh]”hŒ umode_t mode”…”�”}”(hjóùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjïùubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mõ hjëùubjæ)�”}”(hhh]”hÌ)�”}”(hŒ)mode of the file to be created in **dir**”h]”(hŒ"mode of the file to be created in ”…”�”}”(hj úh²hh³Nh´Nubj©)�”}”(hŒ**dir**”h]”hŒdir”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj úubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³júh´Mõ hjúubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjëùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³júh´Mõ hjvùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjZùubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj:úh]”hŒ Description”…”�”}”(hj<úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj8úubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M÷ hjZùubhÌ)�”}”(hXOIf the **mode** of the new file has both the S_ISGID and S_IXGRP bit raised and **dir** has the S_ISGID bit raised ensure that the caller is either in the group of the parent directory or they have CAP_FSETID in their user namespace and are privileged over the parent directory. In all other cases, strip the S_ISGID bit from **mode**.”h]”(hŒIf the ”…”�”}”(hjPúh²hh³Nh´Nubj©)�”}”(hŒ**mode**”h]”hŒmode”…”�”}”(hjXúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjPúubhŒA of the new file has both the S_ISGID and S_IXGRP bit raised and ”…”�”}”(hjPúh²hh³Nh´Nubj©)�”}”(hŒ**dir**”h]”hŒdir”…”�”}”(hjjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjPúubhŒï has the S_ISGID bit raised ensure that the caller is either in the group of the parent directory or they have CAP_FSETID in their user namespace and are privileged over the parent directory. In all other cases, strip the S_ISGID bit from ”…”�”}”(hjPúh²hh³Nh´Nubj©)�”}”(hŒ**mode**”h]”hŒmode”…”�”}”(hj|úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjPúubhŒ.”…”�”}”(hjPúh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mö hjZùubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj—úh]”hŒReturn”…”�”}”(hj™úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj•úubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mü hjZùubhÌ)�”}”(hŒ the new mode to use for the file”h]”hŒ the new mode to use for the file”…”�”}”(hj­úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mý hjZùubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdump_inode (C function)”Œ c.dump_inode”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ9void dump_inode (struct inode *inode, const char *reason)”h]”j)�”}”(hŒ8void dump_inode(struct inode *inode, const char *reason)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÜúh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjØúh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëúh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjØúh²hh³jêúh´M ubjC)�”}”(hŒ dump_inode”h]”jI)�”}”(hŒ dump_inode”h]”hŒ dump_inode”…”�”}”(hjýúh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjùúubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjØúh²hh³jêúh´M ubj=)�”}”(hŒ)(struct inode *inode, const char *reason)”h]”(jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjûubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&ûh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjûubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj7ûh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj4ûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j9ûŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÿúsbŒ c.dump_inode”†”asbuh1hhjûubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWûh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjûubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjeûh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjûubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjrûh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjûubjC)�”}”(hŒconst char *reason”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj‹ûh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj‡ûubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜ûh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‡ûubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj¦ûh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj‡ûubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´ûh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‡ûubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÂûh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj‡ûubjI)�”}”(hŒreason”h]”hŒreason”…”�”}”(hjÏûh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‡ûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjûubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjØúh²hh³jêúh´M ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÔúh²hh³jêúh´M ubah}”(h]”jÏúah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jêúh´M hjÑúh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒdump an inode.”h]”hŒdump an inode.”…”�”}”(hjùûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M hjöûh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÑúh²hh³jêúh´M ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jüjšjüj›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hX**Parameters** ``struct inode *inode`` inode to dump ``const char *reason`` reason for dumping **Description** If inode is an invalid pointer, we don't want to crash accessing it, so probe everything depending on it carefully with get_kernel_nofault().”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjüh]”hŒ Parameters”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjüubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M hjüubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ&``struct inode *inode`` inode to dump ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj:üh]”hŒstruct inode *inode”…”�”}”(hj<üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj8üubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M hj4üubjæ)�”}”(hhh]”hÌ)�”}”(hŒ inode to dump”h]”hŒ inode to dump”…”�”}”(hjSüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jOüh´M hjPüubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj4üubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jOüh´M hj1üubjÄ)�”}”(hŒ*``const char *reason`` reason for dumping ”h]”(jÊ)�”}”(hŒ``const char *reason``”h]”jÐ)�”}”(hjsüh]”hŒconst char *reason”…”�”}”(hjuüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjqüubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M hjmüubjæ)�”}”(hhh]”hÌ)�”}”(hŒreason for dumping”h]”hŒreason for dumping”…”�”}”(hjŒüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jˆüh´M hj‰üubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjmüubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jˆüh´M hj1üubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjüubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj®üh]”hŒ Description”…”�”}”(hj°üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¬üubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M hjüubhÌ)�”}”(hŒ�If inode is an invalid pointer, we don't want to crash accessing it, so probe everything depending on it carefully with get_kernel_nofault().”h]”hŒ�If inode is an invalid pointer, we don’t want to crash accessing it, so probe everything depending on it carefully with get_kernel_nofault().”…”�”}”(hjÄüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M hjüubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œmake_bad_inode (C function)”Œc.make_bad_inode”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ)void make_bad_inode (struct inode *inode)”h]”j)�”}”(hŒ(void make_bad_inode(struct inode *inode)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjóüh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjïüh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:32: ./fs/bad_inode.c”h´KÇubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjïüh²hh³jýh´KÇubjC)�”}”(hŒmake_bad_inode”h]”jI)�”}”(hŒmake_bad_inode”h]”hŒmake_bad_inode”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjýubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjïüh²hh³jýh´KÇubj=)�”}”(hŒ(struct inode *inode)”h]”jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj0ýh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj,ýubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=ýh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj,ýubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjNýh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjKýubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jPýŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjýsbŒc.make_bad_inode”†”asbuh1hhj,ýubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnýh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj,ýubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj|ýh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj,ýubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj‰ýh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj,ýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj(ýubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjïüh²hh³jýh´KÇubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjëüh²hh³jýh´KÇubah}”(h]”jæüah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jýh´KÇhjèüh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ%mark an inode bad due to an I/O error”h]”hŒ%mark an inode bad due to an I/O error”…”�”}”(hj³ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:32: ./fs/bad_inode.c”h´KÇhj°ýh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjèüh²hh³jýh´KÇubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jËýjšjËýj›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hX**Parameters** ``struct inode *inode`` Inode to mark bad **Description** When an inode cannot be read due to a media or remote network failure this function makes the inode "bad" and causes I/O operations on it to fail from this point on.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÕýh]”hŒ Parameters”…”�”}”(hj×ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÓýubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:32: ./fs/bad_inode.c”h´KËhjÏýubj¿)�”}”(hhh]”jÄ)�”}”(hŒ*``struct inode *inode`` Inode to mark bad ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjôýh]”hŒstruct inode *inode”…”�”}”(hjöýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjòýubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:32: ./fs/bad_inode.c”h´KÈhjîýubjæ)�”}”(hhh]”hÌ)�”}”(hŒInode to mark bad”h]”hŒInode to mark bad”…”�”}”(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ëýubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÏýubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj/þh]”hŒ Description”…”�”}”(hj1þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj-þubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:32: ./fs/bad_inode.c”h´KÊhjÏýubjÁ™)�”}”(hŒ¥When an inode cannot be read due to a media or remote network failure this function makes the inode "bad" and causes I/O operations on it to fail from this point on.”h]”hÌ)�”}”(hŒ¥When an inode cannot be read due to a media or remote network failure this function makes the inode "bad" and causes I/O operations on it to fail from this point on.”h]”hŒ©When an inode cannot be read due to a media or remote network failure this function makes the inode “badâ€� and causes I/O operations on it to fail from this point on.”…”�”}”(hjIþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:32: ./fs/bad_inode.c”h´KÉhjEþubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀ™h³jWþh´KÉhjÏýubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œis_bad_inode (C function)”Œc.is_bad_inode”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ'bool is_bad_inode (struct inode *inode)”h]”j)�”}”(hŒ&bool is_bad_inode(struct inode *inode)”h]”(j�)�”}”(hj„h]”hŒbool”…”�”}”(hj~þh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjzþh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:32: ./fs/bad_inode.c”h´Kâubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒþh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjzþh²hh³j‹þh´KâubjC)�”}”(hŒ is_bad_inode”h]”jI)�”}”(hŒ is_bad_inode”h]”hŒ is_bad_inode”…”�”}”(hjžþh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjšþubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjzþh²hh³j‹þh´Kâubj=)�”}”(hŒ(struct inode *inode)”h]”jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjºþh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¶þubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇþh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¶þubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjØþh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÕþubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÚþŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj þsbŒc.is_bad_inode”†”asbuh1hhj¶þubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøþh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¶þubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¶þubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¶þubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj²þubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjzþh²hh³j‹þh´Kâubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjvþh²hh³j‹þh´Kâubah}”(h]”jqþah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j‹þh´Kâhjsþh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒis an inode errored”h]”hŒis an inode errored”…”�”}”(hj=ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:32: ./fs/bad_inode.c”h´Kâhj:ÿh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjsþh²hh³j‹þh´Kâubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jUÿjšjUÿj›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hŒŒ**Parameters** ``struct inode *inode`` inode to test **Description** Returns true if the inode in question has been marked as bad.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj_ÿh]”hŒ Parameters”…”�”}”(hjaÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj]ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:32: ./fs/bad_inode.c”h´KæhjYÿubj¿)�”}”(hhh]”jÄ)�”}”(hŒ&``struct inode *inode`` inode to test ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj~ÿh]”hŒstruct inode *inode”…”�”}”(hj€ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj|ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:32: ./fs/bad_inode.c”h´Kãhjxÿubjæ)�”}”(hhh]”hÌ)�”}”(hŒ inode to test”h]”hŒ inode to test”…”�”}”(hj—ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j“ÿh´Kãhj”ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjxÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j“ÿh´Kãhjuÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjYÿubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj¹ÿh]”hŒ Description”…”�”}”(hj»ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj·ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:32: ./fs/bad_inode.c”h´KåhjYÿubjÁ™)�”}”(hŒ=Returns true if the inode in question has been marked as bad.”h]”hÌ)�”}”(hjÑÿh]”hŒ=Returns true if the inode in question has been marked as bad.”…”�”}”(hjÓÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:32: ./fs/bad_inode.c”h´KähjÏÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀ™h³jàÿh´KähjYÿubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œiget_failed (C function)”Œ c.iget_failed”hNt”auh1hýhj�h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ&void iget_failed (struct inode *inode)”h]”j)�”}”(hŒ%void iget_failed(struct inode *inode)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:32: ./fs/bad_inode.c”h´Kðubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjh²hh³jh´KðubjC)�”}”(hŒ iget_failed”h]”jI)�”}”(hŒ iget_failed”h]”hŒ iget_failed”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj$ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjh²hh³jh´Kðubj=)�”}”(hŒ(struct inode *inode)”h]”jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj@ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj@ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jdŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj*sbŒ c.iget_failed”†”asbuh1hhj@ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj@ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj@ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj<ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjh²hh³jh´Kðubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÿÿh²hh³jh´Kðubah}”(h]”júÿah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jh´Kðhjüÿh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ7Mark an under-construction inode as dead and release it”h]”hŒ7Mark an under-construction inode as dead and release it”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:32: ./fs/bad_inode.c”h´KðhjÄh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjüÿh²hh³jh´Kðubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jßjšjßj›‰jœ‰j�‰uh1jh²hhj�h³Nh´NubjŸ)�”}”(hŒ‰**Parameters** ``struct inode *inode`` The inode to discard **Description** Mark an under-construction inode as dead and release it.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjéh]”hŒ Parameters”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjçubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:32: ./fs/bad_inode.c”h´Kôhjãubj¿)�”}”(hhh]”jÄ)�”}”(hŒ-``struct inode *inode`` The inode to discard ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjh]”hŒstruct inode *inode”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:32: ./fs/bad_inode.c”h´Kñhjubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe inode to discard”h]”hŒThe inode to discard”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´Kñhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjubeh}”(h]”h ]”h"]”•h$]”h&]”uh1jÃh³jh´Kñhjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjãubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjCh]”hŒ Description”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjAubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:32: ./fs/bad_inode.c”h´KóhjãubhÌ)�”}”(hŒ8Mark an under-construction inode as dead and release it.”h]”hŒ8Mark an under-construction inode as dead and release it.”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:32: ./fs/bad_inode.c”h´Kòhjãubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�h²hh³Nh´Nubeh}”(h]”Œinode-handling”ah ]”h"]”Œinode handling”ah$]”h&]”uh1hµhhÛh²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒRegistration and Superblocks”h]”hŒRegistration and Superblocks”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjwh²hh³hÊh´K$ubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ$deactivate_locked_super (C function)”Œc.deactivate_locked_super”hNt”auh1hýhjwh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ4void deactivate_locked_super (struct super_block *s)”h]”j)�”}”(hŒ3void deactivate_locked_super(struct super_block *s)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj�h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�h²hh³j¯h´MubjC)�”}”(hŒdeactivate_locked_super”h]”jI)�”}”(hŒdeactivate_locked_super”h]”hŒdeactivate_locked_super”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¾ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj�h²hh³j¯h´Mubj=)�”}”(hŒ(struct super_block *s)”h]”jC)�”}”(hŒstruct super_block *s”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÚubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÚubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjùubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jþŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÄsbŒc.deactivate_locked_super”†”asbuh1hhjÚubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÚubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÚubjI)�”}”(hŒs”h]”hŒs”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÚubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÖubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj�h²hh³j¯h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj™h²hh³j¯h´Mubah}”(h]”j”ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j¯h´Mhj–h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ&drop an active reference to superblock”h]”hŒ&drop an active reference to superblock”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mhj^h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj–h²hh³j¯h´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jyjšjyj›‰jœ‰j�‰uh1jh²hhjwh³Nh´NubjŸ)�”}”(hX’**Parameters** ``struct super_block *s`` superblock to deactivate **Description** Drops an active reference to superblock, converting it into a temporary one if there is no other active references left. In that case we tell fs driver to shut it down and drop the temporary reference we had just acquired. Caller holds exclusive lock on superblock; that lock is released.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjƒh]”hŒ Parameters”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M#hj}ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ3``struct super_block *s`` superblock to deactivate ”h]”(jÊ)�”}”(hŒ``struct super_block *s``”h]”jÐ)�”}”(hj¢h]”hŒstruct super_block *s”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M hjœubjæ)�”}”(hhh]”hÌ)�”}”(hŒsuperblock to deactivate”h]”hŒsuperblock to deactivate”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j·h´M hj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjœubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j·h´M hj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj}ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÝh]”hŒ Description”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M"hj}ubjÁ™)�”}”(hX"Drops an active reference to superblock, converting it into a temporary one if there is no other active references left. In that case we tell fs driver to shut it down and drop the temporary reference we had just acquired. Caller holds exclusive lock on superblock; that lock is released.”h]”(hÌ)�”}”(hŒßDrops an active reference to superblock, converting it into a temporary one if there is no other active references left. In that case we tell fs driver to shut it down and drop the temporary reference we had just acquired.”h]”hŒßDrops an active reference to superblock, converting it into a temporary one if there is no other active references left. In that case we tell fs driver to shut it down and drop the temporary reference we had just acquired.”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M!hjóubhÌ)�”}”(hŒACaller holds exclusive lock on superblock; that lock is released.”h]”hŒACaller holds exclusive lock on superblock; that lock is released.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M&hjóubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀ™h³jh´M!hj}ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjwh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdeactivate_super (C function)”Œc.deactivate_super”hNt”auh1hýhjwh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ-void deactivate_super (struct super_block *s)”h]”j)�”}”(hŒ,void deactivate_super(struct super_block *s)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj7h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M?ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj7h²hh³jIh´M?ubjC)�”}”(hŒdeactivate_super”h]”jI)�”}”(hŒdeactivate_super”h]”hŒdeactivate_super”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjXubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj7h²hh³jIh´M?ubj=)�”}”(hŒ(struct super_block *s)”h]”jC)�”}”(hŒstruct super_block *s”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjtubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjtubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj“ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j˜Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj^sbŒc.deactivate_super”†”asbuh1hhjtubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjtubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjtubjI)�”}”(hj9h]”hŒs”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjtubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjpubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj7h²hh³jIh´M?ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj3h²hh³jIh´M?ubah}”(h]”j.ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jIh´M?hj0h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ&drop an active reference to superblock”h]”hŒ&drop an active reference to superblock”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M?hj÷h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj0h²hh³jIh´M?ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jjšjj›‰jœ‰j�‰uh1jh²hhjwh³Nh´NubjŸ)�”}”(hX**Parameters** ``struct super_block *s`` superblock to deactivate **Description** Variant of deactivate_locked_super(), except that superblock is *not* locked by caller. If we are going to drop the final active reference, lock will be acquired prior to that.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´MChjubj¿)�”}”(hhh]”jÄ)�”}”(hŒ3``struct super_block *s`` superblock to deactivate ”h]”(jÊ)�”}”(hŒ``struct super_block *s``”h]”jÐ)�”}”(hj;h]”hŒstruct super_block *s”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M@hj5ubjæ)�”}”(hhh]”hÌ)�”}”(hŒsuperblock to deactivate”h]”hŒsuperblock to deactivate”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jPh´M@hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jPh´M@hj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjvh]”hŒ Description”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjtubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´MBhjubjÁ™)�”}”(hŒ±Variant of deactivate_locked_super(), except that superblock is *not* locked by caller. If we are going to drop the final active reference, lock will be acquired prior to that.”h]”hÌ)�”}”(hŒ±Variant of deactivate_locked_super(), except that superblock is *not* locked by caller. If we are going to drop the final active reference, lock will be acquired prior to that.”h]”(hŒ@Variant of deactivate_locked_super(), except that superblock is ”…”�”}”(hj�h²hh³Nh´Nubj )�”}”(hŒ*not*”h]”hŒnot”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~ hj�ubhŒl locked by caller. If we are going to drop the final active reference, lock will be acquired prior to that.”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´MAhjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀ™h³j°h´MAhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjwh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œretire_super (C function)”Œc.retire_super”hNt”auh1hýhjwh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ*void retire_super (struct super_block *sb)”h]”j)�”}”(hŒ)void retire_super(struct super_block *sb)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÓh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÓh²hh³jåh´M�ubjC)�”}”(hŒ retire_super”h]”jI)�”}”(hŒ retire_super”h]”hŒ retire_super”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjôubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÓh²hh³jåh´M�ubj=)�”}”(hŒ(struct super_block *sb)”h]”jC)�”}”(hŒstruct super_block *sb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j4Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjúsbŒc.retire_super”†”asbuh1hhjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÓh²hh³jåh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÏh²hh³jåh´M�ubah}”(h]”jÊah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jåh´M�hjÌh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ%prevents superblock from being reused”h]”hŒ%prevents superblock from being reused”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M�hj”h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÌh²hh³jåh´M�ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j¯jšj¯j›‰jœ‰j�‰uh1jh²hhjwh³Nh´NubjŸ)�”}”(hX**Parameters** ``struct super_block *sb`` superblock to retire **Description** The function marks superblock to be ignored in superblock test, which prevents it from being reused for any new mounts. If the superblock has a private bdi, it also unregisters it, but doesn't reduce the refcount of the superblock to prevent potential races. The refcount is reduced by generic_shutdown_super(). The function can not be called concurrently with generic_shutdown_super(). It is safe to call the function multiple times, subsequent calls have no effect. The marker will affect the re-use only for block-device-based superblocks. Other superblocks will still get marked if this function is used, but that will not affect their reusability.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj¹h]”hŒ Parameters”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M‘hj³ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ0``struct super_block *sb`` superblock to retire ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hjØh]”hŒstruct super_block *sb”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´MŽhjÒubjæ)�”}”(hhh]”hÌ)�”}”(hŒsuperblock to retire”h]”hŒsuperblock to retire”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jíh´MŽhjîubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jíh´MŽhjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj³ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M�hj³ubjÁ™)�”}”(hX’The function marks superblock to be ignored in superblock test, which prevents it from being reused for any new mounts. If the superblock has a private bdi, it also unregisters it, but doesn't reduce the refcount of the superblock to prevent potential races. The refcount is reduced by generic_shutdown_super(). The function can not be called concurrently with generic_shutdown_super(). It is safe to call the function multiple times, subsequent calls have no effect. The marker will affect the re-use only for block-device-based superblocks. Other superblocks will still get marked if this function is used, but that will not affect their reusability.”h]”(hÌ)�”}”(hX×The function marks superblock to be ignored in superblock test, which prevents it from being reused for any new mounts. If the superblock has a private bdi, it also unregisters it, but doesn't reduce the refcount of the superblock to prevent potential races. The refcount is reduced by generic_shutdown_super(). The function can not be called concurrently with generic_shutdown_super(). It is safe to call the function multiple times, subsequent calls have no effect.”h]”hXÙThe function marks superblock to be ignored in superblock test, which prevents it from being reused for any new mounts. If the superblock has a private bdi, it also unregisters it, but doesn’t reduce the refcount of the superblock to prevent potential races. The refcount is reduced by generic_shutdown_super(). The function can not be called concurrently with generic_shutdown_super(). It is safe to call the function multiple times, subsequent calls have no effect.”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M�hj)ubhÌ)�”}”(hŒ¹The marker will affect the re-use only for block-device-based superblocks. Other superblocks will still get marked if this function is used, but that will not affect their reusability.”h]”hŒ¹The marker will affect the re-use only for block-device-based superblocks. Other superblocks will still get marked if this function is used, but that will not affect their reusability.”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M—hj)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀ™h³j;h´M�hj³ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjwh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ#generic_shutdown_super (C function)”Œc.generic_shutdown_super”hNt”auh1hýhjwh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ4void generic_shutdown_super (struct super_block *sb)”h]”j)�”}”(hŒ3void generic_shutdown_super(struct super_block *sb)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjmh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mªubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjmh²hh³jh´MªubjC)�”}”(hŒgeneric_shutdown_super”h]”jI)�”}”(hŒgeneric_shutdown_super”h]”hŒgeneric_shutdown_super”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŽubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjmh²hh³jh´Mªubj=)�”}”(hŒ(struct super_block *sb)”h]”jC)�”}”(hŒstruct super_block *sb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjªubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjªubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÉubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÎŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj”sbŒc.generic_shutdown_super”†”asbuh1hhjªubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjªubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjªubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¦ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjmh²hh³jh´Mªubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjih²hh³jh´Mªubah}”(h]”jdah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jh´Mªhjfh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒcommon helper for ->kill_sb()”h]”hŒcommon helper for ->kill_sb()”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mªhj.h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjfh²hh³jh´Mªubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jIjšjIj›‰jœ‰j�‰uh1jh²hhjwh³Nh´NubjŸ)�”}”(hXv**Parameters** ``struct super_block *sb`` superblock to kill **Description** generic_shutdown_super() does all fs-independent work on superblock shutdown. Typical ->kill_sb() should pick all fs-specific objects that need destruction out of superblock, call generic_shutdown_super() and release aforementioned objects. Note: dentries and inodes _are_ taken care of and do not need specific handling. Upon calling this function, the filesystem may no longer alter or rearrange the set of dentries belonging to this super_block, nor may it change the attachments of dentries to inodes.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjSh]”hŒ Parameters”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M®hjMubj¿)�”}”(hhh]”jÄ)�”}”(hŒ.``struct super_block *sb`` superblock to kill ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hjrh]”hŒstruct super_block *sb”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M«hjlubjæ)�”}”(hhh]”hÌ)�”}”(hŒsuperblock to kill”h]”hŒsuperblock to kill”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‡h´M«hjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjlubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‡h´M«hjiubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjMubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj­h]”hŒ Description”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M­hjMubjÁ™)�”}”(hXügeneric_shutdown_super() does all fs-independent work on superblock shutdown. Typical ->kill_sb() should pick all fs-specific objects that need destruction out of superblock, call generic_shutdown_super() and release aforementioned objects. Note: dentries and inodes _are_ taken care of and do not need specific handling. Upon calling this function, the filesystem may no longer alter or rearrange the set of dentries belonging to this super_block, nor may it change the attachments of dentries to inodes.”h]”(hÌ)�”}”(hXCgeneric_shutdown_super() does all fs-independent work on superblock shutdown. Typical ->kill_sb() should pick all fs-specific objects that need destruction out of superblock, call generic_shutdown_super() and release aforementioned objects. Note: dentries and inodes _are_ taken care of and do not need specific handling.”h]”hXCgeneric_shutdown_super() does all fs-independent work on superblock shutdown. Typical ->kill_sb() should pick all fs-specific objects that need destruction out of superblock, call generic_shutdown_super() and release aforementioned objects. Note: dentries and inodes _are_ taken care of and do not need specific handling.”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M¬hjÃubhÌ)�”}”(hŒ·Upon calling this function, the filesystem may no longer alter or rearrange the set of dentries belonging to this super_block, nor may it change the attachments of dentries to inodes.”h]”hŒ·Upon calling this function, the filesystem may no longer alter or rearrange the set of dentries belonging to this super_block, nor may it change the attachments of dentries to inodes.”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M²hjÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀ™h³jÕh´M¬hjMubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjwh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œsget_fc (C function)”Œ c.sget_fc”hNt”auh1hýhjwh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ£struct super_block * sget_fc (struct fs_context *fc, int (*test)(struct super_block *, struct fs_context *), int (*set)(struct super_block *, struct fs_context *))”h]”j)�”}”(hŒ�struct super_block *sget_fc(struct fs_context *fc, int (*test)(struct super_block*, struct fs_context*), int (*set)(struct super_block*, struct fs_context*))”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjh²hh³jh´M ubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j,Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒsget_fc”sbŒ c.sget_fc”†”asbuh1hhjh²hh³jh´M ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjh²hh³jh´M ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjh²hh³jh´M ubjC)�”}”(hŒsget_fc”h]”jI)�”}”(hjHh]”hŒsget_fc”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjfubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjh²hh³jh´M ubj=)�”}”(hŒ‚(struct fs_context *fc, int (*test)(struct super_block*, struct fs_context*), int (*set)(struct super_block*, struct fs_context*))”h]”(jC)�”}”(hŒstruct fs_context *fc”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�ubh)�”}”(hhh]”jI)�”}”(hŒ fs_context”h]”hŒ fs_context”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¥Œmodname”NŒ classname”Njj )�”}”j ]”jFŒ c.sget_fc”†”asbuh1hhj�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj�ubjI)�”}”(hŒfc”h]”hŒfc”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj}ubjC)�”}”(hŒ4int (*test)(struct super_block*, struct fs_context*)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjñubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjñubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjñubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjñubjI)�”}”(hŒtest”h]”hŒtest”…”�”}”(hj+ h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjñubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hj9 h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjñubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hjF h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjñubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjS h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjñubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj` h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjñubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hjq h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjn ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”js Œmodname”NŒ classname”Njj )�”}”j ]”jFŒ c.sget_fc”†”asbuh1hhjñubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjñubj¯)�”}”(hjW¦h]”hŒ,”…”�”}”(hjœ h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjñubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj© h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjñubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjñubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄ h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjñubh)�”}”(hhh]”jI)�”}”(hŒ fs_context”h]”hŒ fs_context”…”�”}”(hjÕ h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÒ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j× Œmodname”NŒ classname”Njj )�”}”j ]”jFŒ c.sget_fc”†”asbuh1hhjñubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjó h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjñubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj}ubjC)�”}”(hŒ3int (*set)(struct super_block*, struct fs_context*)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj& h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hj4 h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ubjI)�”}”(hŒset”h]”hŒset”…”�”}”(hjN h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hj\ h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hji h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjv h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hj” h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‘ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j– Œmodname”NŒ classname”Njj )�”}”j ]”jFŒ c.sget_fc”†”asbuh1hhj ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj² h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ubj¯)�”}”(hjW¦h]”hŒ,”…”�”}”(hj¿ h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌ h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÚ h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ubh)�”}”(hhh]”jI)�”}”(hŒ fs_context”h]”hŒ fs_context”…”�”}”(hjø h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjõ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jú Œmodname”NŒ classname”Njj )�”}”j ]”jFŒ c.sget_fc”†”asbuh1hhj ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hj# h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj}ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjh²hh³jh´M ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjh²hh³jh´M ubah}”(h]”jþah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jh´M hjh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒFind or create a superblock”h]”hŒFind or create a superblock”…”�”}”(hjL h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M hjI h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjh²hh³jh´M ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jd jšjd j›‰jœ‰j�‰uh1jh²hhjwh³Nh´NubjŸ)�”}”(hXç**Parameters** ``struct fs_context *fc`` Filesystem context. ``int (*test)(struct super_block *, struct fs_context *)`` Comparison callback ``int (*set)(struct super_block *, struct fs_context *)`` Setup callback **Description** Create a new superblock or find an existing one. The **test** callback is used to find a matching existing superblock. Whether or not the requested parameters in **fc** are taken into account is specific to the **test** callback that is used. They may even be completely ignored. If an extant superblock is matched, it will be returned unless: (1) the namespace the filesystem context **fc** and the extant superblock's namespace differ (2) the filesystem context **fc** has requested that reusing an extant superblock is not allowed In both cases EBUSY will be returned. If no match is made, a new superblock will be allocated and basic initialisation will be performed (s_type, s_fs_info and s_id will be set and the **set** callback will be invoked), the superblock will be published and it will be returned in a partially constructed state with SB_BORN and SB_ACTIVE as yet unset. **Return** On success, an extant or newly created superblock is returned. On failure an error pointer is returned.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjn h]”hŒ Parameters”…”�”}”(hjp h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjl ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mhjh ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ.``struct fs_context *fc`` Filesystem context. ”h]”(jÊ)�”}”(hŒ``struct fs_context *fc``”h]”jÐ)�”}”(hj� h]”hŒstruct fs_context *fc”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj‹ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M hj‡ ubjæ)�”}”(hhh]”hÌ)�”}”(hŒFilesystem context.”h]”hŒFilesystem context.”…”�”}”(hj¦ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¢ h´M hj£ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj‡ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¢ h´M hj„ ubjÄ)�”}”(hŒO``int (*test)(struct super_block *, struct fs_context *)`` Comparison callback ”h]”(jÊ)�”}”(hŒ:``int (*test)(struct super_block *, struct fs_context *)``”h]”jÐ)�”}”(hjÆ h]”hŒ6int (*test)(struct super_block *, struct fs_context *)”…”�”}”(hjÈ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÄ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´MhjÀ ubjæ)�”}”(hhh]”hÌ)�”}”(hŒComparison callback”h]”hŒComparison callback”…”�”}”(hjß h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÛ h´MhjÜ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÀ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÛ h´Mhj„ ubjÄ)�”}”(hŒI``int (*set)(struct super_block *, struct fs_context *)`` Setup callback ”h]”(jÊ)�”}”(hŒ9``int (*set)(struct super_block *, struct fs_context *)``”h]”jÐ)�”}”(hjÿ h]”hŒ5int (*set)(struct super_block *, struct fs_context *)”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjý ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mhjù ubjæ)�”}”(hhh]”hÌ)�”}”(hŒSetup callback”h]”hŒSetup callback”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j h´Mhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjù ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j h´Mhj„ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjh ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj: h]”hŒ Description”…”�”}”(hj< h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj8 ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mhjh ubhÌ)�”}”(hŒ0Create a new superblock or find an existing one.”h]”hŒ0Create a new superblock or find an existing one.”…”�”}”(hjP h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mhjh ubhÌ)�”}”(hŒæThe **test** callback is used to find a matching existing superblock. Whether or not the requested parameters in **fc** are taken into account is specific to the **test** callback that is used. They may even be completely ignored.”h]”(hŒThe ”…”�”}”(hj_ h²hh³Nh´Nubj©)�”}”(hŒ**test**”h]”hŒtest”…”�”}”(hjg h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj_ ubhŒe callback is used to find a matching existing superblock. Whether or not the requested parameters in ”…”�”}”(hj_ h²hh³Nh´Nubj©)�”}”(hŒ**fc**”h]”hŒfc”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj_ ubhŒ+ are taken into account is specific to the ”…”�”}”(hj_ h²hh³Nh´Nubj©)�”}”(hŒ**test**”h]”hŒtest”…”�”}”(hj‹ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj_ ubhŒ< callback that is used. They may even be completely ignored.”…”�”}”(hj_ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mhjh ubhÌ)�”}”(hŒ?If an extant superblock is matched, it will be returned unless:”h]”hŒ?If an extant superblock is matched, it will be returned unless:”…”�”}”(hj¤ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mhjh ubj9W)�”}”(hhh]”(j–E)�”}”(hŒYthe namespace the filesystem context **fc** and the extant superblock's namespace differ ”h]”hÌ)�”}”(hŒXthe namespace the filesystem context **fc** and the extant superblock's namespace differ”h]”(hŒ%the namespace the filesystem context ”…”�”}”(hjº h²hh³Nh´Nubj©)�”}”(hŒ**fc**”h]”hŒfc”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjº ubhŒ/ and the extant superblock’s namespace differ”…”�”}”(hjº h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mhj¶ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•Ehj³ ubj–E)�”}”(hŒ]the filesystem context **fc** has requested that reusing an extant superblock is not allowed ”h]”hÌ)�”}”(hŒ\the filesystem context **fc** has requested that reusing an extant superblock is not allowed”h]”(hŒthe filesystem context ”…”�”}”(hjå h²hh³Nh´Nubj©)�”}”(hŒ**fc**”h]”hŒfc”…”�”}”(hjí h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjå ubhŒ? has requested that reusing an extant superblock is not allowed”…”�”}”(hjå h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mhjá ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•Ehj³ ubeh}”(h]”h ]”h"]”h$]”h&]”juWjvWjwWjÊ¥jxWjó¥uh1j8Whjh ubhÌ)�”}”(hŒ%In both cases EBUSY will be returned.”h]”hŒ%In both cases EBUSY will be returned.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mhjh ubhÌ)�”}”(hX8If no match is made, a new superblock will be allocated and basic initialisation will be performed (s_type, s_fs_info and s_id will be set and the **set** callback will be invoked), the superblock will be published and it will be returned in a partially constructed state with SB_BORN and SB_ACTIVE as yet unset.”h]”(hŒ“If no match is made, a new superblock will be allocated and basic initialisation will be performed (s_type, s_fs_info and s_id will be set and the ”…”�”}”(hj! h²hh³Nh´Nubj©)�”}”(hŒ**set**”h]”hŒset”…”�”}”(hj) h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj! ubhŒž callback will be invoked), the superblock will be published and it will be returned in a partially constructed state with SB_BORN and SB_ACTIVE as yet unset.”…”�”}”(hj! h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M!hjh ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjD h]”hŒReturn”…”�”}”(hjF h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjB ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M'hjh ubhÌ)�”}”(hŒgOn success, an extant or newly created superblock is returned. On failure an error pointer is returned.”h]”hŒgOn success, an extant or newly created superblock is returned. On failure an error pointer is returned.”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M(hjh ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjwh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ iterate_supers_type (C function)”Œc.iterate_supers_type”hNt”auh1hýhjwh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒlvoid iterate_supers_type (struct file_system_type *type, void (*f)(struct super_block *, void *), void *arg)”h]”j)�”}”(hŒivoid iterate_supers_type(struct file_system_type *type, void (*f)(struct super_block*, void*), void *arg)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‰ h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj… h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´MÍubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜ h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj… h²hh³j— h´MÍubjC)�”}”(hŒiterate_supers_type”h]”jI)�”}”(hŒiterate_supers_type”h]”hŒiterate_supers_type”…”�”}”(hjª h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¦ ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj… h²hh³j— h´MÍubj=)�”}”(hŒQ(struct file_system_type *type, void (*f)(struct super_block*, void*), void *arg)”h]”(jC)�”}”(hŒstruct file_system_type *type”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÆ h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓ h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ubh)�”}”(hhh]”jI)�”}”(hŒfile_system_type”h]”hŒfile_system_type”…”�”}”(hjä h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjá ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jæ Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj¬ sbŒc.iterate_supers_type”†”asbuh1hhj ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ubjI)�”}”(hŒtype”h]”hŒtype”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¾ ubjC)�”}”(hŒ%void (*f)(struct super_block*, void*)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj4ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj4ubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj4ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj4ubjI)�”}”(hŒf”h]”hŒf”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj4ubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj4ubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj4ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj4ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj4ubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj±ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¶Œmodname”NŒ classname”Njj )�”}”j ]”jŒc.iterate_supers_type”†”asbuh1hhj4ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj4ubj¯)�”}”(hjW¦h]”hŒ,”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj4ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj4ubj�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj4ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj4ubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¾ ubjC)�”}”(hŒ void *arg”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj)ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj)ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj)ubjI)�”}”(hŒarg”h]”hŒarg”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¾ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj… h²hh³j— h´MÍubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj� h²hh³j— h´MÍubah}”(h]”j| ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j— h´MÍhj~ h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ+call function for superblocks of given type”h]”hŒ+call function for superblocks of given type”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´MÍhj}h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj~ h²hh³j— h´MÍubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j˜jšj˜j›‰jœ‰j�‰uh1jh²hhjwh³Nh´NubjŸ)�”}”(hX$**Parameters** ``struct file_system_type *type`` fs type ``void (*f)(struct super_block *, void *)`` function to call ``void *arg`` argument to pass to it **Description** Scans the superblock list and calls given function, passing it locked superblock and given argument.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj¢h]”hŒ Parameters”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´MÑhjœubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ*``struct file_system_type *type`` fs type ”h]”(jÊ)�”}”(hŒ!``struct file_system_type *type``”h]”jÐ)�”}”(hjÁh]”hŒstruct file_system_type *type”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´MÎhj»ubjæ)�”}”(hhh]”hÌ)�”}”(hŒfs type”h]”hŒfs type”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÖh´MÎhj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÖh´MÎhj¸ubjÄ)�”}”(hŒ=``void (*f)(struct super_block *, void *)`` function to call ”h]”(jÊ)�”}”(hŒ+``void (*f)(struct super_block *, void *)``”h]”jÐ)�”}”(hjúh]”hŒ'void (*f)(struct super_block *, void *)”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjøubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´MÏhjôubjæ)�”}”(hhh]”hÌ)�”}”(hŒfunction to call”h]”hŒfunction to call”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´MÏhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jh´MÏhj¸ubjÄ)�”}”(hŒ%``void *arg`` argument to pass to it ”h]”(jÊ)�”}”(hŒ ``void *arg``”h]”jÐ)�”}”(hj3h]”hŒ void *arg”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´MÐhj-ubjæ)�”}”(hhh]”hÌ)�”}”(hŒargument to pass to it”h]”hŒargument to pass to it”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jHh´MÐhjIubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jHh´MÐhj¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjœubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjnh]”hŒ Description”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjlubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´MÒhjœubjÁ™)�”}”(hŒdScans the superblock list and calls given function, passing it locked superblock and given argument.”h]”hÌ)�”}”(hŒdScans the superblock list and calls given function, passing it locked superblock and given argument.”h]”hŒdScans the superblock list and calls given function, passing it locked superblock and given argument.”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´MÑhj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀ™h³j–h´MÑhjœubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjwh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œget_anon_bdev (C function)”Œc.get_anon_bdev”hNt”auh1hýhjwh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒint get_anon_bdev (dev_t *p)”h]”j)�”}”(hŒint get_anon_bdev(dev_t *p)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¹h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Möubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¹h²hh³jËh´MöubjC)�”}”(hŒ get_anon_bdev”h]”jI)�”}”(hŒ get_anon_bdev”h]”hŒ get_anon_bdev”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÚubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj¹h²hh³jËh´Möubj=)�”}”(hŒ (dev_t *p)”h]”jC)�”}”(hŒdev_t *p”h]”(h)�”}”(hhh]”jI)�”}”(hŒdev_t”h]”hŒdev_t”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjúubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÿŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjàsbŒc.get_anon_bdev”†”asbuh1hhjöubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjöubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjöubjI)�”}”(hj»h]”hŒp”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjöubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjòubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj¹h²hh³jËh´Möubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjµh²hh³jËh´Möubah}”(h]”j°ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jËh´Möhj²h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ=Allocate a block device for filesystems which don't have one.”h]”hŒ?Allocate a block device for filesystems which don’t have one.”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Möhj^h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj²h²hh³jËh´Möubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jyjšjyj›‰jœ‰j�‰uh1jh²hhjwh³Nh´NubjŸ)�”}”(hXc**Parameters** ``dev_t *p`` Pointer to a dev_t. **Description** Filesystems which don't use real block devices can call this function to allocate a virtual block device. **Context** Any context. Frequently called while holding sb_lock. **Return** 0 on success, -EMFILE if there are no anonymous bdevs left or -ENOMEM if memory allocation failed.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjƒh]”hŒ Parameters”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Múhj}ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ!``dev_t *p`` Pointer to a dev_t. ”h]”(jÊ)�”}”(hŒ ``dev_t *p``”h]”jÐ)�”}”(hj¢h]”hŒdev_t *p”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M÷hjœubjæ)�”}”(hhh]”hÌ)�”}”(hŒPointer to a dev_t.”h]”hŒPointer to a dev_t.”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j·h´M÷hj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjœubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j·h´M÷hj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj}ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÝh]”hŒ Description”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mùhj}ubhÌ)�”}”(hŒiFilesystems which don't use real block devices can call this function to allocate a virtual block device.”h]”hŒkFilesystems which don’t use real block devices can call this function to allocate a virtual block device.”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Møhj}ubhÌ)�”}”(hŒ **Context**”h]”j©)�”}”(hjh]”hŒContext”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mûhj}ubhÌ)�”}”(hŒ6Any context. Frequently called while holding sb_lock.”h]”hŒ6Any context. Frequently called while holding sb_lock.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mühj}ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj+h]”hŒReturn”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mþhj}ubhÌ)�”}”(hŒb0 on success, -EMFILE if there are no anonymous bdevs left or -ENOMEM if memory allocation failed.”h]”hŒb0 on success, -EMFILE if there are no anonymous bdevs left or -ENOMEM if memory allocation failed.”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mýhj}ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjwh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œget_tree_super (C function)”Œc.get_tree_super”hNt”auh1hýhjwh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ¤int get_tree_super (struct fs_context *fc, int (*test)(struct super_block *, struct fs_context *), int (*fill_super)(struct super_block *sb, struct fs_context *fc))”h]”j)�”}”(hŒ¡int get_tree_super(struct fs_context *fc, int (*test)(struct super_block*, struct fs_context*), int (*fill_super)(struct super_block *sb, struct fs_context *fc))”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjlh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M:ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjlh²hh³j~h´M:ubjC)�”}”(hŒget_tree_super”h]”jI)�”}”(hŒget_tree_super”h]”hŒget_tree_super”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjlh²hh³j~h´M:ubj=)�”}”(hŒ�(struct fs_context *fc, int (*test)(struct super_block*, struct fs_context*), int (*fill_super)(struct super_block *sb, struct fs_context *fc))”h]”(jC)�”}”(hŒstruct fs_context *fc”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj©ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj©ubh)�”}”(hhh]”jI)�”}”(hŒ fs_context”h]”hŒ fs_context”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÈubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÍŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj“sbŒc.get_tree_super”†”asbuh1hhj©ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj©ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj©ubjI)�”}”(hŒfc”h]”hŒfc”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¥ubjC)�”}”(hŒ4int (*test)(struct super_block*, struct fs_context*)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjubjI)�”}”(hŒtest”h]”hŒtest”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj˜ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j�Œmodname”NŒ classname”Njj )�”}”j ]”jçŒc.get_tree_super”†”asbuh1hhjubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjubj¯)�”}”(hjW¦h]”hŒ,”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjubh)�”}”(hhh]”jI)�”}”(hŒ fs_context”h]”hŒ fs_context”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjüubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jŒmodname”NŒ classname”Njj )�”}”j ]”jçŒc.get_tree_super”†”asbuh1hhjubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¥ubjC)�”}”(hŒ@int (*fill_super)(struct super_block *sb, struct fs_context *fc)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj>ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj>ubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj>ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj>ubjI)�”}”(hŒ fill_super”h]”hŒ fill_super”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj>ubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj>ubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj>ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj>ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj>ubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj»ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÀŒmodname”NŒ classname”Njj )�”}”j ]”jçŒc.get_tree_super”†”asbuh1hhj>ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj>ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj>ubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj>ubj¯)�”}”(hjW¦h]”hŒ,”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj>ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj>ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj>ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj>ubh)�”}”(hhh]”jI)�”}”(hŒ fs_context”h]”hŒ fs_context”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj;ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j@Œmodname”NŒ classname”Njj )�”}”j ]”jçŒc.get_tree_super”†”asbuh1hhj>ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj>ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj>ubjI)�”}”(hŒfc”h]”hŒfc”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj>ubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¥ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjlh²hh³j~h´M:ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjhh²hh³j~h´M:ubah}”(h]”jcah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j~h´M:hjeh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ4Get a superblock, optionally sharing an existing one”h]”hŒ4Get a superblock, optionally sharing an existing one”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M:hj«h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjeh²hh³j~h´M:ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÆjšjÆj›‰jœ‰j�‰uh1jh²hhjwh³Nh´NubjŸ)�”}”(hXC**Parameters** ``struct fs_context *fc`` The filesystem context holding the parameters ``int (*test)(struct super_block *, struct fs_context *)`` Comparison function to find a matching existing superblock, or NULL ``int (*fill_super)(struct super_block *sb, struct fs_context *fc)`` Helper to initialise a new superblock **Description** If **test** is non-NULL and matches an existing superblock, that superblock is reused; otherwise a new anonymous superblock is created and initialised with **fill_super**. Passing NULL for **test** always creates a new superblock.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÐh]”hŒ Parameters”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M>hjÊubj¿)�”}”(hhh]”(jÄ)�”}”(hŒH``struct fs_context *fc`` The filesystem context holding the parameters ”•h]”(jÊ)�”}”(hŒ``struct fs_context *fc``”h]”jÐ)�”}”(hjïh]”hŒstruct fs_context *fc”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjíubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M;hjéubjæ)�”}”(hhh]”hÌ)�”}”(hŒ-The filesystem context holding the parameters”h]”hŒ-The filesystem context holding the parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´M;hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjéubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jh´M;hjæubjÄ)�”}”(hŒ``int (*test)(struct super_block *, struct fs_context *)`` Comparison function to find a matching existing superblock, or NULL ”h]”(jÊ)�”}”(hŒ:``int (*test)(struct super_block *, struct fs_context *)``”h]”jÐ)�”}”(hj(h]”hŒ6int (*test)(struct super_block *, struct fs_context *)”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M<hj"ubjæ)�”}”(hhh]”hÌ)�”}”(hŒCComparison function to find a matching existing superblock, or NULL”h]”hŒCComparison function to find a matching existing superblock, or NULL”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j=h´M<hj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j=h´M<hjæubjÄ)�”}”(hŒk``int (*fill_super)(struct super_block *sb, struct fs_context *fc)`` Helper to initialise a new superblock ”h]”(jÊ)�”}”(hŒD``int (*fill_super)(struct super_block *sb, struct fs_context *fc)``”h]”jÐ)�”}”(hjah]”hŒ@int (*fill_super)(struct super_block *sb, struct fs_context *fc)”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M=hj[ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ%Helper to initialise a new superblock”h]”hŒ%Helper to initialise a new superblock”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jvh´M=hjwubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jvh´M=hjæubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÊubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjœh]”hŒ Description”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjšubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M?hjÊubhÌ)�”}”(hŒçIf **test** is non-NULL and matches an existing superblock, that superblock is reused; otherwise a new anonymous superblock is created and initialised with **fill_super**. Passing NULL for **test** always creates a new superblock.”h]”(hŒIf ”…”�”}”(hj²h²hh³Nh´Nubj©)�”}”(hŒ**test**”h]”hŒtest”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj²ubhŒ‘ is non-NULL and matches an existing superblock, that superblock is reused; otherwise a new anonymous superblock is created and initialised with ”…”�”}”(hj²h²hh³Nh´Nubj©)�”}”(hŒ**fill_super**”h]”hŒ fill_super”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj²ubhŒ. Passing NULL for ”…”�”}”(hj²h²hh³Nh´Nubj©)�”}”(hŒ**test**”h]”hŒtest”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj²ubhŒ! always creates a new superblock.”…”�”}”(hj²h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M>hjÊubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjwh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œsget_dev (C function)”Œ c.sget_dev”hNt”auh1hýhjwh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ@struct super_block * sget_dev (struct fs_context *fc, dev_t dev)”h]”j)�”}”(hŒ>struct super_block *sget_dev(struct fs_context *fc, dev_t dev)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´MŒubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjh²hh³j$h´MŒubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j8Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒsget_dev”sbŒ c.sget_dev”†”asbuh1hhjh²hh³j$h´MŒubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjh²hh³j$h´MŒubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjh²hh³j$h´MŒubjC)�”}”(hŒsget_dev”h]”jI)�”}”(hjTh]”hŒsget_dev”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjrubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjh²hh³j$h´MŒubj=)�”}”(hŒ"(struct fs_context *fc, dev_t dev)”h]”(jC)�”}”(hŒstruct fs_context *fc”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�ubh)�”}”(hhh]”jI)�”}”(hŒ fs_context”h]”hŒ fs_context”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¬ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j±Œmodname”NŒ classname”Njj )�”}”j ]”jRŒ c.sget_dev”†”asbuh1hhj�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj�ubjI)�”}”(hŒfc”h]”hŒfc”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj‰ubjC)�”}”(hŒ dev_t dev”h]”(h)�”}”(hhh]”jI)�”}”(hŒdev_t”h]”hŒdev_t”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jŒmodname”NŒ classname”Njj )�”}”j ]”jRŒ c.sget_dev”†”asbuh1hhjýubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjýubjI)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj‰ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjh²hh³j$h´MŒubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjh²hh³j$h´MŒubah}”(h]”j ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j$h´MŒhj h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ,Find or create a superblock by device number”h]”hŒ,Find or create a superblock by device number”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´MŒhjWh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj h²hh³j$h´MŒubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jrjšjrj›‰jœ‰j�‰uh1jh²hhjwh³Nh´NubjŸ)�”}”(hXÐ**Parameters** ``struct fs_context *fc`` Filesystem context. ``dev_t dev`` device number **Description** Find or create a superblock using the provided device number that will be stored in fc->sget_key. If an extant superblock is matched, then that will be returned with an elevated reference count that the caller must transfer or discard. If no match is made, a new superblock will be allocated and basic initialisation will be performed (s_type, s_fs_info, s_id, s_dev will be set). The superblock will be published and it will be returned in a partially constructed state with SB_BORN and SB_ACTIVE as yet unset. **Return** an existing or newly created superblock on success, an error pointer on failure.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj|h]”hŒ Parameters”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjzubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M�hjvubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ.``struct fs_context *fc`` Filesystem context. ”h]”(jÊ)�”}”(hŒ``struct fs_context *fc``”h]”jÐ)�”}”(hj›h]”hŒstruct fs_context *fc”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M�hj•ubjæ)�”}”(hhh]”hÌ)�”}”(hŒFilesystem context.”h]”hŒFilesystem context.”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j°h´M�hj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j°h´M�hj’ubjÄ)�”}”(hŒ``dev_t dev`` device number ”h]”(jÊ)�”}”(hŒ ``dev_t dev``”h]”jÐ)�”}”(hjÔh]”hŒ dev_t dev”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´MŽhjÎubjæ)�”}”(hhh]”hÌ)�”}”(hŒ device number”h]”hŒ device number”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jéh´MŽhjêubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jéh´MŽhj’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjvubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M�hjvubhÌ)�”}”(hŒaFind or create a superblock using the provided device number that will be stored in fc->sget_key.”h]”hŒaFind or create a superblock using the provided device number that will be stored in fc->sget_key.”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M�hjvubhÌ)�”}”(hŒ‰If an extant superblock is matched, then that will be returned with an elevated reference count that the caller must transfer or discard.”h]”hŒ‰If an extant superblock is matched, then that will be returned with an elevated reference count that the caller must transfer or discard.”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M’hjvubhÌ)�”}”(hXIf no match is made, a new superblock will be allocated and basic initialisation will be performed (s_type, s_fs_info, s_id, s_dev will be set). The superblock will be published and it will be returned in a partially constructed state with SB_BORN and SB_ACTIVE as yet unset.”h]”hXIf no match is made, a new superblock will be allocated and basic initialisation will be performed (s_type, s_fs_info, s_id, s_dev will be set). The superblock will be published and it will be returned in a partially constructed state with SB_BORN and SB_ACTIVE as yet unset.”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M•hjvubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjTh]”hŒReturn”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjRubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M›hjvubhÌ)�”}”(hŒPan existing or newly created superblock on success, an error pointer on failure.”h]”hŒPan existing or newly created superblock on success, an error pointer on failure.”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mœhjvubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjwh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ%fs_bdev_file_open_by_dev (C function)”Œc.fs_bdev_file_open_by_dev”hNt”auh1hýhjwh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒistruct file * fs_bdev_file_open_by_dev (dev_t dev, blk_mode_t mode, void *holder, struct super_block *sb)”h]”j)�”}”(hŒgstruct file *fs_bdev_file_open_by_dev(dev_t dev, blk_mode_t mode, void *holder, struct super_block *sb)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj•h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M_ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj•h²hh³j¦h´M_ubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjµubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jºŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒfs_bdev_file_open_by_dev”sbŒc.fs_bdev_file_open_by_dev”†”asbuh1hhj•h²hh³j¦h´M_ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj•h²hh³j¦h´M_ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj•h²hh³j¦h´M_ubjC)�”}”(hŒfs_bdev_file_open_by_dev”h]”jI)�”}”(hjÖh]”hŒfs_bdev_file_open_by_dev”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjôubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj•h²hh³j¦h´M_ubj=)�”}”(hŒB(dev_t dev, blk_mode_t mode, void *holder, struct super_block *sb)”h]”(jC)�”}”(hŒ dev_t dev”h]”(h)�”}”(hhh]”jI)�”}”(hŒdev_t”h]”hŒdev_t”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jŒmodname”NŒ classname”Njj )�”}”j ]”jÔŒc.fs_bdev_file_open_by_dev”†”asbuh1hhjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjubjI)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj ubjC)�”}”(hŒblk_mode_t mode”h]”(h)�”}”(hhh]”jI)�”}”(hŒ blk_mode_t”h]”hŒ blk_mode_t”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj[ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j`Œmodname”NŒ classname”Njj )�”}”j ]”jÔŒc.fs_bdev_file_open_by_dev”†”asbuh1hhjWubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjWubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj ubjC)�”}”(hŒ void *holder”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjŸubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjŸubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjŸubjI)�”}”(hŒholder”h]”hŒholder”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŸubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj ubjC)�”}”(hŒstruct super_block *sb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjáubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjáubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jŒmodname”NŒ classname”Njj )�”}”j ]”jÔŒc.fs_bdev_file_open_by_dev”†”asbuh1hhjáubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjáubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjáubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjáubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj•h²hh³j¦h´M_ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj‘h²hh³j¦h´M_ubah}”(h]”jŒah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j¦h´M_hjŽh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ.claim a block device on behalf of a superblock”h]”hŒ.claim a block device on behalf of a superblock”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M_hjch²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjŽh²hh³j¦h´M_ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j~jšj~j›‰jœ‰j�‰uh1jh²hhjwh³Nh´NubjŸ)�”}”(hXj**Parameters** ``dev_t dev`` block device number ``blk_mode_t mode`` open mode ``void *holder`` block-layer exclusivity token (a superblock, or the file_system_type when the device may be shared by several superblocks of that type) ``struct super_block *sb`` superblock to drive fs_holder_ops events for **Description** Open **dev** with :c:type:`fs_holder_ops` and register that **sb** uses it, so device removal/sync/freeze/thaw are propagated to **sb** (and any other superblock sharing **dev**). Must be paired with fs_bdev_file_release(). **Return** an opened block-device file or an ERR_PTR().”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjˆh]”hŒ Parameters”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mchj‚ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ"``dev_t dev`` block device number ”h]”(jÊ)�”}”(hŒ ``dev_t dev``”h]”jÐ)�”}”(hj§h]”hŒ dev_t dev”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M`hj¡ubjæ)�”}”(hhh]”hÌ)�”}”(hŒblock device number”h]”hŒblock device number”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¼h´M`hj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¼h´M`hjžubjÄ)�”}”(hŒ``blk_mode_t mode`` open mode ”h]”(jÊ)�”}”(hŒ``blk_mode_t mode``”h]”jÐ)�”}”(hjàh]”hŒblk_mode_t mode”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´MahjÚubjæ)�”}”(hhh]”hÌ)�”}”(hŒ open mode”h]”hŒ open mode”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jõh´Mahjöubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jõh´MahjžubjÄ)�”}”(hŒ™``void *holder`` block-layer exclusivity token (a superblock, or the file_system_type when the device may be shared by several superblocks of that type) ”h]”(jÊ)�”}”(hŒ``void *holder``”h]”jÐ)�”}”(hjh]”hŒ void *holder”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mchjubjæ)�”}”(hhh]”hÌ)�”}”(hŒ‡block-layer exclusivity token (a superblock, or the file_system_type when the device may be shared by several superblocks of that type)”h]”hŒ‡block-layer exclusivity token (a superblock, or the file_system_type when the device may be shared by several superblocks of that type)”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mbhj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j.h´MchjžubjÄ)�”}”(hŒH``struct super_block *sb`` superblock to drive fs_holder_ops events for ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hjSh]”hŒstruct super_block *sb”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjQubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´MdhjMubjæ)�”}”(hhh]”hÌ)�”}”(hŒ,superblock to drive fs_holder_ops events for”h]”hŒ,superblock to drive fs_holder_ops events for”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jhh´Mdhjiubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjMubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jhh´Mdhjžubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj‚ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjŽh]”hŒ Description”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mfhj‚ubhÌ)�”}”(hŒàOpen **dev** with :c:type:`fs_holder_ops` and register that **sb** uses it, so device removal/sync/freeze/thaw are propagated to **sb** (and any other superblock sharing **dev**). Must be paired with fs_bdev_file_release().”h]”(hŒOpen ”…”�”}”(hj¤h²hh³Nh´Nubj©)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¤ubhŒ with ”…”�”}”(hj¤h²hh³Nh´Nubh)�”}”(hŒ:c:type:`fs_holder_ops`”h]”jÐ)�”}”(hjÀh]”hŒ fs_holder_ops”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”(Œxref”j“Œc-type”eh"]”h$]”h&]”uh1jÏhj¾ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œfilesystems/api-summary”Œ refdomain”j“Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jj )�”}”j ]”sbŒ reftarget”Œ fs_holder_ops”uh1hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mehj¤ubhŒ and register that ”…”�”}”(hj¤h²hh³Nh´Nubj©)�”}”(hŒ**sb**”h]”hŒsb”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¤ubhŒ? uses it, so device removal/sync/freeze/thaw are propagated to ”…”�”}”(hj¤h²hh³Nh´Nubj©)�”}”(hŒ**sb**”h]”hŒsb”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¤ubhŒ# (and any other superblock sharing ”…”�”}”(hj¤h²hh³Nh´Nubj©)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¤ubhŒ/). Must be paired with fs_bdev_file_release().”…”�”}”(hj¤h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jãh´Mehj‚ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj&h]”hŒReturn”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mihj‚ubhÌ)�”}”(hŒ,an opened block-device file or an ERR_PTR().”h]”hŒ,an opened block-device file or an ERR_PTR().”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mjhj‚ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjwh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ&fs_bdev_file_open_by_path (C function)”Œc.fs_bdev_file_open_by_path”hNt”auh1hýhjwh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒqstruct file * fs_bdev_file_open_by_path (const char *path, blk_mode_t mode, void *holder, struct super_block *sb)”h]”j)�”}”(hŒostruct file *fs_bdev_file_open_by_path(const char *path, blk_mode_t mode, void *holder, struct super_block *sb)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjgh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M€ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjgh²hh³jxh´M€ubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jŒŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒfs_bdev_file_open_by_path”sbŒc.fs_bdev_file_open_by_path”†”asbuh1hhjgh²hh³jxh´M€ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjgh²hh³jxh´M€ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjgh²hh³jxh´M€ubjC)�”}”(hŒfs_bdev_file_open_by_path”h]”jI)�”}”(hj¨h]”hŒfs_bdev_file_open_by_path”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÆubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjgh²hh³jxh´M€ubj=)�”}”(hŒI(const char *path, blk_mode_t mode, void *holder, struct super_block *sb)”h]”(jC)�”}”(hŒconst char *path”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjáubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjáubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjáubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjáubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjáubjI)�”}”(hŒpath”h]”hŒpath”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjáubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÝubjC)�”}”(hŒblk_mode_t mode”h]”(h)�”}”(hhh]”jI)�”}”(hŒ blk_mode_t”h]”hŒ blk_mode_t”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjBubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jGŒmodname”NŒ classname”Njj )�”}”j ]”j¦Œc.fs_bdev_file_open_by_path”†”asbuh1hhj>ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj>ubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÝubjC)�”}”(hŒ void *holder”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj†ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj†ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj†ubjI)�”}”(hŒholder”h]”hŒholder”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj†ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÝubjC)�”}”(hŒstruct super_block *sb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÈubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÈubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjçubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jìŒmodname”NŒ classname”Njj )�”}”j ]”j¦Œc.fs_bdev_file_open_by_path”†”asbuh1hhjÈubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÈubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÈubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÈubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÝubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjgh²hh³jxh´M€ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjch²hh³jxh´M€ubah}”(h]”j^ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jxh´M€hj`h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ.claim a block device on behalf of a superblock”h]”hŒ.claim a block device on behalf of a superblock”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M€hjJh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj`h²hh³jxh´M€ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jejšjej›‰jœ‰j�‰uh1jh²hhjwh³Nh´NubjŸ)�”}”(hXŽ**Parameters** ``const char *path`` path to the block device ``blk_mode_t mode`` open mode ``void *holder`` block-layer exclusivity token (a superblock, or the file_system_type when the device may be shared by several superblocks of that type) ``struct super_block *sb`` superblock to drive fs_holder_ops events for **Description** Open the block device at **path** with :c:type:`fs_holder_ops` and register that **sb** uses it, so device removal/sync/freeze/thaw are propagated to **sb** (and any other superblock sharing the device). Must be paired with fs_bdev_file_release(). **Return** an opened block-device file or an ERR_PTR().”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjoh]”hŒ Parameters”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjmubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M„hjiubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ.``const char *path`` path to the block device ”h]”(jÊ)�”}”(hŒ``const char *path``”h]”jÐ)�”}”(hjŽh]”hŒconst char *path”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M�hjˆubjæ)�”}”(hhh]”hÌ)�”}”(hŒpath to the block device”h]”hŒpath to the block device”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j£h´M�hj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j£h´M�hj…ubjÄ)�”}”(hŒ``blk_mode_t mode`` open mode ”h]”(jÊ)�”}”(hŒ``blk_mode_t mode``”h]”jÐ)�”}”(hjÇh]”hŒblk_mode_t mode”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M‚hjÁubjæ)�”}”(hhh]”hÌ)�”}”(hŒ open mode”h]”hŒ open mode”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÜh´M‚hjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÜh´M‚hj…ubjÄ)�”}”(hŒ™``void *holder`` block-layer exclusivity token (a superblock, or the file_system_type when the device may be shared by several superblocks of that type) ”h]”(jÊ)�”}”(hŒ``void *holder``”h]”jÐ)�”}”(hj h]”hŒ void *holder”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M„hjúubjæ)�”}”(hhh]”hÌ)�”}”(hŒ‡block-layer exclusivity token (a superblock, or the file_system_type when the device may be shared by several superblocks of that type)”h]”hŒ‡block-layer exclusivity token (a superblock, or the file_system_type when the device may be shared by several superblocks of that type)”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mƒhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjúubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j h´M„hj…ubjÄ)�”}”(hŒH``struct super_block *sb`` superblock to drive fs_holder_ops events for ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hj: h]”hŒstruct super_block *sb”…”�”}”(hj< h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj8 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M…hj4 ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ,superblock to drive fs_holder_ops events for”h]”hŒ,superblock to drive fs_holder_ops events for”…”�”}”(hjS h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jO h´M…hjP ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj4 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jO h´M…hj…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjiubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hju h]”hŒ Description”…”�”}”(hjw h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjs ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M‡hjiubhÌ)�”}”(hŒøOpen the block device at **path** with :c:type:`fs_holder_ops` and register that **sb** uses it, so device removal/sync/freeze/thaw are propagated to **sb** (and any other superblock sharing the device). Must be paired with fs_bdev_file_release().”h]”(hŒOpen the block device at ”…”�”}”(hj‹ h²hh³Nh´Nubj©)�”}”(hŒ**path**”h]”hŒpath”…”�”}”(hj“ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‹ ubhŒ with ”…”�”}”(hj‹ h²hh³Nh´Nubh)�”}”(hŒ:c:type:`fs_holder_ops`”h]”jÐ)�”}”(hj§ h]”hŒ fs_holder_ops”…”�”}”(hj© h²hh³Nh´Nubah}”(h]”h ]”(jÌj“Œc-type”eh"]”h$]”h&]”uh1jÏhj¥ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jØŒ refdomain”j“Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jjÞjጠfs_holder_ops”uh1hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M†hj‹ ubhŒ and register that ”…”�”}”(hj‹ h²hh³Nh´Nubj©)�”}”(hŒ**sb**”h]”hŒsb”…”�”}”(hjÉ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‹ ubhŒ? uses it, so device removal/sync/freeze/thaw are propagated to ”…”�”}”(hj‹ h²hh³Nh´Nubj©)�”}”(hŒ**sb**”h]”hŒsb”…”�”}”(hjÛ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‹ ubhŒ\ (and any other superblock sharing the device). Must be paired with fs_bdev_file_release().”…”�”}”(hj‹ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÄ h´M†hjiubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjõ h]”hŒReturn”…”�”}”(hj÷ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjó ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M‹hjiubhÌ)�”}”(hŒ,an opened block-device file or an ERR_PTR().”h]”hŒ,an opened block-device file or an ERR_PTR().”…”�”}”(hj !h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´MŒhjiubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjwh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œfs_bdev_unregister (C function)”Œc.fs_bdev_unregister”hNt”auh1hýhjwh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒHvoid fs_bdev_unregister (struct file *bdev_file, struct super_block *sb)”h]”j)�”}”(hŒGvoid fs_bdev_unregister(struct file *bdev_file, struct super_block *sb)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj:!h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj6!h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M¢ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI!h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj6!h²hh³jH!h´M¢ubjC)�”}”(hŒfs_bdev_unregister”h]”jI)�”}”(hŒfs_bdev_unregister”h]”hŒfs_bdev_unregister”…”�”}”(hj[!h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjW!ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj6!h²hh³jH!h´M¢ubj=)�”}”(hŒ0(struct file *bdev_file, struct super_block *sb)”h]”(jC)�”}”(hŒstruct file *bdev_file”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjw!h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjs!ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„!h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjs!ubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj•!h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj’!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j—!Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj]!sbŒc.fs_bdev_unregister”†”asbuh1hhjs!ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµ!h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjs!ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÃ!h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjs!ubjI)�”}”(hŒ bdev_file”h]”hŒ bdev_file”…”�”}”(hjÐ!h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjs!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjo!ubjC)�”}”(hŒstruct super_block *sb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjé!h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjå!ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö!h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjå!ubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j "Œmodname”NŒ classname”Njj )�”}”j ]”j±!Œc.fs_bdev_unregister”†”asbuh1hhjå!ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%"h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjå!ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj3"h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjå!ubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hj@"h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjå!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjo!ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj6!h²hh³jH!h´M¢ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj2!h²hh³jH!h´M¢ubah}”(h]”j-!ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jH!h´M¢hj/!h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ+drop a superblock's claim on a block device”h]”hŒ-drop a superblock’s claim on a block device”…”�”}”(hjj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M¢hjg"h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj/!h²hh³jH!h´M¢ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j‚"jšj‚"j›‰jœ‰j�‰uh1jh²hhjwh³Nh´NubjŸ)�”}”(hX(**Parameters** ``struct file *bdev_file`` file returned by fs_bdev_file_open_by_{dev,path}() ``struct super_block *sb`` superblock the device was claimed for **Description** The inverse of fs_bdev_register(): drop one claim on the {dev, **sb**} entry (the last claim unregisters it) without closing the device. A caller that must act on the still-open device between unregistering and closing - e.g. re-allow freezing one denied for a membership change - pairs this with bdev_fput(). fs_bdev_file_release() is the common unregister-and-close.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjŒ"h]”hŒ Parameters”…”�”}”(hjŽ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjŠ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M¦hj†"ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒN``struct file *bdev_file`` file returned by fs_bdev_file_open_by_{dev,path}() ”h]”(jÊ)�”}”(hŒ``struct file *bdev_file``”h]”jÐ)�”}”(hj«"h]”hŒstruct file *bdev_file”…”�”}”(hj­"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj©"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M£hj¥"ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ2file returned by fs_bdev_file_open_by_{dev,path}()”h]”hŒ2file returned by fs_bdev_file_open_by_{dev,path}()”…”�”}”(hjÄ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÀ"h´M£hjÁ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¥"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÀ"h´M£hj¢"ubjÄ)�”}”(hŒA``struct super_block *sb`` superblock the device was claimed for ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hjä"h]”hŒstruct super_block *sb”…”�”}”(hjæ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjâ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M¤hjÞ"ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ%superblock the device was claimed for”h]”hŒ%superblock the device was claimed for”…”�”}”(hjý"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jù"h´M¤hjú"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÞ"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jù"h´M¤hj¢"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj†"ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj#h]”hŒ Description”…”�”}”(hj!#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M¦hj†"ubhÌ)�”}”(hXrThe inverse of fs_bdev_register(): drop one claim on the {dev, **sb**} entry (the last claim unregisters it) without closing the device. A caller that must act on the still-open device between unregistering and closing - e.g. re-allow freezing one denied for a membership change - pairs this with bdev_fput(). fs_bdev_file_release() is the common unregister-and-close.”h]”(hŒ?The inverse of fs_bdev_register(): drop one claim on the {dev, ”…”�”}”(hj5#h²hh³Nh´Nubj©)�”}”(hŒ**sb**”h]”hŒsb”…”�”}”(hj=#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj5#ubhX-} entry (the last claim unregisters it) without closing the device. A caller that must act on the still-open device between unregistering and closing - e.g. re-allow freezing one denied for a membership change - pairs this with bdev_fput(). fs_bdev_file_release() is the common unregister-and-close.”…”�”}”(hj5#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M¥hj†"ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjwh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ!fs_bdev_file_release (C function)”Œc.fs_bdev_file_release”hNt”auh1hýhjwh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒJvoid fs_bdev_file_release (struct file *bdev_file, struct super_block *sb)”h]”j)�”}”(hŒIvoid fs_bdev_file_release(struct file *bdev_file, struct super_block *sb)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjv#h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjr#h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M¹ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…#h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjr#h²hh³j„#h´M¹ubjC)�”}”(hŒfs_bdev_file_release”h]”jI)�”}”(hŒfs_bdev_file_release”h]”hŒfs_bdev_file_release”…”�”}”(hj—#h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj“#ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjr#h²hh³j„#h´M¹ubj=)�”}”(hŒ0(struct file *bdev_file, struct super_block *sb)”h]”(jC)�”}”(hŒstruct file *bdev_file”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj³#h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¯#ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀ#h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¯#ubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjÑ#h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÎ#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÓ#Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj™#sbŒc.fs_bdev_file_release”†”asbuh1hhj¯#ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ#h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¯#ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÿ#h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¯#ubjI)�”}”(hŒ bdev_file”h]”hŒ bdev_file”…”�”}”(hj $h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¯#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj«#ubjC)�”}”(hŒstruct super_block *sb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj%$h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj!$ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2$h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj!$ubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hjC$h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj@$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jE$Œmodname”NŒ classname”Njj )�”}”j ]”jí#Œc.fs_bdev_file_release”†”asbuh1hhj!$ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hja$h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj!$ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjo$h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj!$ubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hj|$h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj!$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj«#ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjr#h²hh³j„#h´M¹ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjn#h²hh³j„#h´M¹ubah}”(h]”ji#ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j„#h´M¹hjk#h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ/release a block device claimed for a superblock”h]”hŒ/release a block device claimed for a superblock”…”�”}”(hj¦$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M¹hj£$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjk#h²hh³j„#h´M¹ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j¾$jšj¾$j›‰jœ‰j�‰uh1jh²hhjwh³Nh´NubjŸ)�”}”(hŒö**Parameters** ``struct file *bdev_file`` file returned by fs_bdev_file_open_by_{dev,path}() ``struct super_block *sb`` superblock the device was claimed for **Description** Unregister the {dev, **sb**} entry, then close the block device.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÈ$h]”hŒ Parameters”…”�”}”(hjÊ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÆ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M½hjÂ$ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒN``struct file *bdev_file`` file returned by fs_bdev_file_open_by_{dev,path}() ”h]”(jÊ)�”}”(hŒ``struct file *bdev_file``”h]”jÐ)�”}”(hjç$h]”hŒstruct file *bdev_file”…”�”}”(hjé$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjå$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mºhjá$ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ2file returned by fs_bdev_file_open_by_{dev,path}()”h]”hŒ2file returned by fs_bdev_file_open_by_{dev,path}()”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jü$h´Mºhjý$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjá$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jü$h´MºhjÞ$ubjÄ)�”}”(hŒA``struct super_block *sb`` superblock the device was claimed for ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hj %h]”hŒstruct super_block *sb”…”�”}”(hj"%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M»hj%ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ%superblock the device was claimed for”h]”hŒ%superblock the device was claimed for”…”�”}”(hj9%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j5%h´M»hj6%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j5%h´M»hjÞ$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÂ$ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj[%h]”hŒ Description”…”�”}”(hj]%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjY%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M½hjÂ$ubhÌ)�”}”(hŒ@Unregister the {dev, **sb**} entry, then close the block device.”h]”(hŒUnregister the {dev, ”…”�”}”(hjq%h²hh³Nh´Nubj©)�”}”(hŒ**sb**”h]”hŒsb”…”�”}”(hjy%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjq%ubhŒ%} entry, then close the block device.”…”�”}”(hjq%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M¼hjÂ$ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjwh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ get_tree_bdev_flags (C function)”Œc.get_tree_bdev_flags”hNt”auh1hýhjwh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ…int get_tree_bdev_flags (struct fs_context *fc, int (*fill_super)(struct super_block *sb, struct fs_context *fc), unsigned int flags)”h]”j)�”}”(hŒ„int get_tree_bdev_flags(struct fs_context *fc, int (*fill_super)(struct super_block *sb, struct fs_context *fc), unsigned int flags)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj²%h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj®%h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Møubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁ%h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj®%h²hh³jÀ%h´MøubjC)�”}”(hŒget_tree_bdev_flags”h]”jI)�”}”(hŒget_tree_bdev_flags”h]”hŒget_tree_bdev_flags”…”�”}”(hjÓ%h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÏ%ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj®%h²hh³jÀ%h´Møubj=)�”}”(hŒm(struct fs_context *fc, int (*fill_super)(struct super_block *sb, struct fs_context *fc), unsigned int flags)”h]”(jC)�”}”(hŒstruct fs_context *fc”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjï%h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjë%ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjü%h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjë%ubh)�”}”(hhh]”jI)�”}”(hŒ fs_context”h]”hŒ fs_context”…”�”}”(hj &h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj &ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j&Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÕ%sbŒc.get_tree_bdev_flags”†”asbuh1hhjë%ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-&h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjë%ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj;&h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjë%ubjI)�”}”(hŒfc”h]”hŒfc”…”�”}”(hjH&h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjë%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjç%ubjC)�”}”(hŒ@int (*fill_super)(struct super_block *sb, struct fs_context *fc)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hja&h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj]&ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo&h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj]&ubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hj}&h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj]&ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjŠ&h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj]&ubjI)�”}”(hŒ fill_super”h]”hŒ fill_super”…”�”}”(hj—&h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj]&ubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hj¥&h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj]&ubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hj²&h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj]&ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¿&h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj]&ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌ&h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj]&ubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hjÝ&h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÚ&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jß&Œmodname”NŒ classname”Njj )�”}”j ]”j)&Œc.get_tree_bdev_flags”†”asbuh1hhj]&ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû&h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj]&ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj 'h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj]&ubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj]&ubj¯)�”}”(hjW¦h]”hŒ,”…”�”}”(hj$'h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj]&ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1'h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj]&ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj?'h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj]&ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjL'h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj]&ubh)�”}”(hhh]”jI)�”}”(hŒ fs_context”h]”hŒ fs_context”…”�”}”(hj]'h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjZ'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j_'Œmodname”NŒ classname”Njj )�”}”j ]”j)&Œc.get_tree_bdev_flags”†”asbuh1hhj]&ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{'h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj]&ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj‰'h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj]&ubjI)�”}”(hŒfc”h]”hŒfc”…”�”}”(hj–'h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj]&ubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hj¤'h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj]&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjç%ubjC)�”}”(hŒunsigned int flags”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¼'h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¸'ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊ'h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¸'ubj�)�”}”(hŒint”h]”hŒint”…”�”}”(hjØ'h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¸'ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ'h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¸'ubjI)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjô'h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¸'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjç%ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj®%h²hh³jÀ%h´Møubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjª%h²hh³jÀ%h´Møubah}”(h]”j¥%ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÀ%h´Møhj§%h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ/Get a superblock based on a single block device”h]”hŒ/Get a superblock based on a single block device”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Møhj(h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj§%h²hh³jÀ%h´Møubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j6(jšj6(j›‰jœ‰j�‰uh1jh²hhjwh³Nh´NubjŸ)�”}”(hŒ÷**Parameters** ``struct fs_context *fc`` The filesystem context holding the parameters ``int (*fill_super)(struct super_block *sb, struct fs_context *fc)`` Helper to initialise a new superblock ``unsigned int flags`` GET_TREE_BDEV_* flags”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj@(h]”hŒ Parameters”…”�”}”(hjB(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj>(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mühj:(ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒH``struct fs_context *fc`` The filesystem context holding the parameters ”h]”(jÊ)�”}”(hŒ``struct fs_context *fc``”h]”jÐ)�”}”(hj_(h]”hŒstruct fs_context *fc”…”�”}”(hja(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj](ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´MùhjY(ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ-The filesystem context holding the parameters”h]”hŒ-The filesystem context holding the parameters”…”�”}”(hjx(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jt(h´Mùhju(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjY(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jt(h´MùhjV(ubjÄ)�”}”(hŒk``int (*fill_super)(struct super_block *sb, struct fs_context *fc)`` Helper to initialise a new superblock ”h]”(jÊ)�”}”(hŒD``int (*fill_super)(struct super_block *sb, struct fs_context *fc)``”h]”jÐ)�”}”(hj˜(h]”hŒ@int (*fill_super)(struct super_block *sb, struct fs_context *fc)”…”�”}”(hjš(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj–(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Múhj’(ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ%Helper to initialise a new superblock”h]”hŒ%Helper to initialise a new superblock”…”�”}”(hj±(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j­(h´Múhj®(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj’(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j­(h´MúhjV(ubjÄ)�”}”(hŒ,``unsigned int flags`` GET_TREE_BDEV_* flags”h]”(jÊ)�”}”(hŒ``unsigned int flags``”h]”jÐ)�”}”(hjÑ(h]”hŒunsigned int flags”…”�”}”(hjÓ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÏ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´MühjË(ubjæ)�”}”(hhh]”hÌ)�”}”(hŒGET_TREE_BDEV_* flags”h]”hŒGET_TREE_BDEV_* flags”…”�”}”(hjê(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mûhjç(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjË(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jæ(h´MühjV(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj:(ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjwh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œget_tree_bdev (C function)”Œc.get_tree_bdev”hNt”auh1hýhjwh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒgint get_tree_bdev (struct fs_context *fc, int (*fill_super)(struct super_block *, struct fs_context *))”h]”j)�”}”(hŒdint get_tree_bdev(struct fs_context *fc, int (*fill_super)(struct super_block*, struct fs_context*))”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj+)h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj')h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M,ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:)h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj')h²hh³j9)h´M,ubjC)�”}”(hŒ get_tree_bdev”h]”jI)�”}”(hŒ get_tree_bdev”h]”hŒ get_tree_bdev”…”�”}”(hjL)h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjH)ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj')h²hh³j9)h´M,ubj=)�”}”(hŒS(struct fs_context *fc, int (*fill_super)(struct super_block*, struct fs_context*))”h]”(jC)�”}”(hŒstruct fs_context *fc”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjh)h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjd)ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hju)h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjd)ubh)�”}”(hhh]”jI)�”}”(hŒ fs_context”h]”hŒ fs_context”…”�”}”(hj†)h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjƒ)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jˆ)Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjN)sbŒc.get_tree_bdev”†”asbuh1hhjd)ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦)h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjd)ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj´)h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjd)ubjI)�”}”(hŒfc”h]”hŒfc”…”�”}”(hjÁ)h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjd)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj`)ubjC)�”}”(hŒ:int (*fill_super)(struct super_block*, struct fs_context*)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjÚ)h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÖ)ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjè)h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÖ)ubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hjö)h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÖ)ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÖ)ubjI)�”}”(hŒ fill_super”h]”hŒ fill_super”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÖ)ubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÖ)ubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hj+*h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÖ)ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj8*h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÖ)ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE*h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÖ)ubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hjV*h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjS*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jX*Œmodname”NŒ classname”Njj )�”}”j ]”j¢)Œc.get_tree_bdev”†”asbuh1hhjÖ)ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjt*h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÖ)ubj¯)�”}”(hjW¦h]”hŒ,”…”�”}”(hj�*h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÖ)ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽ*h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÖ)ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjœ*h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÖ)ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©*h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÖ)ubh)�”}”(hhh]”jI)�”}”(hŒ fs_context”h]”hŒ fs_context”…”�”}”(hjº*h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj·*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¼*Œmodname”NŒ classname”Njj )�”}”j ]”j¢)Œc.get_tree_bdev”†”asbuh1hhjÖ)ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjØ*h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÖ)ubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hjå*h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÖ)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj`)ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj')h²hh³j9)h´M,ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj#)h²hh³j9)h´M,ubah}”(h]”j)ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j9)h´M,hj )h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ/Get a superblock based on a single block device”h]”hŒ/Get a superblock based on a single block device”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M,hj +h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj )h²hh³j9)h´M,ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j&+jšj&+j›‰jœ‰j�‰uh1jh²hhjwh³Nh´NubjŸ)�”}”(hŒÃ**Parameters** ``struct fs_context *fc`` The filesystem context holding the parameters ``int (*fill_super)(struct super_block *, struct fs_context *)`` Helper to initialise a new superblock”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj0+h]”hŒ Parameters”…”�”}”(hj2+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj.+ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M0hj*+ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒH``struct fs_context *fc`` The filesystem context holding the parameters ”h]”(jÊ)�”}”(hŒ``struct fs_context *fc``”h]”jÐ)�”}”(hjO+h]”hŒstruct fs_context *fc”…”�”}”(hjQ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjM+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M-hjI+ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ-The filesystem context holding the parameters”h]”hŒ-The filesystem context holding the parameters”…”�”}”(hjh+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jd+h´M-hje+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjI+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jd+h´M-hjF+ubjÄ)�”}”(hŒf``int (*fill_super)(struct super_block *, struct fs_context *)`` Helper to initialise a new superblock”h]”(jÊ)�”}”(hŒ@``int (*fill_super)(struct super_block *, struct fs_context *)``”h]”jÐ)�”}”(hjˆ+h]”hŒah"]”h$]”h&]”uh1j1hjÞ+h²hh³jð+h´MGubjC)�”}”(hŒ vfs_get_tree”h]”jI)�”}”(hŒ vfs_get_tree”h]”hŒ vfs_get_tree”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÿ+ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÞ+h²hh³jð+h´MGubj=)�”}”(hŒ(struct fs_context *fc)”h]”jC)�”}”(hŒstruct fs_context *fc”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj,ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,,h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj,ubh)�”}”(hhh]”jI)�”}”(hŒ fs_context”h]”hŒ fs_context”…”�”}”(hj=,h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj:,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j?,Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj,sbŒc.vfs_get_tree”†”asbuh1hhj,ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj],h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj,ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjk,h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj,ubjI)�”}”(hŒfc”h]”hŒfc”…”�”}”(hjx,h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj,ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÞ+h²hh³jð+h´MGubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÚ+h²hh³jð+h´MGubah}”(h]”jÕ+ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jð+h´MGhj×+h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒGet the mountable root”h]”hŒGet the mountable root”…”�”}”(hj¢,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´MGhjŸ,h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj×+h²hh³jð+h´MGubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jº,jšjº,j›‰jœ‰j�‰uh1jh²hhjwh³Nh´NubjŸ)�”}”(hX**Parameters** ``struct fs_context *fc`` The superblock configuration context. **Description** The filesystem is invoked to get or create a superblock which can then later be used for mounting. The filesystem places a pointer to the root to be used for mounting in **fc->root**.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÄ,h]”hŒ Parameters”…”�”}”(hjÆ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÂ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´MKhj¾,ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ@``struct fs_context *fc`` The superblock configuration context. ”h]”(jÊ)�”}”(hŒ``struct fs_context *fc``”h]”jÐ)�”}”(hjã,h]”hŒstruct fs_context *fc”…”�”}”(hjå,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjá,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´MHhjÝ,ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ%The superblock configuration context.”h]”hŒ%The superblock configuration context.”…”�”}”(hjü,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jø,h´MHhjù,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÝ,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jø,h´MHhjÚ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj¾,ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj-h]”hŒ Description”…”�”}”(hj -h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´MJhj¾,ubhÌ)�”}”(hŒ¸The filesystem is invoked to get or create a superblock which can then later be used for mounting. The filesystem places a pointer to the root to be used for mounting in **fc->root**.”h]”(hŒ«The filesystem is invoked to get or create a superblock which can then later be used for mounting. The filesystem places a pointer to the root to be used for mounting in ”…”�”}”(hj4-h²hh³Nh´Nubj©)�”}”(hŒ **fc->root**”h]”hŒfc->root”…”�”}”(hj<-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj4-ubhŒ.”…”�”}”(hj4-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´MIhj¾,ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjwh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œfreeze_super (C function)”Œc.freeze_super”hNt”auh1hýhjwh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ[int freeze_super (struct super_block *sb, enum freeze_holder who, const void *freeze_owner)”h]”j)�”}”(hŒZint freeze_super(struct super_block *sb, enum freeze_holder who, const void *freeze_owner)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hju-h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjq-h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M^ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„-h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjq-h²hh³jƒ-h´M^ubjC)�”}”(hŒ freeze_super”h]”jI)�”}”(hŒ freeze_super”h]”hŒ freeze_super”…”�”}”(hj–-h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj’-ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjq-h²hh³jƒ-h´M^ubj=)�”}”(hŒJ(struct super_block *sb, enum freeze_holder who, const void *freeze_owner)”h]”(jC)�”}”(hŒstruct super_block *sb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj²-h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj®-ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿-h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj®-ubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hjÐ-h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÍ-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÒ-Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj˜-sbŒc.freeze_super”†”asbuh1hhj®-ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð-h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj®-ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjþ-h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj®-ubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hj .h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj®-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjª-ubjC)�”}”(hŒenum freeze_holder who”h]”(j )�”}”(hj#h]”hŒenum”…”�”}”(hj$.h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj .ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1.h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj .ubh)�”}”(hhh]”jI)�”}”(hŒ freeze_holder”h]”hŒ freeze_holder”…”�”}”(hjB.h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj?.ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jD.Œmodname”NŒ classname”Njj )�”}”j ]”jì-Œc.freeze_super”†”asbuh1hhj .ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`.h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj .ubjI)�”}”(hŒwho”h]”hŒwho”…”�”}”(hjn.h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj .ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjª-ubjC)�”}”(hŒconst void *freeze_owner”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj‡.h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjƒ.ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”.h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjƒ.ubj�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¢.h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjƒ.ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°.h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjƒ.ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¾.h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjƒ.ubjI)�”}”(hŒ freeze_owner”h]”hŒ freeze_owner”…”�”}”(hjË.h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjƒ.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjª-ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjq-h²hh³jƒ-h´M^ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjm-h²hh³jƒ-h´M^ubah}”(h]”jh-ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jƒ-h´M^hjj-h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ8lock the filesystem and force it into a consistent state”h]”hŒ8lock the filesystem and force it into a consistent state”…”�”}”(hjõ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M^hjò.h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjj-h²hh³jƒ-h´M^ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j /jšj /j›‰jœ‰j�‰uh1jh²hhjwh³Nh´NubjŸ)�”}”(hX” **Parameters** ``struct super_block *sb`` the super to lock ``enum freeze_holder who`` context that wants to freeze ``const void *freeze_owner`` owner of the freeze **Description** Syncs the super to make sure the filesystem is consistent and calls the fs's freeze_fs. Subsequent calls to this without first thawing the fs may return -EBUSY. **who** should be: * ``FREEZE_HOLDER_USERSPACE`` if userspace wants to freeze the fs; * ``FREEZE_HOLDER_KERNEL`` if the kernel wants to freeze the fs. * ``FREEZE_MAY_NEST`` whether nesting freeze and thaw requests is allowed. The **who** argument distinguishes between the kernel and userspace trying to freeze the filesystem. Although there cannot be multiple kernel freezes or multiple userspace freezes in effect at any given time, the kernel and userspace can both hold a filesystem frozen. The filesystem remains frozen until there are no kernel or userspace freezes in effect. A filesystem may hold multiple devices and thus a filesystems may be frozen through the block layer via multiple block devices. In this case the request is marked as being allowed to nest by passing FREEZE_MAY_NEST. The filesystem remains frozen until all block devices are unfrozen. If multiple freezes are attempted without FREEZE_MAY_NEST -EBUSY will be returned. During this function, sb->s_writers.frozen goes through these values: SB_UNFROZEN: File system is normal, all writes progress as usual. SB_FREEZE_WRITE: The file system is in the process of being frozen. New writes should be blocked, though page faults are still allowed. We wait for all writes to complete and then proceed to the next stage. SB_FREEZE_PAGEFAULT: Freezing continues. Now also page faults are blocked but internal fs threads can still modify the filesystem (although they should not dirty new pages or inodes), writeback can run etc. After waiting for all running page faults we sync the filesystem which will clean all dirty pages and inodes (no new dirty pages or inodes can be created when sync is running). SB_FREEZE_FS: The file system is frozen. Now all internal sources of fs modification are blocked (e.g. XFS preallocation truncation on inode reclaim). This is usually implemented by blocking new transactions for filesystems that have them and need this additional guard. After all internal writers are finished we call ->freeze_fs() to finish filesystem freezing. Then we transition to SB_FREEZE_COMPLETE state. This state is mostly auxiliary for filesystems to verify they do not modify frozen fs. sb->s_writers.frozen is protected by sb->s_umount. **Return** If the freeze was successful zero is returned. If the freeze failed a negative error code is returned.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj/h]”hŒ Parameters”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mbhj/ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ-``struct super_block *sb`` the super to lock ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hj6/h]”hŒstruct super_block *sb”…”�”}”(hj8/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj4/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M_hj0/ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe super to lock”h]”hŒthe super to lock”…”�”}”(hjO/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jK/h´M_hjL/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj0/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jK/h´M_hj-/ubjÄ)�”}”(hŒ8``enum freeze_holder who`` context that wants to freeze ”h]”(jÊ)�”}”(hŒ``enum freeze_holder who``”h]”jÐ)�”}”(hjo/h]”hŒenum freeze_holder who”…”�”}”(hjq/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjm/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M`hji/ubjæ)�”}”(hhh]”hÌ)�”}”(hŒcontext that wants to freeze”h]”hŒcontext that wants to freeze”…”�”}”(hjˆ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j„/h´M`hj…/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhji/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j„/h´M`hj-/ubjÄ)�”}”(hŒ1``const void *freeze_owner`` owner of the freeze ”h]”(jÊ)�”}”(hŒ``const void *freeze_owner``”h]”jÐ)�”}”(hj¨/h]”hŒconst void *freeze_owner”…”�”}”(hjª/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¦/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mahj¢/ubjæ)�”}”(hhh]”hÌ)�”}”(hŒowner of the freeze”h]”hŒowner of the freeze”…”�”}”(hjÁ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j½/h´Mahj¾/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¢/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j½/h´Mahj-/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj/ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjã/h]”hŒ Description”…”�”}”(hjå/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjá/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mchj/ubhÌ)�”}”(hŒ¡Syncs the super to make sure the filesystem is consistent and calls the fs's freeze_fs. Subsequent calls to this without first thawing the fs may return -EBUSY.”h]”hŒ£Syncs the super to make sure the filesystem is consistent and calls the fs’s freeze_fs. Subsequent calls to this without first thawing the fs may return -EBUSY.”…”�”}”(hjù/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mbhj/ubhÌ)�”}”(hŒá**who** should be: * ``FREEZE_HOLDER_USERSPACE`` if userspace wants to freeze the fs; * ``FREEZE_HOLDER_KERNEL`` if the kernel wants to freeze the fs. * ``FREEZE_MAY_NEST`` whether nesting freeze and thaw requests is allowed.”h]”(j©)�”}”(hŒ**who**”h]”hŒwho”…”�”}”(hj 0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj0ubhŒ should be: * ”…”�”}”(hj0h²hh³Nh´NubjÐ)�”}”(hŒ``FREEZE_HOLDER_USERSPACE``”h]”hŒFREEZE_HOLDER_USERSPACE”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj0ubhŒ( if userspace wants to freeze the fs; * ”…”�”}”(hj0h²hh³Nh´NubjÐ)�”}”(hŒ``FREEZE_HOLDER_KERNEL``”h]”hŒFREEZE_HOLDER_KERNEL”…”�”}”(hj00h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj0ubhŒ) if the kernel wants to freeze the fs. * ”…”�”}”(hj0h²hh³Nh´NubjÐ)�”}”(hŒ``FREEZE_MAY_NEST``”h]”hŒFREEZE_MAY_NEST”…”�”}”(hjB0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj0ubhŒ5 whether nesting freeze and thaw requests is allowed.”…”�”}”(hj0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mfhj/ubhÌ)�”}”(hXfThe **who** argument distinguishes between the kernel and userspace trying to freeze the filesystem. Although there cannot be multiple kernel freezes or multiple userspace freezes in effect at any given time, the kernel and userspace can both hold a filesystem frozen. The filesystem remains frozen until there are no kernel or userspace freezes in effect.”h]”(hŒThe ”…”�”}”(hj[0h²hh³Nh´Nubj©)�”}”(hŒ**who**”h]”hŒwho”…”�”}”(hjc0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj[0ubhX[ argument distinguishes between the kernel and userspace trying to freeze the filesystem. Although there cannot be multiple kernel freezes or multiple userspace freezes in effect at any given time, the kernel and userspace can both hold a filesystem frozen. The filesystem remains frozen until there are no kernel or userspace freezes in effect.”…”�”}”(hj[0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mkhj/ubhÌ)�”}”(hXnA filesystem may hold multiple devices and thus a filesystems may be frozen through the block layer via multiple block devices. In this case the request is marked as being allowed to nest by passing FREEZE_MAY_NEST. The filesystem remains frozen until all block devices are unfrozen. If multiple freezes are attempted without FREEZE_MAY_NEST -EBUSY will be returned.”h]”hXnA filesystem may hold multiple devices and thus a filesystems may be frozen through the block layer via multiple block devices. In this case the request is marked as being allowed to nest by passing FREEZE_MAY_NEST. The filesystem remains frozen until all block devices are unfrozen. If multiple freezes are attempted without FREEZE_MAY_NEST -EBUSY will be returned.”…”�”}”(hj|0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mqhj/ubhÌ)�”}”(hŒEDuring this function, sb->s_writers.frozen goes through these values:”h]”hŒEDuring this function, sb->s_writers.frozen goes through these values:”…”�”}”(hj‹0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mxhj/ubhÌ)�”}”(hŒASB_UNFROZEN: File system is normal, all writes progress as usual.”h]”hŒASB_UNFROZEN: File system is normal, all writes progress as usual.”…”�”}”(hjš0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mzhj/ubhÌ)�”}”(hŒÏSB_FREEZE_WRITE: The file system is in the process of being frozen. New writes should be blocked, though page faults are still allowed. We wait for all writes to complete and then proceed to the next stage.”h]”hŒÏSB_FREEZE_WRITE: The file system is in the process of being frozen. New writes should be blocked, though page faults are still allowed. We wait for all writes to complete and then proceed to the next stage.”…”�”}”(hj©0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M|hj/ubhÌ)�”}”(hXSB_FREEZE_PAGEFAULT: Freezing continues. Now also page faults are blocked but internal fs threads can still modify the filesystem (although they should not dirty new pages or inodes), writeback can run etc. After waiting for all running page faults we sync the filesystem which will clean all dirty pages and inodes (no new dirty pages or inodes can be created when sync is running).”h]”hXSB_FREEZE_PAGEFAULT: Freezing continues. Now also page faults are blocked but internal fs threads can still modify the filesystem (although they should not dirty new pages or inodes), writeback can run etc. After waiting for all running page faults we sync the filesystem which will clean all dirty pages and inodes (no new dirty pages or inodes can be created when sync is running).”…”�”}”(hj¸0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M€hj/ubhÌ)�”}”(hXòSB_FREEZE_FS: The file system is frozen. Now all internal sources of fs modification are blocked (e.g. XFS preallocation truncation on inode reclaim). This is usually implemented by blocking new transactions for filesystems that have them and need this additional guard. After all internal writers are finished we call ->freeze_fs() to finish filesystem freezing. Then we transition to SB_FREEZE_COMPLETE state. This state is mostly auxiliary for filesystems to verify they do not modify frozen fs.”h]”hXòSB_FREEZE_FS: The file system is frozen. Now all internal sources of fs modification are blocked (e.g. XFS preallocation truncation on inode reclaim). This is usually implemented by blocking new transactions for filesystems that have them and need this additional guard. After all internal writers are finished we call ->freeze_fs() to finish filesystem freezing. Then we transition to SB_FREEZE_COMPLETE state. This state is mostly auxiliary for filesystems to verify they do not modify frozen fs.”…”�”}”(hjÇ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M‡hj/ubhÌ)�”}”(hŒ2sb->s_writers.frozen is protected by sb->s_umount.”h]”hŒ2sb->s_writers.frozen is protected by sb->s_umount.”…”�”}”(hjÖ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M�hj/ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjç0h]”hŒReturn”…”�”}”(hjé0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjå0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M‘hj/ubhÌ)�”}”(hŒfIf the freeze was successful zero is returned. If the freeze failed a negative error code is returned.”h]”hŒfIf the freeze was successful zero is returned. If the freeze failed a negative error code is returned.”…”�”}”(hjý0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M’hj/ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjwh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œthaw_super (C function)”Œ c.thaw_super”hNt”auh1hýhjwh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒYint thaw_super (struct super_block *sb, enum freeze_holder who, const void *freeze_owner)”h]”j)�”}”(hŒXint thaw_super(struct super_block *sb, enum freeze_holder who, const void *freeze_owner)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj,1h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj(1h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M, ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;1h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj(1h²hh³j:1h´M, ubjC)�”}”(hŒ thaw_super”h]”jI)�”}”(hŒ thaw_super”h]”hŒ thaw_super”…”�”}”(hjM1h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjI1ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj(1h²hh³j:1h´M, ubj=)�”}”(hŒJ(struct super_block *sb, enum freeze_holder who, const void *freeze_owner)”h]”(jC)�”}”(hŒstruct super_block *sb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hji1h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhje1ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv1h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hje1ubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hj‡1h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj„1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j‰1Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjO1sbŒ c.thaw_super”†”asbuh1hhje1ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§1h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hje1ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjµ1h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hje1ubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hjÂ1h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhje1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhja1ubjC)�”}”(hŒenum freeze_holder who”h]”(j )�”}”(hj#h]”hŒenum”…”�”}”(hjÛ1h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj×1ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjè1h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj×1ubh)�”}”(hhh]”jI)�”}”(hŒ freeze_holder”h]”hŒ freeze_holder”…”�”}”(hjù1h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjö1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jû1Œmodname”NŒ classname”Njj )�”}”j ]”j£1Œ c.thaw_super”†”asbuh1hhj×1ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj×1ubjI)�”}”(hŒwho”h]”hŒwho”…”�”}”(hj%2h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj×1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhja1ubjC)�”}”(hŒconst void *freeze_owner”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj>2h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj:2ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjK2h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj:2ubj�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjY2h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj:2ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg2h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj:2ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hju2h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj:2ubjI)�”}”(hŒ freeze_owner”h]”hŒ freeze_owner”…”�”}”(hj‚2h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj:2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhja1ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj(1h²hh³j:1h´M, ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj$1h²hh³j:1h´M, ubah}”(h]”j1ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j:1h´M, hj!1h²hubjw)�”}”(hhh]”j‘E)�”}”(hhh]”j–E)�”}”(hŒunlock filesystem”h]”hÌ)�”}”(hj±2h]”hŒunlock filesystem”…”�”}”(hj³2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M, hj¯2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•Ehj¬2h²hh³jÀ2h´Nubah}”(h]”h ]”h"]”h$]”h&]”jÏEŒ-”uh1j�Eh³jÀ2h´M, hj©2h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj!1h²hh³j:1h´M, ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j×2jšj×2j›‰jœ‰j�‰uh1jh²hhjwh³Nh´NubjŸ)�”}”(hXç**Parameters** ``struct super_block *sb`` the super to thaw ``enum freeze_holder who`` context that wants to freeze ``const void *freeze_owner`` owner of the freeze **Description** Unlocks the filesystem and marks it writeable again after freeze_super() if there are no remaining freezes on the filesystem. **who** should be: * ``FREEZE_HOLDER_USERSPACE`` if userspace wants to thaw the fs; * ``FREEZE_HOLDER_KERNEL`` if the kernel wants to thaw the fs. * ``FREEZE_MAY_NEST`` whether nesting freeze and thaw requests is allowed A filesystem may hold multiple devices and thus a filesystems may have been frozen through the block layer via multiple block devices. The filesystem remains frozen until all block devices are unfrozen.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjá2h]”hŒ Parameters”…”�”}”(hjã2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjß2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M0 hjÛ2ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ-``struct super_block *sb`` the super to thaw ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hj3h]”hŒstruct super_block *sb”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjþ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M- hjú2ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe super to thaw”h]”hŒthe super to thaw”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j3h´M- hj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjú2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j3h´M- hj÷2ubjÄ)�”}”(hŒ8``enum freeze_holder who`` context that wants to freeze ”h]”(jÊ)�”}”(hŒ``enum freeze_holder who``”h]”jÐ)�”}”(hj93h]”hŒenum freeze_holder who”…”�”}”(hj;3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj73ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M. hj33ubjæ)�”}”(hhh]”hÌ)�”}”(hŒcontext that wants to freeze”h]”hŒcontext that wants to freeze”…”�”}”(hjR3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jN3h´M. hjO3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj33ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jN3h´M. hj÷2ubjÄ)�”}”(hŒ1``const void *freeze_owner`` owner of the freeze ”h]”(jÊ)�”}”(hŒ``const void *freeze_owner``”h]”jÐ)�”}”(hjr3h]”hŒconst void *freeze_owner”…”�”}”(hjt3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjp3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M/ hjl3ubjæ)�”}”(hhh]”hÌ)�”}”(hŒowner of the freeze”h]”hŒowner of the freeze”…”�”}”(hj‹3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‡3h´M/ hjˆ3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjl3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‡3h´M/ hj÷2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÛ2ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj­3h]”hŒ Description”…”�”}”(hj¯3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj«3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M1 hjÛ2ubhÌ)�”}”(hŒ}Unlocks the filesystem and marks it writeable again after freeze_super() if there are no remaining freezes on the filesystem.”h]”hŒ}Unlocks the filesystem and marks it writeable again after freeze_super() if there are no remaining freezes on the filesystem.”…”�”}”(hjÃ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M0 hjÛ2ubhÌ)�”}”(hŒÜ**who** should be: * ``FREEZE_HOLDER_USERSPACE`` if userspace wants to thaw the fs; * ``FREEZE_HOLDER_KERNEL`` if the kernel wants to thaw the fs. * ``FREEZE_MAY_NEST`` whether nesting freeze and thaw requests is allowed”h]”(j©)�”}”(hŒ**who**”h]”hŒwho”…”�”}”(hjÖ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÒ3ubhŒ should be: * ”…”�”}”(hjÒ3h²hh³Nh´NubjÐ)�”}”(hŒ``FREEZE_HOLDER_USERSPACE``”h]”hŒFREEZE_HOLDER_USERSPACE”…”�”}”(hjè3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÒ3ubhŒ& if userspace wants to thaw the fs; * ”…”�”}”(hjÒ3h²hh³Nh´NubjÐ)�”}”(hŒ``FREEZE_HOLDER_KERNEL``”h]”hŒFREEZE_HOLDER_KERNEL”…”�”}”(hjú3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÒ3ubhŒ' if the kernel wants to thaw the fs. * ”…”�”}”(hjÒ3h²hh³Nh´NubjÐ)�”}”(hŒ``FREEZE_MAY_NEST``”h]”hŒFREEZE_MAY_NEST”…”�”}”(hj 4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÒ3ubhŒ4 whether nesting freeze and thaw requests is allowed”…”�”}”(hjÒ3h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M3 hjÛ2ubhÌ)�”}”(hŒÊA filesystem may hold multiple devices and thus a filesystems may have been frozen through the block layer via multiple block devices. The filesystem remains frozen until all block devices are unfrozen.”h]”hŒÊA filesystem may hold multiple devices and thus a filesystems may have been frozen through the block layer via multiple block devices. The filesystem remains frozen until all block devices are unfrozen.”…”�”}”(hj%4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M8 hjÛ2ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjwh²hh³Nh´Nubeh}”(h]”Œregistration-and-superblocks”ah ]”h"]”Œregistration and superblocks”ah$]”h&]”uh1hµhhÛh²hh³hÊh´K$ubh¶)�”}”(hhh]”(h»)�”}”(hŒ File Locks”h]”hŒ File Locks”…”�”}”(hjF4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjC4h²hh³hÊh´K*ubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ%locks_owner_has_blockers (C function)”Œc.locks_owner_has_blockers”hNt”auh1hýhjC4h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒQbool locks_owner_has_blockers (struct file_lock_context *flctx, fl_owner_t owner)”h]”j)�”}”(hŒPbool locks_owner_has_blockers(struct file_lock_context *flctx, fl_owner_t owner)”h]”(j�)�”}”(hj„h]”hŒbool”…”�”}”(hjm4h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hji4h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MMubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{4h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hji4h²hh³jz4h´MMubjC)�”}”(hŒlocks_owner_has_blockers”h]”jI)�”}”(hŒlocks_owner_has_blockers”h]”hŒlocks_owner_has_blockers”…”�”}”(hj�4h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‰4ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhji4h²hh³jz4h´MMubj=)�”}”(hŒ3(struct file_lock_context *flctx, fl_owner_t owner)”h]”(jC)�”}”(hŒstruct file_lock_context *flctx”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj©4h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¥4ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶4h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¥4ubh)�”}”(hhh]”jI)�”}”(hŒfile_lock_context”h]”hŒfile_lock_context”…”�”}”(hjÇ4h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÄ4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÉ4Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj�4sbŒc.locks_owner_has_blockers”†”asbuh1hhj¥4ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç4h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¥4ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjõ4h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¥4ubjI)�”}”(hŒflctx”h]”hŒflctx”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¥4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¡4ubjC)�”}”(hŒfl_owner_t owner”h]”(h)�”}”(hhh]”jI)�”}”(hŒ fl_owner_t”h]”hŒ fl_owner_t”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j 5Œmodname”NŒ classname”Njj )�”}”j ]”jã4Œc.locks_owner_has_blockers”†”asbuh1hhj5ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<5h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj5ubjI)�”}”(hŒowner”h]”hŒowner”…”�”}”(hjJ5h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¡4ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hji4h²hh³jz4h´MMubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhje4h²hh³jz4h´MMubah}”(h]”j`4ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jz4h´MMhjb4h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ Check for blocking lock requests”h]”hŒ Check for blocking lock requests”…”�”}”(hjt5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MMhjq5h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjb4h²hh³jz4h´MMubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jŒ5jšjŒ5j›‰jœ‰j�‰uh1jh²hhjC4h³Nh´NubjŸ)�”}”(hŒá**Parameters** ``struct file_lock_context *flctx`` file lock context ``fl_owner_t owner`` lock owner **Description** Return values: ``true``: **owner** has at least one blocker ``false``: **owner** has no blockers”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj–5h]”hŒ Parameters”…”�”}”(hj˜5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj”5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MQhj�5ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ6``struct file_lock_context *flctx`` file lock context ”h]”(jÊ)�”}”(hŒ#``struct file_lock_context *flctx``”h]”jÐ)�”}”(hjµ5h]”hŒstruct file_lock_context *flctx”…”�”}”(hj·5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj³5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MNhj¯5ubjæ)�”}”(hhh]”hÌ)�”}”(hŒfile lock context”h]”hŒfile lock context”…”�”}”(hjÎ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÊ5h´MNhjË5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¯5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÊ5h´MNhj¬5ubjÄ)�”}”(hŒ ``fl_owner_t owner`` lock owner ”h]”(jÊ)�”}”(hŒ``fl_owner_t owner``”h]”jÐ)�”}”(hjî5h]”hŒfl_owner_t owner”…”�”}”(hjð5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjì5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MOhjè5ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ lock owner”h]”hŒ lock owner”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j6h´MOhj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjè5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j6h´MOhj¬5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj�5ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj)6h]”hŒ Description”…”�”}”(hj+6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj'6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MQhj�5ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ`Return values: ``true``: **owner** has at least one blocker ``false``: **owner** has no blockers”h]”(jÊ)�”}”(hŒReturn values:”h]”hŒReturn values:”…”�”}”(hjF6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MQhjB6ubjæ)�”}”(hhh]”hÌ)�”}”(hŒQ``true``: **owner** has at least one blocker ``false``: **owner** has no blockers”h]”(jÐ)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj\6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjX6ubhŒ: ”…”�”}”(hjX6h²hh³Nh´Nubj©)�”}”(hŒ **owner**”h]”hŒowner”…”�”}”(hjn6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjX6ubhŒ has at least one blocker ”…”�”}”(hjX6h²hh³Nh´NubjÐ)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hj€6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjX6ubhŒ: ”…”�”}”hjX6sbj©)�”}”(hŒ **owner**”h]”hŒowner”…”�”}”(hj’6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjX6ubhŒ has no blockers”…”�”}”(hjX6h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jT6h´MQhjU6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjB6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jT6h´MQhj?6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj�5ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjC4h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œlocks_delete_block (C function)”Œc.locks_delete_block”hNt”auh1hýhjC4h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ1int locks_delete_block (struct file_lock *waiter)”h]”j)�”}”(hŒ0int locks_delete_block(struct file_lock *waiter)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjÜ6h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjØ6h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M>ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjë6h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjØ6h²hh³jê6h´M>ubjC)�”}”(hŒlocks_delete_block”h]”jI)�”}”(hŒlocks_delete_block”h]”hŒlocks_delete_block”…”�”}”(hjý6h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjù6ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjØ6h²hh³jê6h´M>ubj=)�”}”(hŒ(struct file_lock *waiter)”h]”jC)�”}”(hŒstruct file_lock *waiter”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj7ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&7h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj7ubh)�”}”(hhh]”jI)�”}”(hŒ file_lock”h]”hŒ file_lock”…”�”}”(hj77h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj47ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j97Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÿ6sbŒc.locks_delete_block”†”asbuh1hhj7ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW7h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj7ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hje7h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj7ubjI)�”}”(hŒwaiter”h]”hŒwaiter”…”�”}”(hjr7h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj7ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjØ6h²hh³jê6h´M>ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÔ6h²hh³jê6h´M>ubah}”(h]”jÏ6ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jê6h´M>hjÑ6h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒstop waiting for a file lock”h]”hŒstop waiting for a file lock”…”�”}”(hjœ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M>hj™7h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÑ6h²hh³jê6h´M>ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j´7jšj´7j›‰jœ‰j�‰uh1jh²hhjC4h³Nh´NubjŸ)�”}”(hŒœ**Parameters** ``struct file_lock *waiter`` the lock which was waiting **Description** lockd/nfsd need to disconnect the lock while working on it.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj¾7h]”hŒ Parameters”…”�”}”(hjÀ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¼7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MBhj¸7ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ8``struct file_lock *waiter`` the lock which was waiting ”h]”(jÊ)�”}”(hŒ``struct file_lock *waiter``”h]”jÐ)�”}”(hjÝ7h]”hŒstruct file_lock *waiter”…”�”}”(hjß7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÛ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M?hj×7ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe lock which was waiting”h]”hŒthe lock which was waiting”…”�”}”(hjö7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jò7h´M?hjó7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj×7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jò7h´M?hjÔ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj¸7ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj8h]”hŒ Description”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MAhj¸7ubjÁ™)�”}”(hŒ;lockd/nfsd need to disconnect the lock while working on it.”h]”hÌ)�”}”(hj08h]”hŒ;lockd/nfsd need to disconnect the lock while working on it.”…”�”}”(hj28h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M@hj.8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀ™h³j?8h´M@hj¸7ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjC4h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œposix_lock_file (C function)”Œc.posix_lock_file”hNt”auh1hýhjC4h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒYint posix_lock_file (struct file *filp, struct file_lock *fl, struct file_lock *conflock)”h]”j)�”}”(hŒXint posix_lock_file(struct file *filp, struct file_lock *fl, struct file_lock *conflock)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjf8h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjb8h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M¥ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hju8h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjb8h²hh³jt8h´M¥ubjC)�”}”(hŒposix_lock_file”h]”jI)�”}”(hŒposix_lock_file”h]”hŒposix_lock_file”…”�”}”(hj‡8h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjƒ8ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjb8h²hh³jt8h´M¥ubj=)�”}”(hŒE(struct file *filp, struct file_lock *fl, struct file_lock *conflock)”h]”(jC)�”}”(hŒstruct file *filp”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj£8h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjŸ8ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°8h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjŸ8ubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjÁ8h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¾8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÃ8Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj‰8sbŒc.posix_lock_file”†”asbuh1hhjŸ8ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjá8h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjŸ8ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjï8h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjŸ8ubjI)�”}”(hŒfilp”h]”hŒfilp”…”�”}”(hjü8h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŸ8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj›8ubjC)�”}”(hŒstruct file_lock *fl”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj9ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"9h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj9ubh)�”}”(hhh]”jI)�”}”(hŒ file_lock”h]”hŒ file_lock”…”�”}”(hj39h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj09ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j59Œmodname”NŒ classname”Njj )�”}”j ]”jÝ8Œc.posix_lock_file”†”asbuh1hhj9ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ9h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj9ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj_9h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj9ubjI)�”}”(hŒfl”h]”hŒfl”…”�”}”(hjl9h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj›8ubjC)�”}”(hŒstruct file_lock *conflock”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj…9h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj�9ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’9h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�9ubh)�”}”(hhh]”jI)�”}”(hŒ file_lock”h]”hŒ file_lock”…”�”}”(hj£9h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj 9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¥9Œmodname”NŒ classname”Njj )�”}”j ]”jÝ8Œc.posix_lock_file”†”asbuh1hhj�9ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁ9h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�9ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÏ9h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj�9ubjI)�”}”(hŒconflock”h]”hŒconflock”…”�”}”(hjÜ9h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj›8ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjb8h²hh³jt8h´M¥ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj^8h²hh³jt8h´M¥ubah}”(h]”jY8ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jt8h´M¥hj[8h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ"Apply a POSIX-style lock to a file”h]”hŒ"Apply a POSIX-style lock to a file”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M¥hj:h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj[8h²hh³jt8h´M¥ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j:jšj:j›‰jœ‰j�‰uh1jh²hhjC4h³Nh´NubjŸ)�”}”(hX **Parameters** ``struct file *filp`` The file to apply the lock to ``struct file_lock *fl`` The lock to be applied ``struct file_lock *conflock`` Place to return a copy of the conflicting lock, if found. **Description** Add a POSIX style lock to a file. We merge adjacent & overlapping locks whenever possible. POSIX locks are sorted by owner task, then by starting address Note that if called with an FL_EXISTS argument, the caller may determine whether or not a lock was successfully freed by testing the return value for -ENOENT.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj(:h]”hŒ Parameters”…”�”}”(hj*:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj&:ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M©hj":ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ4``struct file *filp`` The file to apply the lock to ”h]”(jÊ)�”}”(hŒ``struct file *filp``”h]”jÐ)�”}”(hjG:h]”hŒstruct file *filp”…”�”}”(hjI:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjE:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M¦hjA:ubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe file to apply the lock to”h]”hŒThe file to apply the lock to”…”�”}”(hj`:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j\:h´M¦hj]:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjA:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j\:h´M¦hj>:ubjÄ)�”}”(hŒ0``struct file_lock *fl`` The lock to be applied ”h]”(jÊ)�”}”(hŒ``struct file_lock *fl``”h]”jÐ)�”}”(hj€:h]”hŒstruct file_lock *fl”…”�”}”(hj‚:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj~:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M§hjz:ubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe lock to be applied”h]”hŒThe lock to be applied”…”�”}”(hj™:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j•:h´M§hj–:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjz:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j•:h´M§hj>:ubjÄ)�”}”(hŒY``struct file_lock *conflock`` Place to return a copy of the conflicting lock, if found. ”h]”(jÊ)�”}”(hŒ``struct file_lock *conflock``”h]”jÐ)�”}”(hj¹:h]”hŒstruct file_lock *conflock”…”�”}”(hj»:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj·:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M¨hj³:ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ9Place to return a copy of the conflicting lock, if found.”h]”hŒ9Place to return a copy of the conflicting lock, if found.”…”�”}”(hjÒ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÎ:h´M¨hjÏ:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj³:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÎ:h´M¨hj>:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj":ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjô:h]”hŒ Description”…”�”}”(hjö:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjò:ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´Mªhj":ubhÌ)�”}”(hŒ™Add a POSIX style lock to a file. We merge adjacent & overlapping locks whenever possible. POSIX locks are sorted by owner task, then by starting address”h]”hŒ™Add a POSIX style lock to a file. We merge adjacent & overlapping locks whenever possible. POSIX locks are sorted by owner task, then by starting address”…”�”}”(hj ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M©hj":ubhÌ)�”}”(hŒžNote that if called with an FL_EXISTS argument, the caller may determine whether or not a lock was successfully freed by testing the return value for -ENOENT.”h]”hŒžNote that if called with an FL_EXISTS argument, the caller may determine whether or not a lock was successfully freed by testing the return value for -ENOENT.”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M­hj":ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjC4h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ$inode_lease_ignore_mask (C function)”Œc.inode_lease_ignore_mask”hNt”auh1hýhjC4h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ1u32 inode_lease_ignore_mask (struct inode *inode)”h]”j)�”}”(hŒ0u32 inode_lease_ignore_mask(struct inode *inode)”h]”(h)�”}”(hhh]”jI)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjK;h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjH;ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jM;Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒinode_lease_ignore_mask”sbŒc.inode_lease_ignore_mask”†”asbuh1hhjD;h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M4ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm;h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjD;h²hh³jl;h´M4ubjC)�”}”(hŒinode_lease_ignore_mask”h]”jI)�”}”(hji;h]”hŒinode_lease_ignore_mask”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj{;ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjD;h²hh³jl;h´M4ubj=)�”}”(hŒ(struct inode *inode)”h]”jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjš;h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj–;ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§;h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj–;ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj¸;h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjµ;ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jº;Œmodname”NŒ classname”Njj )�”}”j ]”jg;Œc.inode_lease_ignore_mask”†”asbuh1hhj–;ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖ;h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj–;ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjä;h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj–;ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjñ;h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj–;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj’;ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjD;h²hh³jl;h´M4ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj@;h²hh³jl;h´M4ubah}”(h]”j;;ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jl;h´M4hj=;h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ7return union of all ignored inode events for this inode”h]”hŒ7return union of all ignored inode events for this inode”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M4hj<h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj=;h²hh³jl;h´M4ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j3<jšj3<j›‰jœ‰j�‰uh1jh²hhjC4h³Nh´NubjŸ)�”}”(hŒ¾**Parameters** ``struct inode *inode`` inode of which to get ignore mask **Description** Walk the list of leases, and return the result of all of their FL_IGN_DIR_* bits or'ed together.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj=<h]”hŒ Parameters”…”�”}”(hj?<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj;<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M8hj7<ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ:``struct inode *inode`` inode of which to get ignore mask ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj\<h]”hŒstruct inode *inode”…”�”}”(hj^<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjZ<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M5hjV<ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ!inode of which to get ignore mask”h]”hŒ!inode of which to get ignore mask”…”�”}”(hju<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jq<h´M5hjr<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjV<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jq<h´M5hjS<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj7<ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj—<h]”hŒ Description”…”�”}”(hj™<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj•<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M7hj7<ubhÌ)�”}”(hŒ`Walk the list of leases, and return the result of all of their FL_IGN_DIR_* bits or'ed together.”h]”hŒbWalk the list of leases, and return the result of all of their FL_IGN_DIR_* bits or’ed together.”…”�”}”(hj­<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M6hj7<ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjC4h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ__break_lease (C function)”Œc.__break_lease”hNt”auh1hýhjC4h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ;int __break_lease (struct inode *inode, unsigned int flags)”h]”j)�”}”(hŒ:int __break_lease(struct inode *inode, unsigned int flags)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjÜ<h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjØ<h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M€ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjë<h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjØ<h²hh³jê<h´M€ubjC)�”}”(hŒ __break_lease”h]”jI)�”}”(hŒ __break_lease”h]”hŒ __break_lease”…”�”}”(hjý<h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjù<ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjØ<h²hh³jê<h´M€ubj=)�”}”(hŒ)(struct inode *inode, unsigned int flags)”h]”(jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj=ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&=h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj=ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj7=h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj4=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j9=Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÿ<sbŒc.__break_lease”†”asbuh1hhj=ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW=h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj=ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hje=h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj=ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjr=h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj=ubjC)�”}”(hŒunsigned int flags”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj‹=h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj‡=ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™=h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‡=ubj�)�”}”(hŒint”h]”hŒint”…”�”}”(hj§=h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj‡=ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµ=h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‡=ubjI)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjÃ=h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‡=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj=ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjØ<h²hh³jê<h´M€ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÔ<h²hh³jê<h´M€ubah}”(h]”jÏ<ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jê<h´M€hjÑ<h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ%revoke all outstanding leases on file”h]”hŒ%revoke all outstanding leases on file”…”�”}”(hjí=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M€hjê=h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÑ<h²hh³jê<h´M€ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j>jšj>j›‰jœ‰j�‰uh1jh²hhjC4h³Nh´NubjŸ)�”}”(hX^**Parameters** ``struct inode *inode`` the inode of the file to return ``unsigned int flags`` LEASE_BREAK_* flags **Description** break_lease (inlined for speed) has checked there already is at least some kind of lock (maybe a lease) on this file. Leases and Delegations are broken on a call to open() or truncate(). Delegations are also broken on any event that would change the ctime. Directory delegations are broken whenever the directory changes (unless the delegation is set up to ignore the event). This function can block waiting for the lease break unless you specify LEASE_BREAK_NONBLOCK.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj>h]”hŒ Parameters”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj >ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M„hj >ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ8``struct inode *inode`` the inode of the file to return ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj.>h]”hŒstruct inode *inode”…”�”}”(hj0>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj,>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M�hj(>ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe inode of the file to return”h]”hŒthe inode of the file to return”…”�”}”(hjG>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jC>h´M�hjD>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj(>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jC>h´M�hj%>ubjÄ)�”}”(hŒ+``unsigned int flags`` LEASE_BREAK_* flags ”h]”(jÊ)�”}”(hŒ``unsigned int flags``”h]”jÐ)�”}”(hjg>h]”hŒunsigned int flags”…”�”}”(hji>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhje>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M‚hja>ubjæ)�”}”(hhh]”hÌ)�”}”(hŒLEASE_BREAK_* flags”h]”hŒLEASE_BREAK_* flags”…”�”}”(hj€>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j|>h´M‚hj}>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhja>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j|>h´M‚hj%>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj >ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj¢>h]”hŒ Description”…”�”}”(hj¤>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj >ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M„hj >ubhÌ)�”}”(hXÔbreak_lease (inlined for speed) has checked there already is at least some kind of lock (maybe a lease) on this file. Leases and Delegations are broken on a call to open() or truncate(). Delegations are also broken on any event that would change the ctime. Directory delegations are broken whenever the directory changes (unless the delegation is set up to ignore the event). This function can block waiting for the lease break unless you specify LEASE_BREAK_NONBLOCK.”h]”hXÔbreak_lease (inlined for speed) has checked there already is at least some kind of lock (maybe a lease) on this file. Leases and Delegations are broken on a call to open() or truncate(). Delegations are also broken on any event that would change the ctime. Directory delegations are broken whenever the directory changes (unless the delegation is set up to ignore the event). This function can block waiting for the lease break unless you specify LEASE_BREAK_NONBLOCK.”…”�”}”(hj¸>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´Mƒhj >ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjC4h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œlease_get_mtime (C function)”Œc.lease_get_mtime”hNt”auh1hýhjC4h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒCvoid lease_get_mtime (struct inode *inode, struct timespec64 *time)”h]”j)�”}”(hŒBvoid lease_get_mtime(struct inode *inode, struct timespec64 *time)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjç>h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjã>h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö>h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjã>h²hh³jõ>h´MubjC)�”}”(hŒlease_get_mtime”h]”jI)�”}”(hŒlease_get_mtime”h]”hŒlease_get_mtime”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj?ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjã>h²hh³jõ>h´Mubj=)�”}”(hŒ.(struct inode *inode, struct timespec64 *time)”h]”(jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj$?h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj ?ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1?h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ?ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjB?h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj??ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jD?Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj ?sbŒc.lease_get_mtime”†”asbuh1hhj ?ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjb?h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ?ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjp?h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ?ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj}?h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj?ubjC)�”}”(hŒstruct timespec64 *time”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj–?h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”u•h1jhj’?ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£?h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj’?ubh)�”}”(hhh]”jI)�”}”(hŒ timespec64”h]”hŒ timespec64”…”�”}”(hj´?h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj±?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¶?Œmodname”NŒ classname”Njj )�”}”j ]”j^?Œc.lease_get_mtime”†”asbuh1hhj’?ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒ?h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj’?ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjà?h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj’?ubjI)�”}”(hŒtime”h]”hŒtime”…”�”}”(hjí?h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj’?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj?ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjã>h²hh³jõ>h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjß>h²hh³jõ>h´Mubah}”(h]”jÚ>ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jõ>h´MhjÜ>h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ5update modified time of an inode with exclusive lease”h]”hŒ5update modified time of an inode with exclusive lease”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´Mhj@h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÜ>h²hh³jõ>h´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j/@jšj/@j›‰jœ‰j�‰uh1jh²hhjC4h³Nh´NubjŸ)�”}”(hXS**Parameters** ``struct inode *inode`` the inode ``struct timespec64 *time`` pointer to a timespec which contains the last modified time **Description** This is to force NFS clients to flush their caches for files with exclusive leases. The justification is that if someone has an exclusive lease, then they could be modifying it.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj9@h]”hŒ Parameters”…”�”}”(hj;@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj7@ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´Mhj3@ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ"``struct inode *inode`` the inode ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjX@h]”hŒstruct inode *inode”…”�”}”(hjZ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjV@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MhjR@ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ the inode”h]”hŒ the inode”…”�”}”(hjq@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jm@h´Mhjn@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjR@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jm@h´MhjO@ubjÄ)�”}”(hŒX``struct timespec64 *time`` pointer to a timespec which contains the last modified time ”h]”(jÊ)�”}”(hŒ``struct timespec64 *time``”h]”jÐ)�”}”(hj‘@h]”hŒstruct timespec64 *time”…”�”}”(hj“@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj�@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´Mhj‹@ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ;pointer to a timespec which contains the last modified time”h]”hŒ;pointer to a timespec which contains the last modified time”…”�”}”(hjª@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¦@h´Mhj§@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj‹@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¦@h´MhjO@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj3@ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÌ@h]”hŒ Description”…”�”}”(hjÎ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÊ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´Mhj3@ubhÌ)�”}”(hŒ²This is to force NFS clients to flush their caches for files with exclusive leases. The justification is that if someone has an exclusive lease, then they could be modifying it.”h]”hŒ²This is to force NFS clients to flush their caches for files with exclusive leases. The justification is that if someone has an exclusive lease, then they could be modifying it.”…”�”}”(hjâ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´Mhj3@ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjC4h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œgeneric_setlease (C function)”Œc.generic_setlease”hNt”auh1hýhjC4h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒWint generic_setlease (struct file *filp, int arg, struct file_lease **flp, void **priv)”h]”j)�”}”(hŒVint generic_setlease(struct file *filp, int arg, struct file_lease **flp, void **priv)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj Ah²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´Móubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Ah²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj Ah²hh³jAh´MóubjC)�”}”(hŒgeneric_setlease”h]”jI)�”}”(hŒgeneric_setlease”h]”hŒgeneric_setlease”…”�”}”(hj2Ah²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj.Aubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj Ah²hh³jAh´Móubj=)�”}”(hŒB(struct file *filp, int arg, struct file_lease **flp, void **priv)”h]”(jC)�”}”(hŒstruct file *filp”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjNAh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjJAubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[Ah²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjJAubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjlAh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjiAubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jnAŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj4AsbŒc.generic_setlease”†”asbuh1hhjJAubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒAh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjJAubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjšAh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjJAubjI)�”}”(hŒfilp”h]”hŒfilp”…”�”}”(hj§Ah²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjJAubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjFAubjC)�”}”(hŒint arg”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjÀAh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¼Aubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎAh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¼AubjI)�”}”(hŒarg”h]”hŒarg”…”�”}”(hjÜAh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¼Aubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjFAubjC)�”}”(hŒstruct file_lease **flp”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjõAh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjñAubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjñAubh)�”}”(hhh]”jI)�”}”(hŒ file_lease”h]”hŒ file_lease”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjBubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jBŒmodname”NŒ classname”Njj )�”}”j ]”jˆAŒc.generic_setlease”†”asbuh1hhjñAubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1Bh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjñAubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj?Bh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjñAubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjLBh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjñAubjI)�”}”(hŒflp”h]”hŒflp”…”�”}”(hjYBh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjñAubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjFAubjC)�”}”(hŒ void **priv”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjrBh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjnBubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€Bh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjnBubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjŽBh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjnBubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj›Bh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjnBubjI)�”}”(hŒpriv”h]”hŒpriv”…”�”}”(hj¨Bh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjnBubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjFAubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj Ah²hh³jAh´Móubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj Ah²hh³jAh´Móubah}”(h]”jAah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jAh´MóhjAh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒsets a lease on an open file”h]”hŒsets a lease on an open file”…”�”}”(hjÒBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MóhjÏBh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjAh²hh³jAh´Móubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jêBjšjêBj›‰jœ‰j�‰uh1jh²hhjC4h³Nh´NubjŸ)�”}”(hXs**Parameters** ``struct file *filp`` file pointer ``int arg`` type of lease to obtain ``struct file_lease **flp`` input - file_lock to use, output - file_lock inserted ``void **priv`` private data for lm_setup (may be NULL if lm_setup doesn't require it) **Description** The (input) flp->fl_lmops->lm_break function is required by break_lease().”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjôBh]”hŒ Parameters”…”�”}”(hjöBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjòBubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M÷hjîBubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ#``struct file *filp`` file pointer ”h]”(jÊ)�”}”(hŒ``struct file *filp``”h]”jÐ)�”}”(hjCh]”hŒstruct file *filp”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjCubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´Môhj Cubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file pointer”h]”hŒ file pointer”…”�”}”(hj,Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j(Ch´Môhj)Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj Cubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j(Ch´Môhj CubjÄ)�”}”(hŒ$``int arg`` type of lease to obtain ”h]”(jÊ)�”}”(hŒ ``int arg``”h]”jÐ)�”}”(hjLCh]”hŒint arg”…”�”}”(hjNCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjJCubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MõhjFCubjæ)�”}”(hhh]”hÌ)�”}”(hŒtype of lease to obtain”h]”hŒtype of lease to obtain”…”�”}”(hjeCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jaCh´MõhjbCubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjFCubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jaCh´Mõhj CubjÄ)�”}”(hŒR``struct file_lease **flp`` input - file_lock to use, output - file_lock inserted ”h]”(jÊ)�”}”(hŒ``struct file_lease **flp``”h]”jÐ)�”}”(hj…Ch]”hŒstruct file_lease **flp”…”�”}”(hj‡Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjƒCubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MöhjCubjæ)�”}”(hhh]”hÌ)�”}”(hŒ5input - file_lock to use, output - file_lock inserted”h]”hŒ5input - file_lock to use, output - file_lock inserted”…”�”}”(hjžCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jšCh´Möhj›Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjCubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jšCh´Möhj CubjÄ)�”}”(hŒW``void **priv`` private data for lm_setup (may be NULL if lm_setup doesn't require it) ”h]”(jÊ)�”}”(hŒ``void **priv``”h]”jÐ)�”}”(hj¾Ch]”hŒ void **priv”…”�”}”(hjÀCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¼Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´Møhj¸Cubjæ)�”}”(hhh]”hÌ)�”}”(hŒFprivate data for lm_setup (may be NULL if lm_setup doesn't require it)”h]”hŒHprivate data for lm_setup (may be NULL if lm_setup doesn’t require it)”…”�”}”(hj×Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M÷hjÔCubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¸Cubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÓCh´Møhj Cubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjîBubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjúCh]”hŒ Description”…”�”}”(hjüCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjøCubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MúhjîBubjÁ™)�”}”(hŒJThe (input) flp->fl_lmops->lm_break function is required by break_lease().”h]”hÌ)�”}”(hŒJThe (input) flp->fl_lmops->lm_break function is required by break_lease().”h]”hŒJThe (input) flp->fl_lmops->lm_break function is required by break_lease().”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MùhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀ™h³j"Dh´MùhjîBubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjC4h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_setlease (C function)”Œc.vfs_setlease”hNt”auh1hýhjC4h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒUint vfs_setlease (struct file *filp, int arg, struct file_lease **lease, void **priv)”h]”j)�”}”(hŒTint vfs_setlease(struct file *filp, int arg, struct file_lease **lease, void **priv)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjIDh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjEDh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MGubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXDh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjEDh²hh³jWDh´MGubjC)�”}”(hŒ vfs_setlease”h]”jI)�”}”(hŒ vfs_setlease”h]”hŒ vfs_setlease”…”�”}”(hjjDh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjfDubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjEDh²hh³jWDh´MGubj=)�”}”(hŒD(struct file *filp, int arg, struct file_lease **lease, void **priv)”h]”(jC)�”}”(hŒstruct file *filp”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj†Dh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj‚Dubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“Dh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‚Dubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj¤Dh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¡Dubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¦DŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjlDsbŒc.vfs_setlease”†”asbuh1hhj‚Dubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄDh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‚Dubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÒDh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj‚DubjI)�”}”(hŒfilp”h]”hŒfilp”…”�”}”(hjßDh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‚Dubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj~DubjC)�”}”(hŒint arg”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjøDh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjôDubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjôDubjI)�”}”(hŒarg”h]”hŒarg”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjôDubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj~DubjC)�”}”(hŒstruct file_lease **lease”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj-Eh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj)Eubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:Eh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj)Eubh)�”}”(hhh]”jI)�”}”(hŒ file_lease”h]”hŒ file_lease”…”�”}”(hjKEh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjHEubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jMEŒmodname”NŒ classname”Njj )�”}”j ]”jÀDŒc.vfs_setlease”†”asbuh1hhj)Eubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiEh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj)Eubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjwEh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj)Eubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj„Eh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj)EubjI)�”}”(hŒlease”h]”hŒlease”…”�”}”(hj‘Eh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj)Eubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj~DubjC)�”}”(hŒ void **priv”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjªEh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¦Eubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸Eh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¦Eubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÆEh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¦Eubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÓEh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¦EubjI)�”}”(hŒpriv”h]”hŒpriv”…”�”}”(hjàEh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¦Eubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj~Dubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjEDh²hh³jWDh´MGubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjADh²hh³jWDh´MGubah}”(h]”jDh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒsets a lease on an open file”h]”hŒsets a lease on an open file”…”�”}”(hj Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MGhjFh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj>Dh²hh³jWDh´MGubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j"Fjšj"Fj›‰jœ‰j�‰uh1jh²hhjC4h³Nh´NubjŸ)�”}”(hXÞ**Parameters** ``struct file *filp`` file pointer ``int arg`` type of lease to obtain ``struct file_lease **lease`` file_lock to use when adding a lease ``void **priv`` private info for lm_setup when adding a lease (may be NULL if lm_setup doesn't require it) **Description** Call this to establish a lease on the file. The "lease" argument is not used for F_UNLCK requests and may be NULL. For commands that set or alter an existing lease, the ``(*lease)->fl_lmops->lm_break`` operation must be set; if not, this function will return -ENOLCK (and generate a scary-looking stack trace). The "priv" pointer is passed directly to the lm_setup function as-is. It may be NULL if the lm_setup operation doesn't require it.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj,Fh]”hŒ Parameters”…”�”}”(hj.Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj*Fubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MKhj&Fubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ#``struct file *filp`` file pointer ”h]”(jÊ)�”}”(hŒ``struct file *filp``”h]”jÐ)�”}”(hjKFh]”hŒstruct file *filp”…”�”}”(hjMFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjIFubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MHhjEFubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file pointer”h]”hŒ file pointer”…”�”}”(hjdFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j`Fh´MHhjaFubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjEFubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j`Fh´MHhjBFubjÄ)�”}”(hŒ$``int arg`` type of lease to obtain ”h]”(jÊ)�”}”(hŒ ``int arg``”h]”jÐ)�”}”(hj„Fh]”hŒint arg”…”�”}”(hj†Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj‚Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MIhj~Fubjæ)�”}”(hhh]”hÌ)�”}”(hŒtype of lease to obtain”h]”hŒtype of lease to obtain”…”�”}”(hj�Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j™Fh´MIhjšFubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj~Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j™Fh´MIhjBFubjÄ)�”}”(hŒC``struct file_lease **lease`` file_lock to use when adding a lease ”h]”(jÊ)�”}”(hŒ``struct file_lease **lease``”h]”jÐ)�”}”(hj½Fh]”hŒstruct file_lease **lease”…”�”}”(hj¿Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj»Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MJhj·Fubjæ)�”}”(hhh]”hÌ)�”}”(hŒ$file_lock to use when adding a lease”h]”hŒ$file_lock to use when adding a lease”…”�”}”(hjÖFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÒFh´MJhjÓFubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj·Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÒFh´MJhjBFubjÄ)�”}”(hŒk``void **priv`` private info for lm_setup when adding a lease (may be NULL if lm_setup doesn't require it) ”h]”(jÊ)�”}”(hŒ``void **priv``”h]”jÐ)�”}”(hjöFh]”hŒ void **priv”…”�”}”(hjøFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjôFubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MLhjðFubjæ)�”}”(hhh]”hÌ)�”}”(hŒZprivate info for lm_setup when adding a lease (may be NULL if lm_setup doesn't require it)”h]”hŒ\private info for lm_setup when adding a lease (may be NULL if lm_setup doesn’t require it)”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MKhj Gubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjðFubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j Gh´MLhjBFubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj&FubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj2Gh]”hŒ Description”…”�”}”(hj4Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj0Gubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MNhj&FubhÌ)�”}”(hX6Call this to establish a lease on the file. The "lease" argument is not used for F_UNLCK requests and may be NULL. For commands that set or alter an existing lease, the ``(*lease)->fl_lmops->lm_break`` operation must be set; if not, this function will return -ENOLCK (and generate a scary-looking stack trace).”h]”(hŒ­Call this to establish a lease on the file. The “leaseâ€� argument is not used for F_UNLCK requests and may be NULL. For commands that set or alter an existing lease, the ”…”�”}”(hjHGh²hh³Nh´NubjÐ)�”}”(hŒ ``(*lease)->fl_lmops->lm_break``”h]”hŒ(*lease)->fl_lmops->lm_break”…”�”}”(hjPGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjHGubhŒm operation must be set; if not, this function will return -ENOLCK (and generate a scary-looking stack trace).”…”�”}”(hjHGh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MMhj&FubhÌ)�”}”(hŒ‚The "priv" pointer is passed directly to the lm_setup function as-is. It may be NULL if the lm_setup operation doesn't require it.”h]”hŒˆThe “privâ€� pointer is passed directly to the lm_setup function as-is. It may be NULL if the lm_setup operation doesn’t require it.”…”�”}”(hjiGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MShj&Fubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjC4h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ"locks_lock_inode_wait (C function)”Œc.locks_lock_inode_wait”hNt”auh1hýhjC4h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒEint locks_lock_inode_wait (struct inode *inode, struct file_lock *fl)”h]”j)�”}”(hŒDint locks_lock_inode_wait(struct inode *inode, struct file_lock *fl)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj˜Gh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj”Gh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MÂubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§Gh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj”Gh²hh³j¦Gh´MÂubjC)�”}”(hŒlocks_lock_inode_wait”h]”jI)�”}”(hŒlocks_lock_inode_wait”h]”hŒlocks_lock_inode_wait”…”�”}”(hj¹Gh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjµGubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj”Gh²hh³j¦Gh´MÂubj=)�”}”(hŒ+(struct inode *inode, struct file_lock *fl)”h]”(jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÕGh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÑGubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâGh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÑGubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjóGh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjðGubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jõGŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj»GsbŒc.locks_lock_inode_wait”†”asbuh1hhjÑGubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÑGubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj!Hh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÑGubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj.Hh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÑGubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÍGubjC)�”}”(hŒstruct file_lock *fl”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjGHh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjCHubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTHh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjCHubh)�”}”(hhh]”jI)�”}”(hŒ file_lock”h]”hŒ file_lock”…”�”}”(hjeHh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjbHubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jgHŒmodname”NŒ classname”Njj )�”}”j ]”jHŒc.locks_lock_inode_wait”†”asbuh1hhjCHubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒHh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjCHubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj‘Hh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjCHubjI)�”}”(hŒfl”h]”hŒfl”…”�”}”(hjžHh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjCHubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÍGubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj”Gh²hh³j¦Gh´MÂubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj�Gh²hh³j¦Gh´MÂubah}”(h]”j‹Gah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j¦Gh´MÂhj�Gh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒApply a lock to an inode”h]”hŒApply a lock to an inode”…”�”}”(hjÈHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MÂhjÅHh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj�Gh²hh³j¦Gh´MÂubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jàHjšjàHj›‰jœ‰j�‰uh1jh²hhjC4h³Nh´NubjŸ)�”}”(hŒÃ**Parameters** ``struct inode *inode`` inode of the file to apply to ``struct file_lock *fl`` The lock to be applied **Description** Apply a POSIX or FLOCK style lock request to an inode.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjêHh]”hŒ Parameters”…”�”}”(hjìHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjèHubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MÆhjäHubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ6``struct inode *inode`` inode of the file to apply to ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj Ih]”hŒstruct inode *inode”…”�”}”(hj Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjIubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MÃhjIubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode of the file to apply to”h]”hŒinode of the file to apply to”…”�”}”(hj"Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jIh´MÃhjIubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjIubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jIh´MÃhjIubjÄ)�”}”(hŒ0``struct file_lock *fl`` The lock to be applied ”h]”(jÊ)�”}”(hŒ``struct file_lock *fl``”h]”jÐ)�”}”(hjBIh]”hŒstruct file_lock *fl”…”�”}”(hjDIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj@Iubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MÄhjah"]”h$]”h&]”uh1j1hj¾Ih²hh³jÐIh´M ubjC)�”}”(hŒ vfs_test_lock”h]”jI)�”}”(hŒ vfs_test_lock”h]”hŒ vfs_test_lock”…”�”}”(hjãIh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjßIubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj¾Ih²hh³jÐIh´M ubj=)�”}”(hŒ)(struct file *filp, struct file_lock *fl)”h]”(jC)�”}”(hŒstruct file *filp”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÿIh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjûIubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Jh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjûIubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjJubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jJŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjåIsbŒc.vfs_test_lock”†”asbuh1hhjûIubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=Jh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjûIubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjKJh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjûIubjI)�”}”(hŒfilp”h]”hŒfilp”…”�”}”(hjXJh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjûIubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj÷IubjC)�”}”(hŒstruct file_lock *fl”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjqJh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjmJubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~Jh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjmJubh)�”}”(hhh]”jI)�”}”(hŒ file_lock”h]”hŒ file_lock”…”�”}”(hj�Jh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŒJubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j‘JŒmodname”NŒ classname”Njj )�”}”j ]”j9JŒc.vfs_test_lock”†”asbuh1hhjmJubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­Jh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjmJubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj»Jh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjmJubjI)�”}”(hŒfl”h]”hŒfl”…”�”}”(hjÈJh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjmJubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj÷Iubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj¾Ih²hh³jÐIh´M ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjºIh²hh³jÐIh´M ubah}”(h]”jµIah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÐIh´M hj·Ih²hubjw)�”}”(hhh]”hÌ)�”}”(hŒtest file byte range lock”h]”hŒtest file byte range lock”…”�”}”(hjòJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M hjïJh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj·Ih²hh³jÐIh´M ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j Kjšj Kj›‰jœ‰j�‰uh1jh²hhjC4h³Nh´NubjŸ)�”}”(hXÀ**Parameters** ``struct file *filp`` The file to test lock for ``struct file_lock *fl`` The byte-range in the file to test; also used to hold result **Description** On entry, **fl** does not contain a lock, but identifies a range (fl_start, fl_end) in the file (c.flc_file), and an owner (c.flc_owner) for whom existing locks should be ignored. c.flc_type and c.flc_flags are ignored. Both fl_lmops and fl_ops in **fl** must be NULL. Returns -ERRNO on failure. Indicates presence of conflicting lock by setting fl->fl_type to something other than F_UNLCK. If vfs_test_lock() does find a lock and return it, the caller must use locks_free_lock() or locks_release_private() on the returned lock.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjKh]”hŒ Parameters”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjKubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M hjKubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ0``struct file *filp`` The file to test lock for ”h]”(jÊ)�”}”(hŒ``struct file *filp``”h]”jÐ)�”}”(hj3Kh]”hŒstruct file *filp”…”�”}”(hj5Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj1Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M hj-Kubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe file to test lock for”h]”hŒThe file to test lock for”…”�”}”(hjLKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jHKh´M hjIKubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj-Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jHKh´M hj*KubjÄ)�”}”(hŒV``struct file_lock *fl`` The byte-range in the file to test; also used to hold result ”h]”(jÊ)�”}”(hŒ``struct file_lock *fl``”h]”jÐ)�”}”(hjlKh]”hŒstruct file_lock *fl”…”�”}”(hjnKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjjKubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M hjfKubjæ)�”}”(hhh]”hÌ)�”}”(hŒfl_type to something other than F_UNLCK.”h]”(hŒ On entry, ”…”�”}”(hj½Kh²hh³Nh´Nubj©)�”}”(hŒ**fl**”h]”hŒfl”…”�”}”(hjÅKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj½KubhŒé does not contain a lock, but identifies a range (fl_start, fl_end) in the file (c.flc_file), and an owner (c.flc_owner) for whom existing locks should be ignored. c.flc_type and c.flc_flags are ignored. Both fl_lmops and fl_ops in ”…”�”}”(hj½Kh²hh³Nh´Nubj©)�”}”(hŒ**fl**”h]”hŒfl”…”�”}”(hj×Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj½KubhŒ‰ must be NULL. Returns -ERRNO on failure. Indicates presence of conflicting lock by setting fl->fl_type to something other than F_UNLCK.”…”�”}”(hj½Kh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M hjKubhÌ)�”}”(hŒ‰If vfs_test_lock() does find a lock and return it, the caller must use locks_free_lock() or locks_release_private() on the returned lock.”h]”hŒ‰If vfs_test_lock() does find a lock and return it, the caller must use locks_free_lock() or locks_release_private() on the returned lock.”…”�”}”(hjðKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M% hjKubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjC4h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_lock_file (C function)”Œc.vfs_lock_file”hNt”auh1hýhjC4h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒeint vfs_lock_file (struct file *filp, unsigned int cmd, struct file_lock *fl, struct file_lock *conf)”h]”j)�”}”(hŒdint vfs_lock_file(struct file *filp, unsigned int cmd, struct file_lock *fl, struct file_lock *conf)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjLh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M¯ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.Lh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjLh²hh³j-Lh´M¯ ubjC)�”}”(hŒ vfs_lock_file”h]”jI)�”}”(hŒ vfs_lock_file”h]”hŒ vfs_lock_file”…”�”}”(hj@Lh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjah"]”h$]”h&]”uh1j1hjXLubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjzLh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjwLubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j|LŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjBLsbŒc.vfs_lock_file”†”asbuh1hhjXLubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšLh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjXLubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¨Lh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjXLubjI)�”}”(hŒfilp”h]”hŒfilp”…”�”}”(hjµLh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjXLubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjTLubjC)�”}”(hŒunsigned int cmd”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÎLh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÊLubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜLh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÊLubj�)�”}”(hŒint”h]”hŒint”…”�”}”(hjêLh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÊLubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøLh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÊLubjI)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÊLubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjTLubjC)�”}”(hŒstruct file_lock *fl”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjMubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,Mh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjMubh)�”}”(hhh]”jI)�”}”(hŒ file_lock”h]”hŒ file_lock”…”�”}”(hj=Mh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj:Mubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j?MŒmodname”NŒ classname”Njj )�”}”j ]”j–LŒc.vfs_lock_file”†”asbuh1hhjMubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[Mh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjMubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjiMh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjMubjI)�”}”(hŒfl”h]”hŒfl”…”�”}”(hjvMh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjMubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjTLubjC)�”}”(hŒstruct file_lock *conf”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj�Mh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj‹Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœMh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‹Mubh)�”}”(hhh]”jI)�”}”(hŒ file_lock”h]”hŒ file_lock”…”�”}”(hj­Mh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjªMubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¯MŒmodname”NŒ classname”Njj )�”}”j ]”j–LŒc.vfs_lock_file”†”asbuh1hhj‹Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËMh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‹Mubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÙMh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj‹MubjI)�”}”(hŒconf”h]”hŒconf”…”�”}”(hjæMh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‹Mubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjTLubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjLh²hh³j-Lh´M¯ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjLh²hh³j-Lh´M¯ ubah}”(h]”jLah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j-Lh´M¯ hjLh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒfile byte range lock”h]”hŒfile byte range lock”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M¯ hj Nh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjLh²hh³j-Lh´M¯ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j(Njšj(Nj›‰jœ‰j�‰uh1jh²hhjC4h³Nh´NubjŸ)�”}”(hX**Parameters** ``struct file *filp`` The file to apply the lock to ``unsigned int cmd`` type of locking operation (F_SETLK, F_GETLK, etc.) ``struct file_lock *fl`` The lock to be applied ``struct file_lock *conf`` Place to return a copy of the conflicting lock, if found. **Description** A caller that doesn't care about the conflicting lock may pass NULL as the final argument. If the filesystem defines a private ->lock() method, then **conf** will be left unchanged; so a caller that cares should initialize it to some acceptable default. To avoid blocking kernel daemons, such as lockd, that need to acquire POSIX locks, the ->lock() interface may return asynchronously, before the lock has been granted or denied by the underlying filesystem, if (and only if) lm_grant is set. Additionally FOP_ASYNC_LOCK in file_operations fop_flags need to be set. Callers expecting ->lock() to return asynchronously will only use F_SETLK, not F_SETLKW; they will set FL_SLEEP if (and only if) the request is for a blocking lock. When ->lock() does return asynchronously, it must return FILE_LOCK_DEFERRED, and call ->lm_grant() when the lock request completes. If the request is for non-blocking lock the file system should return FILE_LOCK_DEFERRED then try to get the lock and call the callback routine with the result. If the request timed out the callback routine will return a nonzero return code and the file system should release the lock. The file system is also responsible to keep a corresponding posix lock when it grants a lock so the VFS can find out which locks are locally held and do the correct lock cleanup when required. The underlying filesystem must not drop the kernel lock or call ->lm_grant() before returning to the caller with a FILE_LOCK_DEFERRED return code.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj2Nh]”hŒ Parameters”…”�”}”(hj4Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj0Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M³ hj,Nubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ4``struct file *filp`` The file to apply the lock to ”h]”(jÊ)�”}”(hŒ``struct file *filp``”h]”jÐ)�”}”(hjQNh]”hŒstruct file *filp”…”�”}”(hjSNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjONubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M° hjKNubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe file to apply the lock to”h]”hŒThe file to apply the lock to”…”�”}”(hjjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jfNh´M° hjgNubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjKNubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jfNh´M° hjHNubjÄ)�”}”(hŒH``unsigned int cmd`` type of locking operation (F_SETLK, F_GETLK, etc.) ”h]”(jÊ)�”}”(hŒ``unsigned int cmd``”h]”jÐ)�”}”(hjŠNh]”hŒunsigned int cmd”…”�”}”(hjŒNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjˆNubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M± hj„Nubjæ)�”}”(hhh]”hÌ)�”}”(hŒ2type of locking operation (F_SETLK, F_GETLK, etc.)”h]”hŒ2type of locking operation (F_SETLK, F_GETLK, etc.)”…”�”}”(hj£Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jŸNh´M± hj Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj„Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jŸNh´M± hjHNubjÄ)�”}”(hŒ0``struct file_lock *fl`` The lock to be applied ”h]”(jÊ)�”}”(hŒ``struct file_lock *fl``”h]”jÐ)�”}”(hjÃNh]”hŒstruct file_lock *fl”…”�”}”(hjÅNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÁNubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M² hj½Nubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe lock to be applied”h]”hŒThe lock to be applied”…”�”}”(hjÜNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jØNh´M² hjÙNubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj½Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jØNh´M² hjHNubjÄ)�”}”(hŒU``struct file_lock *conf`` Place to return a copy of the conflicting lock, if found. ”h]”(jÊ)�”}”(hŒ``struct file_lock *conf``”h]”jÐ)�”}”(hjüNh]”hŒstruct file_lock *conf”…”�”}”(hjþNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjúNubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M³ hjöNubjæ)�”}”(hhh]”hÌ)�”}”(hŒ9Place to return a copy of the conflicting lock, if found.”h]”hŒ9Place to return a copy of the conflicting lock, if found.”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jOh´M³ hjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjöNubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jOh´M³ hjHNubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj,NubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj7Oh]”hŒ Description”…”�”}”(hj9Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj5Oubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´Mµ hj,NubhÌ)�”}”(hŒZA caller that doesn't care about the conflicting lock may pass NULL as the final argument.”h]”hŒ\A caller that doesn’t care about the conflicting lock may pass NULL as the final argument.”…”�”}”(hjMOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M´ hj,NubhÌ)�”}”(hŒ¢If the filesystem defines a private ->lock() method, then **conf** will be left unchanged; so a caller that cares should initialize it to some acceptable default.”h]”(hŒ:If the filesystem defines a private ->lock() method, then ”…”�”}”(hj\Oh²hh³Nh´Nubj©)�”}”(hŒ**conf**”h]”hŒconf”…”�”}”(hjdOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj\OubhŒ` will be left unchanged; so a caller that cares should initialize it to some acceptable default.”…”�”}”(hj\Oh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M· hj,NubhÌ)�”}”(hX8To avoid blocking kernel daemons, such as lockd, that need to acquire POSIX locks, the ->lock() interface may return asynchronously, before the lock has been granted or denied by the underlying filesystem, if (and only if) lm_grant is set. Additionally FOP_ASYNC_LOCK in file_operations fop_flags need to be set.”h]”hX8To avoid blocking kernel daemons, such as lockd, that need to acquire POSIX locks, the ->lock() interface may return asynchronously, before the lock has been granted or denied by the underlying filesystem, if (and only if) lm_grant is set. Additionally FOP_ASYNC_LOCK in file_operations fop_flags need to be set.”…”�”}”(hj}Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M» hj,NubhÌ)�”}”(hXšCallers expecting ->lock() to return asynchronously will only use F_SETLK, not F_SETLKW; they will set FL_SLEEP if (and only if) the request is for a blocking lock. When ->lock() does return asynchronously, it must return FILE_LOCK_DEFERRED, and call ->lm_grant() when the lock request completes. If the request is for non-blocking lock the file system should return FILE_LOCK_DEFERRED then try to get the lock and call the callback routine with the result. If the request timed out the callback routine will return a nonzero return code and the file system should release the lock. The file system is also responsible to keep a corresponding posix lock when it grants a lock so the VFS can find out which locks are locally held and do the correct lock cleanup when required. The underlying filesystem must not drop the kernel lock or call ->lm_grant() before returning to the caller with a FILE_LOCK_DEFERRED return code.”h]”hXšCallers expecting ->lock() to return asynchronously will only use F_SETLK, not F_SETLKW; they will set FL_SLEEP if (and only if) the request is for a blocking lock. When ->lock() does return asynchronously, it must return FILE_LOCK_DEFERRED, and call ->lm_grant() when the lock request completes. If the request is for non-blocking lock the file system should return FILE_LOCK_DEFERRED then try to get the lock and call the callback routine with the result. If the request timed out the callback routine will return a nonzero return code and the file system should release the lock. The file system is also responsible to keep a corresponding posix lock when it grants a lock so the VFS can find out which locks are locally held and do the correct lock cleanup when required. The underlying filesystem must not drop the kernel lock or call ->lm_grant() before returning to the caller with a FILE_LOCK_DEFERRED return code.”…”�”}”(hjŒOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MÁ hj,Nubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjC4h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_cancel_lock (C function)”Œc.vfs_cancel_lock”hNt”auh1hýhjC4h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ=int vfs_cancel_lock (struct file *filp, struct file_lock *fl)”h]”j)�”}”(hŒah"]”h$]”h&]”uh1j1hj·Oh²hh³jÉOh´M: ubjC)�”}”(hŒvfs_cancel_lock”h]”jI)�”}”(hŒvfs_cancel_lock”h]”hŒvfs_cancel_lock”…”�”}”(hjÜOh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjØOubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj·Oh²hh³jÉOh´M: ubj=)�”}”(hŒ)(struct file *filp, struct file_lock *fl)”h]”(jC)�”}”(hŒstruct file *filp”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjøOh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjôOubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjôOubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjPubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jPŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÞOsbŒc.vfs_cancel_lock”†”asbuh1hhjôOubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6Ph²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjôOubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjDPh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjôOubjI)�”}”(hŒfilp”h]”hŒfilp”…”�”}”(hjQPh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjôOubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjðOubjC)�”}”(hŒstruct file_lock *fl”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjjPh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjfPubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwPh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjfPubh)�”}”(hhh]”jI)�”}”(hŒ file_lock”h]”hŒ file_lock”…”�”}”(hjˆPh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj…Pubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jŠPŒmodname”NŒ classname”Njj )�”}”j ]”j2PŒc.vfs_cancel_lock”†”asbuh1hhjfPubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦Ph²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjfPubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj´Ph²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjfPubjI)�”}”(hŒfl”h]”hŒfl”…”�”}”(hjÁPh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjfPubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjðOubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj·Oh²hh³jÉOh´M: ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj³Oh²hh³jÉOh´M: ubah}”(h]”j®Oah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÉOh´M: hj°Oh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒfile byte range unblock lock”h]”hŒfile byte range unblock lock”…”�”}”(hjëPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M: hjèPh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj°Oh²hh³jÉOh´M: ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jQjšjQj›‰jœ‰j�‰uh1jh²hhjC4h³Nh´NubjŸ)�”}”(hŒÀ**Parameters** ``struct file *filp`` The file to apply the unblock to ``struct file_lock *fl`` The lock to be unblocked **Description** Used by lock managers to cancel blocked requests”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj Qh]”hŒ Parameters”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj Qubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M> hjQubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ7``struct file *filp`` The file to apply the unblock to ”h]”(jÊ)�”}”(hŒ``struct file *filp``”h]”jÐ)�”}”(hj,Qh]”hŒstruct file *filp”…”�”}”(hj.Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj*Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M; hj&Qubjæ)�”}”(hhh]”hÌ)�”}”(hŒ The file to apply the unblock to”h]”hŒ The file to apply the unblock to”…”�”}”(hjEQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jAQh´M; hjBQubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj&Qubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jAQh´M; hj#QubjÄ)�”}”(hŒ2``struct file_lock *fl`` The lock to be unblocked ”h]”(jÊ)�”}”(hŒ``struct file_lock *fl``”h]”jÐ)�”}”(hjeQh]”hŒstruct file_lock *fl”…”�”}”(hjgQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjcQubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M< hj_Qubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe lock to be unblocked”h]”hŒThe lock to be unblocked”…”�”}”(hj~Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jzQh´M< hj{Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj_Qubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jzQh´M< hj#Qubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjQubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj Qh]”hŒ Description”…”�”}”(hj¢Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjžQubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M> hjQubhÌ)�”}”(hŒ0Used by lock managers to cancel blocked requests”h]”hŒ0Used by lock managers to cancel blocked requests”…”�”}”(hj¶Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M= hjQubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjC4h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ vfs_inode_has_locks (C function)”Œc.vfs_inode_has_locks”hNt”auh1hýhjC4h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ.bool vfs_inode_has_locks (struct inode *inode)”h]”j)�”}”(hŒ-bool vfs_inode_has_locks(struct inode *inode)”h]”(j�)�”}”(hj„h]”hŒbool”…”�”}”(hjåQh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjáQh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MJ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóQh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjáQh²hh³jòQh´MJ ubjC)�”}”(hŒvfs_inode_has_locks”h]”jI)�”}”(hŒvfs_inode_has_locks”h]”hŒvfs_inode_has_locks”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjRubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjáQh²hh³jòQh´MJ ubj=)�”}”(hŒ(struct inode *inode)”h]”jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj!Rh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjRubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.Rh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjRubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj?Rh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjah"]”h$]”h&]”uh1j1hjRubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjmRh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjRubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjzRh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjRubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjRubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjáQh²hh³jòQh´MJ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÝQh²hh³jòQh´MJ ubah}”(h]”jØQah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jòQh´MJ hjÚQh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ%are any file locks held on **inode**?”h]”(hŒare any file locks held on ”…”�”}”(hj¤Rh²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hj¬Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¤RubhŒ?”…”�”}”(hj¤Rh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MJ hj¡Rh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÚQh²hh³jòQh´MJ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÎRjšjÎRj›‰jœ‰j�‰uh1jh²hhjC4h³Nh´NubjŸ)�”}”(hŒ¨**Parameters** ``struct inode *inode`` inode to check for locks **Description** Return true if there are any FL_POSIX or FL_FLOCK locks currently set on **inode**.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjØRh]”hŒ Parameters”…”�”}”(hjÚRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÖRubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MN hjÒRubj¿)�”}”(hhh]”jÄ)�”}”(hŒ1``struct inode *inode`` inode to check for locks ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj÷Rh]”hŒstruct inode *inode”…”�”}”(hjùRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjõRubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MK hjñRubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode to check for locks”h]”hŒinode to check for locks”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j Sh´MK hj Subah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjñRubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j Sh´MK hjîRubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÒRubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj2Sh]”hŒ Description”…”�”}”(hj4Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj0Subah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MM hjÒRubhÌ)�”}”(hŒSReturn true if there are any FL_POSIX or FL_FLOCK locks currently set on **inode**.”h]”(hŒIReturn true if there are any FL_POSIX or FL_FLOCK locks currently set on ”…”�”}”(hjHSh²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hjPSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjHSubhŒ.”…”�”}”(hjHSh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´ML hjÒRubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjC4h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ lease_open_conflict (C function)”Œc.lease_open_conflict”hNt”auh1hýhjC4h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ:int lease_open_conflict (struct file *filp, const int arg)”h]”j)�”}”(hŒ9int lease_open_conflict(struct file *filp, const int arg)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj‰Sh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj…Sh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´MWubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜Sh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj…Sh²hh³j—Sh´MWubjC)�”}”(hŒlease_open_conflict”h]”jI)�”}”(hŒlease_open_conflict”h]”hŒlease_open_conflict”…”�”}”(hjªSh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¦Subah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj…Sh²hh³j—Sh´MWubj=)�”}”(hŒ"(struct file *filp, const int arg)”h]”(jC)�”}”(hŒstruct file *filp”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÆSh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÂSubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓSh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÂSubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjäSh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjáSubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jæSŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj¬SsbŒc.lease_open_conflict”†”asbuh1hhjÂSubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÂSubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÂSubjI)�”}”(hŒfilp”h]”hŒfilp”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÂSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¾SubjC)�”}”(hŒ const int arg”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj8Th²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj4Tubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjETh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj4Tubj�)�”}”(hŒint”h]”hŒint”…”�”}”(hjSTh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj4Tubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaTh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj4TubjI)�”}”(hŒarg”h]”hŒarg”…”�”}”(hjoTh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj4Tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¾Subeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj…Sh²hh³j—Sh´MWubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj�Sh²hh³j—Sh´MWubah}”(h]”j|Sah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j—Sh´MWhj~Sh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒnsee if the given file points to an inode that has an existing open that would conflict with the desired lease.”h]”hŒnsee if the given file points to an inode that has an existing open that would conflict with the desired lease.”…”�”}”(hj™Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´MWhj–Th²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj~S•#h²hh³j—Sh´MWubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j±Tjšj±Tj›‰jœ‰j�‰uh1jh²hhjC4h³Nh´NubjŸ)�”}”(hŒø**Parameters** ``struct file *filp`` file to check ``const int arg`` type of lease that we're trying to acquire **Description** Check to see if there's an existing open fd on this file that would conflict with the lease we're trying to set.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj»Th]”hŒ Parameters”…”�”}”(hj½Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¹Tubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M[hjµTubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ$``struct file *filp`` file to check ”h]”(jÊ)�”}”(hŒ``struct file *filp``”h]”jÐ)�”}”(hjÚTh]”hŒstruct file *filp”…”�”}”(hjÜTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjØTubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´MZhjÔTubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file to check”h]”hŒ file to check”…”�”}”(hjóTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jïTh´MZhjðTubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÔTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jïTh´MZhjÑTubjÄ)�”}”(hŒ=``const int arg`` type of lease that we're trying to acquire ”h]”(jÊ)�”}”(hŒ``const int arg``”h]”jÐ)�”}”(hjUh]”hŒ const int arg”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M[hj Uubjæ)�”}”(hhh]”hÌ)�”}”(hŒ*type of lease that we're trying to acquire”h]”hŒ,type of lease that we’re trying to acquire”…”�”}”(hj,Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j(Uh´M[hj)Uubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj Uubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j(Uh´M[hjÑTubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjµTubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjNUh]”hŒ Description”…”�”}”(hjPUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjLUubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M]hjµTubhÌ)�”}”(hŒpCheck to see if there's an existing open fd on this file that would conflict with the lease we're trying to set.”h]”hŒtCheck to see if there’s an existing open fd on this file that would conflict with the lease we’re trying to set.”…”�”}”(hjdUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M\hjµTubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjC4h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ"posix_lock_inode_wait (C function)”Œc.posix_lock_inode_wait”hNt”auh1hýhjC4h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒEint posix_lock_inode_wait (struct inode *inode, struct file_lock *fl)”h]”j)�”}”(hŒDint posix_lock_inode_wait(struct inode *inode, struct file_lock *fl)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj“Uh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj�Uh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´Mºubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢Uh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�Uh²hh³j¡Uh´MºubjC)�”}”(hŒposix_lock_inode_wait”h]”jI)�”}”(hŒposix_lock_inode_wait”h]”hŒposix_lock_inode_wait”…”�”}”(hj´Uh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj°Uubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj�Uh²hh³j¡Uh´Mºubj=)�”}”(hŒ+(struct inode *inode, struct file_lock *fl)”h]”(jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÐUh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÌUubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝUh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÌUubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjîUh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjëUubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jðUŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj¶UsbŒc.posix_lock_inode_wait”†”asbuh1hhjÌUubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÌUubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÌUubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj)Vh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÌUubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÈUubjC)�”}”(hŒstruct file_lock *fl”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjBVh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj>Vubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOVh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj>Vubh)�”}”(hhh]”jI)�”}”(hŒ file_lock”h]”hŒ file_lock”…”�”}”(hj`Vh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj]Vubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jbVŒmodname”NŒ classname”Njj )�”}”j ]”j VŒc.posix_lock_inode_wait”†”asbuh1hhj>Vubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~Vh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj>Vubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjŒVh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj>VubjI)�”}”(hŒfl”h]”hŒfl”…”�”}”(hj™Vh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj>Vubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÈUubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj�Uh²hh³j¡Uh´Mºubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj‹Uh²hh³j¡Uh´Mºubah}”(h]”j†Uah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j¡Uh´MºhjˆUh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ"Apply a POSIX-style lock to a file”h]”hŒ"Apply a POSIX-style lock to a file”…”�”}”(hjÃVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´MºhjÀVh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjˆUh²hh³j¡Uh´Mºubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÛVjšjÛVj›‰jœ‰j�‰uh1jh²hhjC4h³Nh´NubjŸ)�”}”(hŒÒ**Parameters** ``struct inode *inode`` inode of file to which lock request should be applied ``struct file_lock *fl`` The lock to be applied **Description** Apply a POSIX style lock request to an inode.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjåVh]”hŒ Parameters”…”�”}”(hjçVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjãVubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M¾hjßVubj¿)�”}”(hhh]”(jÄ)�”}”(hŒN``struct inode *inode`` inode of file to which lock request should be applied ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjWh]”hŒstruct inode *inode”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M»hjþVubjæ)�”}”(hhh]”hÌ)�”}”(hŒ5inode of file to which lock request should be applied”h]”hŒ5inode of file to which lock request should be applied”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jWh´M»hjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjþVubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jWh´M»hjûVubjÄ)�”}”(hŒ0``struct file_lock *fl`` The lock to be applied ”h]”(jÊ)�”}”(hŒ``struct file_lock *fl``”h]”jÐ)�”}”(hj=Wh]”hŒstruct file_lock *fl”…”�”}”(hj?Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj;Wubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M¼hj7Wubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe lock to be applied”h]”hŒThe lock to be applied”…”�”}”(hjVWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jRWh´M¼hjSWubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj7Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jRWh´M¼hjûVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjßVubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjxWh]”hŒ Description”…”�”}”(hjzWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjvWubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M¾hjßVubhÌ)�”}”(hŒ-Apply a POSIX style lock request to an inode.”h]”hŒ-Apply a POSIX style lock request to an inode.”…”�”}”(hjŽWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M½hjßVubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjC4h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ__fcntl_getlease (C function)”Œc.__fcntl_getlease”hNt”auh1hýhjC4h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ=int __fcntl_getlease (struct file *filp, unsigned int flavor)”h]”j)�”}”(hŒah"]”h$]”h&]”uh1j1hj¹Wh²hh³jËWh´M!ubjC)�”}”(hŒ__fcntl_getlease”h]”jI)�”}”(hŒ__fcntl_getlease”h]”hŒ__fcntl_getlease”…”�”}”(hjÞWh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÚWubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj¹Wh²hh³jËWh´M!ubj=)�”}”(hŒ((struct file *filp, unsigned int flavor)”h]”(jC)�”}”(hŒstruct file *filp”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjúWh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjöWubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjöWubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjXubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jXŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjàWsbŒc.__fcntl_getlease”†”asbuh1hhjöWubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8Xh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjöWubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjFXh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjöWubjI)�”}”(hŒfilp”h]”hŒfilp”…”�”}”(hjSXh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjöWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjòWubjC)�”}”(hŒunsigned int flavor”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjlXh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjhXubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzXh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjhXubj�)�”}”(hŒint”h]”hŒint”…”�”}”(hjˆXh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjhXubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–Xh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjhXubjI)�”}”(hŒflavor”h]”hŒflavor”…”�”}”(hj¤Xh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjhXubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjòWubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj¹Wh²hh³jËWh´M!ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjµWh²hh³jËWh´M!ubah}”(h]”j°Wah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jËWh´M!hj²Wh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ&Enquire what lease is currently active”h]”hŒ&Enquire what lease is currently active”…”�”}”(hjÎXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M!hjËXh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj²Wh²hh³jËWh´M!ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jæXjšjæXj›‰jœ‰j�‰uh1jh²hhjC4h³Nh´NubjŸ)�”}”(hX«**Parameters** ``struct file *filp`` the file ``unsigned int flavor`` type of lease flags to check **Description** The value returned by this function will be one of (if no lease break is pending): ``F_RDLCK`` to indicate a shared lease is held. ``F_WRLCK`` to indicate an exclusive lease is held. ``F_UNLCK`` to indicate no lease is held. (if a lease break is pending): ``F_RDLCK`` to indicate an exclusive lease needs to be changed to a shared lease (or removed). ``F_UNLCK`` to indicate the lease needs to be removed. XXX: sfr & willy disagree over whether F_INPROGRESS should be returned to userspace.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjðXh]”hŒ Parameters”…”�”}”(hjòXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjîXubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M%hjêXubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ``struct file *filp`` the file ”h]”(jÊ)�”}”(hŒ``struct file *filp``”h]”jÐ)�”}”(hjYh]”hŒstruct file *filp”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M"hj Yubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe file”h]”hŒthe file”…”�”}”(hj(Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j$Yh´M"hj%Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j$Yh´M"hjYubjÄ)�”}”(hŒ5``unsigned int flavor`` type of lease flags to check ”h]”(jÊ)�”}”(hŒ``unsigned int flavor``”h]”jÐ)�”}”(hjHYh]”hŒunsigned int flavor”…”�”}”(hjJYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjFYubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M#hjBYubjæ)�”}”(hhh]”hÌ)�”}”(hŒtype of lease flags to check”h]”hŒtype of lease flags to check”…”�”}”(hjaYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j]Yh´M#hj^Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjBYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j]Yh´M#hjYubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjêXubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjƒYh]”hŒ Description”…”�”}”(hj…Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj�Yubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M%hjêXubjÁ™)�”}”(hXùThe value returned by this function will be one of (if no lease break is pending): ``F_RDLCK`` to indicate a shared lease is held. ``F_WRLCK`` to indicate an exclusive lease is held. ``F_UNLCK`` to indicate no lease is held. (if a lease break is pending): ``F_RDLCK`` to indicate an exclusive lease needs to be changed to a shared lease (or removed). ``F_UNLCK`` to indicate the lease needs to be removed. XXX: sfr & willy disagree over whether F_INPROGRESS should be returned to userspace.”h]”(hÌ)�”}”(hŒRThe value returned by this function will be one of (if no lease break is pending):”h]”hŒRThe value returned by this function will be one of (if no lease break is pending):”…”�”}”(hj�Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M$hj™YubhÌ)�”}”(hŒ/``F_RDLCK`` to indicate a shared lease is held.”h]”(jÐ)�”}”(hŒ ``F_RDLCK``”h]”hŒF_RDLCK”…”�”}”(hj°Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¬YubhŒ$ to indicate a shared lease is held.”…”�”}”(hj¬Yh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M'hj™YubhÌ)�”}”(hŒ3``F_WRLCK`` to indicate an exclusive lease is held.”h]”(jÐ)�”}”(hŒ ``F_WRLCK``”h]”hŒF_WRLCK”…”�”}”(hjÍYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÉYubhŒ( to indicate an exclusive lease is held.”…”�”}”(hjÉYh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M)hj™YubhÌ)�”}”(hŒ)``F_UNLCK`` to indicate no lease is held.”h]”(jÐ)�”}”(hŒ ``F_UNLCK``”h]”hŒF_UNLCK”…”�”}”(hjêYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjæYubhŒ to indicate no lease is held.”…”�”}”(hjæYh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M+hj™YubhÌ)�”}”(hŒ(if a lease break is pending):”h]”hŒ(if a lease break is pending):”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M-hj™Yubj¿)�”}”(hhh]”jÄ)�”}”(hŒ_``F_RDLCK`` to indicate an exclusive lease needs to be changed to a shared lease (or removed). ”h]”(jÊ)�”}”(hŒ6``F_RDLCK`` to indicate an exclusive lease needs to be”h]”(jÐ)�”}”(hŒ ``F_RDLCK``”h]”hŒF_RDLCK”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjZubhŒ+ to indicate an exclusive lease needs to be”…”�”}”(hjZh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M0hjZubjæ)�”}”(hhh]”hÌ)�”}”(hŒ'changed to a shared lease (or removed).”h]”hŒ'changed to a shared lease (or removed).”…”�”}”(hj9Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j5Zh´M0hj6Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjZubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j5Zh´M0hjZubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj™YubhÌ)�”}”(hŒ6``F_UNLCK`` to indicate the lease needs to be removed.”h]”(jÐ)�”}”(hŒ ``F_UNLCK``”h]”hŒF_UNLCK”…”�”}”(hj]Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjYZubhŒ+ to indicate the lease needs to be removed.”…”�”}”(hjYZh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M2hj™YubhÌ)�”}”(hŒTXXX: sfr & willy disagree over whether F_INPROGRESS should be returned to userspace.”h]”hŒTXXX: sfr & willy disagree over whether F_INPROGRESS should be returned to userspace.”…”�”}”(hjvZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M4hj™Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀ™h³j«Yh´M$hjêXubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjC4h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œfcntl_setlease (C function)”Œc.fcntl_setlease”hNt”auh1hýhjC4h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ@int fcntl_setlease (unsigned int fd, struct file *filp, int arg)”h]”j)�”}”(hŒ?int fcntl_setlease(unsigned int fd, struct file *filp, int arg)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj«Zh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj§Zh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºZh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj§Zh²hh³j¹Zh´M�ubjC)�”}”(hŒfcntl_setlease”h]”jI)�”}”(hŒfcntl_setlease”h]”hŒfcntl_setlease”…”�”}”(hjÌZh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÈZubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj§Zh²hh³j¹Zh´M�ubj=)�”}”(hŒ-(unsigned int fd, struct file *filp, int arg)”h]”(jC)�”}”(hŒunsigned int fd”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjèZh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjäZubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöZh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjäZubj�)�”}”(hŒint”h]”hŒint”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjäZubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjäZubjI)�”}”(hŒfd”h]”hŒfd”…”�”}”(hj [h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjäZubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjàZubjC)�”}”(hŒstruct file *filp”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj9[h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj5[ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF[h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj5[ubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjW[h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjT[ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jY[Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÎZsbŒc.fcntl_setlease”†”asbuh1hhj5[ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjw[h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj5[ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj…[h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj5[ubjI)�”}”(hŒfilp”h]”hŒfilp”…”�”}”(hj’[h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj5[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjàZubjC)�”}”(hŒint arg”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj«[h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj§[ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹[h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj§[ubjI)�”}”(hŒarg”h]”hŒarg”…”�”}”(hjÇ[h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj§[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjàZubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj§Zh²hh³j¹Zh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj£Zh²hh³j¹Zh´M�ubah}”(h]”jžZah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j¹Zh´M�hj Zh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒsets a lease on an open file”h]”hŒsets a lease on an open file”…”�”}”(hjñ[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M�hjî[h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj Zh²hh³j¹Zh´M�ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j \jšj \j›‰jœ‰j�‰uh1jh²hhjC4h³Nh´NubjŸ)�”}”(hX5**Parameters** ``unsigned int fd`` open file descriptor ``struct file *filp`` file pointer ``int arg`` type of lease to obtain **Description** Call this fcntl to establish a lease on the file. Note that you also need to call ``F_SETSIG`` to receive a signal when the lease is broken.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj\h]”hŒ Parameters”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M…hj \ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ)``unsigned int fd`` open file descriptor ”h]”(jÊ)�”}”(hŒ``unsigned int fd``”h]”jÐ)�”}”(hj2\h]”hŒunsigned int fd”…”�”}”(hj4\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj0\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M‚hj,\ubjæ)�”}”(hhh]”hÌ)�”}”(hŒopen file descriptor”h]”hŒopen file descriptor”…”�”}”(hjK\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jG\h´M‚hjH\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj,\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jG\h´M‚hj)\ubjÄ)�”}”(hŒ#``struct file *filp`` file pointer ”h]”(jÊ)�”}”(hŒ``struct file *filp``”h]”jÐ)�”}”(hjk\h]”hŒstruct file *filp”…”�”}”(hjm\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhji\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´Mƒhje\ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file pointer”h]”hŒ file pointer”…”�”}”(hj„\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j€\h´Mƒhj�\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhje\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j€\h´Mƒhj)\ubjÄ)�”}”(hŒ$``int arg`` type of lease to obtain ”h]”(jÊ)�”}”(hŒ ``int arg``”h]”jÐ)�”}”(hj¤\h]”hŒint arg”…”�”}”(hj¦\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¢\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M„hjž\ubjæ)�”}”(hhh]”hÌ)�”}”(hŒtype of lease to obtain”h]”hŒtype of lease to obtain”…”�”}”(hj½\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¹\h´M„hjº\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjž\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¹\h´M„hj)\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj \ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjß\h]”hŒ Description”…”�”}”(hjá\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÝ\ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M†hj \ubjÁ™)�”}”(hŒŒCall this fcntl to establish a lease on the file. Note that you also need to call ``F_SETSIG`` to receive a signal when the lease is broken.”h]”hÌ)�”}”(hŒŒCall this fcntl to establish a lease on the file. Note that you also need to call ``F_SETSIG`` to receive a signal when the lease is broken.”h]”(hŒRCall this fcntl to establish a lease on the file. Note that you also need to call ”…”�”}”(hjù\h²hh³Nh´NubjÐ)�”}”(hŒ ``F_SETSIG``”h]”hŒF_SETSIG”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjù\ubhŒ. to receive a signal when the lease is broken.”…”�”}”(hjù\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M…hjõ\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀ™h³j]h´M…hj \ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjC4h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œfcntl_setdeleg (C function)”Œc.fcntl_setdeleg”hNt”auh1hýhjC4h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒQint fcntl_setdeleg (unsigned int fd, struct file *filp, struct delegation *deleg)”h]”j)�”}”(hŒPint fcntl_setdeleg(unsigned int fd, struct file *filp, struct delegation *deleg)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj@]h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj<]h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M•ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO]h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj<]h²hh³jN]h´M•ubjC)�”}”(hŒfcntl_setdeleg”h]”jI)�”}”(hŒfcntl_setdeleg”h]”hŒfcntl_setdeleg”…”�”}”(hja]h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj]]ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj<]h²hh³jN]h´M•ubj=)�”}”(hŒ>(unsigned int fd, struct file *filp, struct delegation *deleg)”h]”(jC)�”}”(hŒunsigned int fd”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj}]h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjy]ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹]h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjy]ubj�)�”}”(hŒint”h]”hŒint”…”�”}”(hj™]h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjy]ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§]h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjy]ubjI)�”}”(hŒfd”h]”hŒfd”…”�”}”(hjµ]h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjy]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhju]ubjC)�”}”(hŒstruct file *filp”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÎ]h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÊ]ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ]h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÊ]ubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjì]h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjé]ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jî]Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjc]sbŒc.fcntl_setdeleg”†”asbuh1hhjÊ]ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ^h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÊ]ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÊ]ubjI)�”}”(hŒfilp”h]”hŒfilp”…”�”}”(hj'^h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÊ]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhju]ubjC)�”}”(hŒstruct delegation *deleg”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj@^h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj<^ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM^h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj<^ubh)�”}”(hhh]”jI)�”}”(hŒ delegation”h]”hŒ delegation”…”�”}”(hj^^h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj[^ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j`^Œmodname”NŒ classname”Njj )�”}”j ]”j^Œc.fcntl_setdeleg”†”asbuh1hhj<^ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|^h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj<^ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjŠ^h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj<^ubjI)�”}”(hŒdeleg”h]”hŒdeleg”…”�”}”(hj—^h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj<^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhju]ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj<]h²hh³jN]h´M•ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj8]h²hh³jN]h´M•ubah}”(h]”j3]ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jN]h´M•hj5]h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ!sets a delegation on an open file”h]”hŒ!sets a delegation on an open file”…”�”}”(hjÁ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M•hj¾^h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj5]h²hh³jN]h´M•ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÙ^jšjÙ^j›‰jœ‰j�‰uh1jh²hhjC4h³Nh´NubjŸ)�”}”(hXT**Parameters** ``unsigned int fd`` open file descriptor ``struct file *filp`` file pointer ``struct delegation *deleg`` delegation request from userland **Description** Call this fcntl to establish a delegation on the file. Note that you also need to call ``F_SETSIG`` to receive a signal when the lease is broken.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjã^h]”hŒ Parameters”…”�”}”(hjå^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjá^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M™hjÝ^ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ)``unsigned int fd`` open file descriptor ”h]”(jÊ)�”}”(hŒ``unsigned int fd``”h]”jÐ)�”}”(hj_h]”hŒunsigned int fd”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M–hjü^ubjæ)�”}”(hhh]”hÌ)�”}”(hŒopen file descriptor”h]”hŒopen file descriptor”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j_h´M–hj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjü^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j_h´M–hjù^ubjÄ)�”}”(hŒ#``struct file *filp`` file pointer ”h]”(jÊ)�”}”(hŒ``struct file *filp``”h]”jÐ)�”}”(hj;_h]”hŒstruct file *filp”…”�”}”(hj=_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj9_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M—hj5_ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file pointer”h]”hŒ file pointer”…”�”}”(hjT_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jP_h´M—hjQ_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj5_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jP_h´M—hjù^ubjÄ)�”}”(hŒ>``struct delegation *deleg`` delegation request from userland ”h]”(jÊ)�”}”(hŒ``struct delegation *deleg``”h]”jÐ)�”}”(hjt_h]”hŒstruct delegation *deleg”…”�”}”(hjv_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjr_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M˜hjn_ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ delegation request from userland”h]”hŒ delegation request from userland”…”�”}”(hj�_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‰_h´M˜hjŠ_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjn_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‰_h´M˜hjù^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÝ^ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj¯_h]”hŒ Description”…”�”}”(hj±_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj­_ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´MšhjÝ^ubjÁ™)�”}”(hŒ‘Call this fcntl to establish a delegation on the file. Note that you also need to call ``F_SETSIG`` to receive a signal when the lease is broken.”h]”hÌ)�”}”(hŒ‘Call this fcntl to establish a delegation on the file. Note that you also need to call ``F_SETSIG`` to receive a signal when the lease is broken.”h]”(hŒWCall this fcntl to establish a delegation on the file. Note that you also need to call ”…”�”}”(hjÉ_h²hh³Nh´NubjÐ)�”}”(hŒ ``F_SETSIG``”h]”hŒF_SETSIG”…”�”}”(hjÑ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÉ_ubhŒ. to receive a signal when the lease is broken.”…”�”}”(hjÉ_h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M™hjÅ_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀ™h³jé_h´M™hjÝ^ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjC4h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ"flock_lock_inode_wait (C function)”Œc.flock_lock_inode_wait”hNt”auh1hýhjC4h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒEint flock_lock_inode_wait (struct inode *inode, struct file_lock *fl)”h]”j)�”}”(hŒDint flock_lock_inode_wait(struct inode *inode, struct file_lock *fl)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj `h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´Mªubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj `h²hh³j`h´MªubjC)�”}”(hŒflock_lock_inode_wait”h]”jI)�”}”(hŒflock_lock_inode_wait”h]”hŒflock_lock_inode_wait”…”�”}”(hj1`h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj-`ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj `h²hh³j`h´Mªubj=)�”}”(hŒ+(struct inode *inode, struct file_lock *fl)”h]”(jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjM`h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjI`ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ`h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjI`ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjk`h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjh`ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jm`Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj3`sbŒc.flock_lock_inode_wait”†”asbuh1hhjI`ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹`h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjI`ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj™`h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjI`ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj¦`h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjI`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjE`ubjC)�”}”(hŒstruct file_lock *fl”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¿`h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj»`ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌ`h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj»`ubh)�”}”(hhh]”jI)�”}”(hŒ file_lock”h]”hŒ file_lock”…”�”}”(hjÝ`h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÚ`ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jß`Œmodname”NŒ classname”Njj )�”}”j ]”j‡`Œc.flock_lock_inode_wait”†”asbuh1hhj»`ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû`h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj»`ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj ah²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj»`ubjI)�”}”(hŒfl”h]”hŒfl”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj»`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjE`ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj `h²hh³j`h´Mªubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj`h²hh³j`h´Mªubah}”(h]”j`ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j`h´Mªhj`h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ"Apply a FLOCK-style lock to a file”h]”hŒ"Apply a FLOCK-style lock to a file”…”�”}”(hj@ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´Mªhj=ah²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj`h²hh³j`h´Mªubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jXajšjXaj›‰jœ‰j�‰uh1jh²hhjC4h³Nh´NubjŸ)�”}”(hŒº**Parameters** ``struct inode *inode`` inode of the file to apply to ``struct file_lock *fl`` The lock to be applied **Description** Apply a FLOCK style lock request to an inode.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjbah]”hŒ Parameters”…”�”}”(hjdah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj`aubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M®hj\aubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ6``struct inode *inode`` inode of the file to apply to ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj�ah]”hŒstruct inode *inode”…”�”}”(hjƒah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M«hj{aubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode of the file to apply to”h]”hŒinode of the file to apply to”…”�”}”(hjšah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j–ah´M«hj—aubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj{aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j–ah´M«hjxaubjÄ)�”}”(hŒ0``struct file_lock *fl`` The lock to be applied ”h]”(jÊ)�”}”(hŒ``struct file_lock *fl``”h]”jÐ)�”}”(hjºah]”hŒstruct file_lock *fl”…”�”}”(hj¼ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¸aubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M¬hj´aubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe lock to be applied”h]”hŒThe lock to be applied”…”�”}”(hjÓah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÏah´M¬hjÐaubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj´aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÏah´M¬hjxaubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj\aubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjõah]”hŒ Description”…”�”}”(hj÷ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjóaubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M®hj\aubhÌ)�”}”(hŒ-Apply a FLOCK style lock request to an inode.”h]”hŒ-Apply a FLOCK style lock request to an inode.”…”�”}”(hj bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M­hj\aubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjC4h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œsys_flock (C function)”Œ c.sys_flock”hNt”auh1hýhjC4h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ2long sys_flock (unsigned int fd, unsigned int cmd)”h]”j)�”}”(hŒ1long sys_flock(unsigned int fd, unsigned int cmd)”h]”(j�)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj:bh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj6bh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´MÚubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIbh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj6bh²hh³jHbh´MÚubjC)�”}”(hŒ sys_flock”h]”jI)�”}”(hŒ sys_flock”h]”hŒ sys_flock”…”�”}”(hj[bh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjWbubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj6bh²hh³jHbh´MÚubj=)�”}”(hŒ#(unsigned int fd, unsigned int cmd)”h]”(jC)�”}”(hŒunsigned int fd”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjwbh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjsbubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…bh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjsbubj�)�”}”(hŒint”h]”hŒint”…”�”}”(hj“bh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjsbubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡bh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjsbubjI)�”}”(hŒfd”h]”hŒfd”…”�”}”(hj¯bh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjsbubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjobubjC)�”}”(hŒunsigned int cmd”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÈbh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÄbubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖbh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÄbubj�)�”}”(hŒint”h]”hŒint”…”�”}”(hjäbh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÄbubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòbh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÄbubjI)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÄbubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjobubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj6bh²hh³jHbh´MÚubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj2bh²hh³jHbh´MÚubah}”(h]”j-bah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jHbh´MÚhj/bh²hubjw)�”}”(hhh]”j‘E)�”}”(hhh]”j–E)�”}”(hŒflock() system call.”h]”hÌ)�”}”(hj/ch]”hŒflock() system call.”…”�”}”(hj1ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´MÚhj-cubah}”(h]”h ]”h"]”h$]”h&]”uh1j•Ehj*ch²hh³j>ch´Nubah}”(h]”h ]”h"]”h$]”h&]”jÏEjÍ2uh1j�Eh³j>ch´MÚhj'ch²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj/bh²hh³jHbh´MÚubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jTcjšjTcj›‰jœ‰j�‰uh1jh²hhjC4h³Nh´NubjŸ)�”}”(hXÞ**Parameters** ``unsigned int fd`` the file descriptor to lock. ``unsigned int cmd`` the type of lock to apply. **Description** Apply a ``FL_FLOCK`` style lock to an open file descriptor. The **cmd** can be one of: - ``LOCK_SH`` -- a shared lock. - ``LOCK_EX`` -- an exclusive lock. - ``LOCK_UN`` -- remove an existing lock. - ``LOCK_MAND`` -- a 'mandatory' flock. (DEPRECATED) ``LOCK_MAND`` support has been removed from the kernel.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj^ch]”hŒ Parameters”…”�”}”(hj`ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj\cubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´MÞhjXcubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ1``unsigned int fd`` the file descriptor to lock. ”h]”(jÊ)�”}”(hŒ``unsigned int fd``”h]”jÐ)�”}”(hj}ch]”hŒunsigned int fd”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj{cubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´MÛhjwcubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe file descriptor to lock.”h]”hŒthe file descriptor to lock.”…”�”}”(hj–ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j’ch´MÛhj“cubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjwcubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j’ch´MÛhjtcubjÄ)�”}”(hŒ0``unsigned int cmd`` the type of lock to apply. ”h]”(jÊ)�”}”(hŒ``unsigned int cmd``”h]”jÐ)�”}”(hj¶ch]”hŒunsigned int cmd”…”�”}”(hj¸ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj´cubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´MÜhj°cubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe type of lock to apply.”h]”hŒthe type of lock to apply.”…”�”}”(hjÏch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jËch´MÜhjÌcubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj°cubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jËch´MÜhjtcubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjXcubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjñch]”hŒ Description”…”�”}”(hjóch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjïcubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´MÞhjXcubjÁ™)�”}”(hX3Apply a ``FL_FLOCK`` style lock to an open file descriptor. The **cmd** can be one of: - ``LOCK_SH`` -- a shared lock. - ``LOCK_EX`` -- an exclusive lock. - ``LOCK_UN`` -- remove an existing lock. - ``LOCK_MAND`` -- a 'mandatory' flock. (DEPRECATED) ``LOCK_MAND`` support has been removed from the kernel.”h]”(hÌ)�”}”(hŒVApply a ``FL_FLOCK`` style lock to an open file descriptor. The **cmd** can be one of:”h]”(hŒApply a ”…”�”}”(hj dh²hh³Nh´NubjÐ)�”}”(hŒ ``FL_FLOCK``”h]”hŒFL_FLOCK”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj dubhŒ, style lock to an open file descriptor. The ”…”�”}”(hj dh²hh³Nh´Nubj©)�”}”(hŒ**cmd**”h]”hŒcmd”…”�”}”(hj%dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj dubhŒ can be one of:”…”�”}”(hj dh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´MÝhjdubj‘E)�”}”(hhh]”(j–E)�”}”(hŒ``LOCK_SH`` -- a shared lock.”h]”hÌ)�”}”(hjCdh]”(jÐ)�”}”(hŒ ``LOCK_SH``”h]”hŒLOCK_SH”…”�”}”(hjHdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjEdubhŒ -- a shared lock.”…”�”}”(hjEdh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´MàhjAdubah}”(h]”h ]”h"]”h$]”h&]”uh1j•Ehj>dubj–E)�”}”(hŒ!``LOCK_EX`` -- an exclusive lock.”h]”hÌ)�”}”(hjidh]”(jÐ)�”}”(hŒ ``LOCK_EX``”h]”hŒLOCK_EX”…”�”}”(hjndh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjkdubhŒ -- an exclusive lock.”…”�”}”(hjkdh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´Máhjgdubah}”(h]”h ]”h"]”h$]”h&]”uh1j•Ehj>dubj–E)�”}”(hŒ'``LOCK_UN`` -- remove an existing lock.”h]”hÌ)�”}”(hj�dh]”(jÐ)�”}”(hŒ ``LOCK_UN``”h]”hŒLOCK_UN”…”�”}”(hj”dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj‘dubhŒ -- remove an existing lock.”…”�”}”(hj‘dh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´Mâhj�dubah}”(h]”h ]”h"]”h$]”h&]”uh1j•Ehj>dubj–E)�”}”(hŒ3``LOCK_MAND`` -- a 'mandatory' flock. (DEPRECATED) ”h]”hÌ)�”}”(hŒ2``LOCK_MAND`` -- a 'mandatory' flock. (DEPRECATED)”h]”(jÐ)�”}”(hŒ ``LOCK_MAND``”h]”hŒ LOCK_MAND”…”�”}”(hj»dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj·dubhŒ) -- a ‘mandatory’ flock. (DEPRECATED)”…”�”}”(hj·dh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´Mãhj³dubah}”(h]”h ]”h"]”h$]”h&]”uh1j•Ehj>dubeh}”(h]”h ]”h"]”h$]”h&]”jÏEjÍ2uh1j�Eh³j`dh´MàhjdubhÌ)�”}”(hŒ7``LOCK_MAND`` support has been removed from the kernel.”h]”(jÐ)�”}”(hŒ ``LOCK_MAND``”h]”hŒ LOCK_MAND”…”�”}”(hjädh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjàdubhŒ* support has been removed from the kernel.”…”�”}”(hjàdh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´Måhjdubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀ™h³j=dh´MÝhjXcubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjC4h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ locks_translate_pid (C function)”Œc.locks_translate_pid”hNt”auh1hýhjC4h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒOpid_t locks_translate_pid (struct file_lock_core *fl, struct pid_namespace *ns)”h]”j)�”}”(hŒNpid_t locks_translate_pid(struct file_lock_core *fl, struct pid_namespace *ns)”h]”(h)�”}”(hhh]”jI)�”}”(hŒpid_t”h]”hŒpid_t”…”�”}”(hj&eh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj#eubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j(eŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒlocks_translate_pid”sbŒc.locks_translate_pid”†”asbuh1hhjeh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M@ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHeh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjeh²hh³jGeh´M@ ubjC)�”}”(hŒlocks_translate_pid”h]”jI)�”}”(hjDeh]”hŒlocks_translate_pid”…”�”}”(hjZeh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjVeubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjeh²hh³jGeh´M@ ubj=)�”}”(hŒ5(struct file_lock_core *fl, struct pid_namespace *ns)”h]”(jC)�”}”(hŒstruct file_lock_core *fl”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjueh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjqeubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚eh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjqeubh)�”}”(hhh]”jI)�”}”(hŒfile_lock_core”h]”hŒfile_lock_core”…”�”}”(hj“eh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�eubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j•eŒmodname”NŒ classname”Njj )�”}”j ]”jBeŒc.locks_translate_pid”†”asbuh1hhjqeubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±eh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjqeubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¿eh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjqeubjI)�”}”(hŒfl”h]”hŒfl”…”�”}”(hjÌeh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjqeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjmeubjC)�”}”(hŒstruct pid_namespace *ns”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjåeh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjáeubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòeh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjáeubh)�”}”(hhh]”jI)�”}”(hŒ pid_namespace”h]”hŒ pid_namespace”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjfubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jfŒmodname”NŒ classname”Njj )�”}”j ]”jBeŒc.locks_translate_pid”†”asbuh1hhjáeubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!fh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjáeubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj/fh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjáeubjI)�”}”(hŒns”h]”hŒns”…”�”}”(hjUsed to translate a fl_pid into a namespace virtual pid number”h]”hŒ>Used to translate a fl_pid into a namespace virtual pid number”…”�”}”(hj1gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´MC hj‚fubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjC4h²hh³Nh´Nubeh}”(h]”Œ file-locks”ah ]”h"]”Œ file locks”ah$]”h&]”uh1hµhhÛh²hh³hÊh´K*ubh¶)�”}”(hhh]”(h»)�”}”(hŒOther Functions”h]”hŒOther Functions”…”�”}”(hjRgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjOgh²hh³hÊh´K3ubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œmpage_readahead (C function)”Œc.mpage_readahead”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒKvoid mpage_readahead (struct readahead_control *rac, get_block_t get_block)”h]”j)�”}”(hŒJvoid mpage_readahead(struct readahead_control *rac, get_block_t get_block)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjygh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjugh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:53: ./fs/mpage.c”h´M@ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆgh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjugh²hh³j‡gh´M@ubjC)�”}”(hŒmpage_readahead”h]”jI)�”}”(hŒmpage_readahead”h]”hŒmpage_readahead”…”�”}”(hjšgh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj–gubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjugh²hh³j‡gh´M@ubj=)�”}”(hŒ6(struct readahead_control *rac, get_block_t get_block)”h]”(jC)�”}”(hŒstruct readahead_control *rac”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¶gh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj²gubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃgh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj²gubh)�”}”(hhh]”jI)�”}”(hŒreadahead_control”h]”hŒreadahead_control”…”�”}”(hjÔgh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÑgubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÖgŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjœgsbŒc.mpage_readahead”†”asbuh1hhj²gubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôgh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj²gubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj²gubjI)�”}”(hŒrac”h]”hŒrac”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj²gubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj®gubjC)�”}”(hŒget_block_t get_block”h]”(h)�”}”(hhh]”jI)�”}”(hŒ get_block_t”h]”hŒ get_block_t”…”�”}”(hj+hh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj(hubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j-hŒmodname”NŒ classname”Njj )�”}”j ]”jðgŒc.mpage_readahead”†”asbuh1hhj$hubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIhh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj$hubjI)�”}”(hŒ get_block”h]”hŒ get_block”…”�”}”(hjWhh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj$hubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj®gubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjugh²hh³j‡gh´M@ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjqgh²hh³j‡gh´M@ubah}”(h]”jlgah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j‡gh´M@hjngh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒstart reads against pages”h]”hŒstart reads against pages”…”�”}”(hj�hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:53: ./fs/mpage.c”h´M@hj~hh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjngh²hh³j‡gh´M@ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j™hjšj™hj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX**Parameters** ``struct readahead_control *rac`` Describes which pages to read. ``get_block_t get_block`` The filesystem's block mapper function. **Description** This function walks the pages and the blocks within each page, building and emitting large BIOs. If anything unusual happens, such as: - encountering a page which has buffers - encountering a page which has a non-hole after a hole - encountering a page with non-contiguous blocks then this code just gives up and calls the buffer_head-based read function. It does handle a page which has holes at the end - that is a common case: the end-of-file on blocksize < PAGE_SIZE setups. BH_Boundary explanation: There is a problem. The mpage read code assembles several pages, gets all their disk mappings, and then submits them all. That's fine, but obtaining the disk mappings may require I/O. Reads of indirect blocks, for example. So an mpage read of the first 16 blocks of an ext2 file will cause I/O to be submitted in the following order: 12 0 1 2 3 4 5 6 7 8 9 10 11 13 14 15 16 because the indirect block has to be read to get the mappings of blocks 13,14,15,16. Obviously, this impacts performance. So what we do it to allow the filesystem's get_block() function to set BH_Boundary when it maps block 11. BH_Boundary says: mapping of the block after this one will require I/O against a block which is probably close to this one. So you should push what I/O you have currently accumulated. This all causes the disk requests to be issued in the correct order.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj£hh]”hŒ Parameters”…”�”}”(hj¥hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¡hubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:53: ./fs/mpage.c”h´MDhj�hubj¿)�”}”(hhh]”(jÄ)�”}”(hŒA``struct readahead_control *rac`` Describes which pages to read. ”h]”(jÊ)�”}”(hŒ!``struct readahead_control *rac``”h]”jÐ)�”}”(hjÂhh]”hŒstruct readahead_control *rac”…”�”}”(hjÄhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÀhubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:53: ./fs/mpage.c”h´MAhj¼hubjæ)�”}”(hhh]”hÌ)�”}”(hŒDescribes which pages to read.”h]”hŒDescribes which pages to read.”…”�”}”(hjÛhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j×hh´MAhjØhubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¼hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j×hh´MAhj¹hubjÄ)�”}”(hŒB``get_block_t get_block`` The filesystem's block mapper function. ”h]”(jÊ)�”}”(hŒ``get_block_t get_block``”h]”jÐ)�”}”(hjûhh]”hŒget_block_t get_block”…”�”}”(hjýhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjùhubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:53: ./fs/mpage.c”h´MBhjõhubjæ)�”}”(hhh]”hÌ)�”}”(hŒ'The filesystem's block mapper function.”h]”hŒ)The filesystem’s block mapper function.”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jih´MBhjiubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjõhubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jih´MBhj¹hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj�hubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj6ih]”hŒ Description”…”�”}”(hj8ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj4iubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:53: ./fs/mpage.c”h´MDhj�hubhÌ)�”}”(hŒ`This function walks the pages and the blocks within each page, building and emitting large BIOs.”h]”hŒ`This function walks the pages and the blocks within each page, building and emitting large BIOs.”…”�”}”(hjLih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:53: ./fs/mpage.c”h´MChj�hubhÌ)�”}”(hŒ%If anything unusual happens, such as:”h]”hŒ%If anything unusual happens, such as:”…”�”}”(hj[ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:53: ./fs/mpage.c”h´MFhj�hubj‘E)�”}”(hhh]”(j–E)�”}”(hŒ%encountering a page which has buffers”h]”hÌ)�”}”(hjoih]”hŒ%encountering a page which has buffers”…”�”}”(hjqih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:53: ./fs/mpage.c”h´MHhjmiubah}”(h]”h ]”h"]”h$]”h&]”uh1j•Ehjjiubj–E)�”}”(hŒ5encountering a page which has a non-hole after a hole”h]”hÌ)�”}”(hj‡ih]”hŒ5encountering a page which has a non-hole after a hole”…”�”}”(hj‰ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:53: ./fs/mpage.c”h´MIhj…iubah}”(h]”h ]”h"]”h$]”h&]”uh1j•Ehjjiubj–E)�”}”(hŒ/encountering a page with non-contiguous blocks ”h]”hÌ)�”}”(hŒ.encountering a page with non-contiguous blocks”h]”hŒ.encountering a page with non-contiguous blocks”…”�”}”(hj¡ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:53: ./fs/mpage.c”h´MJhj�iubah}”(h]”h ]”h"]”h$]”h&]”uh1j•Ehjjiubeh}”(h]”h ]”h"]”h$]”h&]”jÏEjÍ2uh1j�Eh³j~ih´MHhj�hubhÌ)�”}”(hŒÆthen this code just gives up and calls the buffer_head-based read function. It does handle a page which has holes at the end - that is a common case: the end-of-file on blocksize < PAGE_SIZE setups.”h]”hŒÆthen this code just gives up and calls the buffer_head-based read function. It does handle a page which has holes at the end - that is a common case: the end-of-file on blocksize < PAGE_SIZE setups.”…”�”}”(hj¼ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:53: ./fs/mpage.c”h´MLhj�hubhÌ)�”}”(hŒBH_Boundary explanation:”h]”hŒBH_Boundary explanation:”…”�”}”(hjËih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:53: ./fs/mpage.c”h´MPhj�hubhÌ)�”}”(hŒáThere is a problem. The mpage read code assembles several pages, gets all their disk mappings, and then submits them all. That's fine, but obtaining the disk mappings may require I/O. Reads of indirect blocks, for example.”h]”hŒãThere is a problem. The mpage read code assembles several pages, gets all their disk mappings, and then submits them all. That’s fine, but obtaining the disk mappings may require I/O. Reads of indirect blocks, for example.”…”�”}”(hjÚih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:53: ./fs/mpage.c”h´MRhj�hubhÌ)�”}”(hŒnSo an mpage read of the first 16 blocks of an ext2 file will cause I/O to be submitted in the following order:”h]”hŒnSo an mpage read of the first 16 blocks of an ext2 file will cause I/O to be submitted in the following order:”…”�”}”(hjéih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:53: ./fs/mpage.c”h´MVhj�hubjÁ™)�”}”(hŒ)12 0 1 2 3 4 5 6 7 8 9 10 11 13 14 15 16 ”h]”hÌ)�”}”(hŒ(12 0 1 2 3 4 5 6 7 8 9 10 11 13 14 15 16”•h]”hŒ(12 0 1 2 3 4 5 6 7 8 9 10 11 13 14 15 16”…”�”}”(hjüih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:53: ./fs/mpage.c”h´MYhjøiubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀ™h³j jh´MYhj�hubhÌ)�”}”(hŒzbecause the indirect block has to be read to get the mappings of blocks 13,14,15,16. Obviously, this impacts performance.”h]”hŒzbecause the indirect block has to be read to get the mappings of blocks 13,14,15,16. Obviously, this impacts performance.”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:53: ./fs/mpage.c”h´M[hj�hubhÌ)�”}”(hX#So what we do it to allow the filesystem's get_block() function to set BH_Boundary when it maps block 11. BH_Boundary says: mapping of the block after this one will require I/O against a block which is probably close to this one. So you should push what I/O you have currently accumulated.”h]”hX%So what we do it to allow the filesystem’s get_block() function to set BH_Boundary when it maps block 11. BH_Boundary says: mapping of the block after this one will require I/O against a block which is probably close to this one. So you should push what I/O you have currently accumulated.”…”�”}”(hj jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:53: ./fs/mpage.c”h´M^hj�hubhÌ)�”}”(hŒDThis all causes the disk requests to be issued in the correct order.”h]”hŒDThis all causes the disk requests to be issued in the correct order.”…”�”}”(hj/jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:53: ./fs/mpage.c”h´Mchj�hubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ__mpage_writepages (C function)”Œc.__mpage_writepages”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ´int __mpage_writepages (struct address_space *mapping, struct writeback_control *wbc, get_block_t get_block, int (*write_folio)(struct folio *folio, struct writeback_control *wbc))”h]”j)�”}”(hŒ³int __mpage_writepages(struct address_space *mapping, struct writeback_control *wbc, get_block_t get_block, int (*write_folio)(struct folio *folio, struct writeback_control *wbc))”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj^jh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjZjh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:53: ./fs/mpage.c”h´Mˆubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjZjh²hh³jljh´MˆubjC)�”}”(hŒ__mpage_writepages”h]”jI)�”}”(hŒ__mpage_writepages”h]”hŒ__mpage_writepages”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj{jubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjZjh²hh³jljh´Mˆubj=)�”}”(hŒ�(struct address_space *mapping, struct writeback_control *wbc, get_block_t get_block, int (*write_folio)(struct folio *folio, struct writeback_control *wbc))”h]”(jC)�”}”(hŒstruct address_space *mapping”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj›jh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj—jubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨jh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj—jubh)�”}”(hhh]”jI)�”}”(hŒ address_space”h]”hŒ address_space”…”�”}”(hj¹jh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¶jubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j»jŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj�jsbŒc.__mpage_writepages”†”asbuh1hhj—jubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj—jubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjçjh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj—jubjI)�”}”(hŒmapping”h]”hŒmapping”…”�”}”(hjôjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj—jubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj“jubjC)�”}”(hŒstruct writeback_control *wbc”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj kh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj kubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj kubh)�”}”(hhh]”jI)�”}”(hŒwriteback_control”h]”hŒwriteback_control”…”�”}”(hj+kh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj(kubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j-kŒmodname”NŒ classname”Njj )�”}”j ]”jÕjŒc.__mpage_writepages”†”asbuh1hhj kubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIkh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj kubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjWkh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj kubjI)�”}”(hŒwbc”h]”hŒwbc”…”�”}”(hjdkh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj“jubjC)�”}”(hŒget_block_t get_block”h]”(h)�”}”(hhh]”jI)�”}”(hŒ get_block_t”h]”hŒ get_block_t”…”�”}”(hj€kh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj}kubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j‚kŒmodname”NŒ classname”Njj )�”}”j ]”jÕjŒc.__mpage_writepages”†”asbuh1hhjykubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžkh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjykubjI)�”}”(hŒ get_block”h]”hŒ get_block”…”�”}”(hj¬kh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjykubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj“jubjC)�”}”(hŒFint (*write_folio)(struct folio *folio, struct writeback_control *wbc)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjÅkh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÁkubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓkh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÁkubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hjákh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÁkubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjîkh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÁkubjI)�”}”(hŒ write_folio”h]”hŒ write_folio”…”�”}”(hjûkh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÁkubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hj lh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÁkubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÁkubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj#lh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÁkubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0lh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÁkubh)�”}”(hhh]”jI)�”}”(hŒfolio”h]”hŒfolio”…”�”}”(hjAlh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj>lubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jClŒmodname”NŒ classname”Njj )�”}”j ]”jÕjŒc.__mpage_writepages”†”asbuh1hhjÁkubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_lh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÁkubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjmlh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÁkubjI)�”}”(hŒfolio”h]”hŒfolio”…”�”}”(hjzlh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÁkubj¯)�”}”(hjW¦h]”hŒ,”…”�”}”(hjˆlh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÁkubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•lh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÁkubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj£lh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÁkubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°lh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÁkubh)�”}”(hhh]”jI)�”}”(hŒwriteback_control”h]”hŒwriteback_control”…”�”}”(hjÁlh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¾lubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÃlŒmodname”NŒ classname”Njj )�”}”j ]”jÕjŒc.__mpage_writepages”†”asbuh1hhjÁkubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßlh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÁkubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjílh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÁkubjI)�”}”(hŒwbc”h]”hŒwbc”…”�”}”(hjúlh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÁkubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÁkubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj“jubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjZjh²hh³jljh´Mˆubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjVjh²hh³jljh´Mˆubah}”(h]”jQjah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jljh´MˆhjSjh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒQwalk the list of dirty pages of the given address space & writepage() all of them”h]”hŒQwalk the list of dirty pages of the given address space & writepage() all of them”…”�”}”(hj1mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:53: ./fs/mpage.c”h´Mˆhj.mh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjSjh²hh³jljh´Mˆubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jImjšjImj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX„**Parameters** ``struct address_space *mapping`` address space structure to write ``struct writeback_control *wbc`` subtract the number of written pages from ***wbc->nr_to_write** ``get_block_t get_block`` the filesystem's block mapper function. ``int (*write_folio)(struct folio *folio, struct writeback_control *wbc)`` handler to call for each folio before calling mpage_write_folio() **Description** This is a library function, which implements the writepages() address_space_operation. It calls **write_folio** handler for each folio. If the handler returns value > 0, it calls mpage_write_folio() to do the folio writeback.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjSmh]”hŒ Parameters”…”�”}”(hjUmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjQmubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:53: ./fs/mpage.c”h´MŒhjMmubj¿)�”}”(hhh]”(jÄ)�”}”(hŒC``struct address_space *mapping`` address space structure to write ”h]”(jÊ)�”}”(hŒ!``struct address_space *mapping``”h]”jÐ)�”}”(hjrmh]”hŒstruct address_space *mapping”…”�”}”(hjtmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjpmubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:53: ./fs/mpage.c”h´MŠhjlmubjæ)�”}”(hhh]”hÌ)�”}”(hŒ address space structure to write”h]”hŒ address space structure to write”…”�”}”(hj‹mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‡mh´MŠhjˆmubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjlmubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‡mh´MŠhjimubjÄ)�”}”(hŒb``struct writeback_control *wbc`` subtract the number of written pages from ***wbc->nr_to_write** ”h]”(jÊ)�”}”(hŒ!``struct writeback_control *wbc``”h]”jÐ)�”}”(hj«mh]”hŒstruct writeback_control *wbc”…”�”}”(hj­mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj©mubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:53: ./fs/mpage.c”h´M‹hj¥mubjæ)�”}”(hhh]”hÌ)�”}”(hŒ?subtract the number of written pages from ***wbc->nr_to_write**”h]”(hŒ*subtract the number of written pages from ”…”�”}”(hjÄmh²hh³Nh´Nubj©)�”}”(hŒ***wbc->nr_to_write**”h]”hŒ*wbc->nr_to_write”…”�”}”(hjÌmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÄmubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÀmh´M‹hjÁmubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¥mubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÀmh´M‹hjimubjÄ)�”}”(hŒB``get_block_t get_block`` the filesystem's block mapper function. ”h]”(jÊ)�”}”(hŒ``get_block_t get_block``”h]”jÐ)�”}”(hjòmh]”hŒget_block_t get_block”…”�”}”(hjômh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjðmubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:53: ./fs/mpage.c”h´MŒhjìmubjæ)�”}”(hhh]”hÌ)�”}”(hŒ'the filesystem's block mapper function.”h]”hŒ)the filesystem’s block mapper function.”…”�”}”(hj nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jnh´MŒhjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjìmubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jnh´MŒhjimubjÄ)�”}”(hŒ�``int (*write_folio)(struct folio *folio, struct writeback_control *wbc)`` handler to call for each folio before calling mpage_write_folio() ”h]”(jÊ)�”}”(hŒJ``int (*write_folio)(struct folio *folio, struct writeback_control *wbc)``”h]”jÐ)�”}”(hj+nh]”hŒFint (*write_folio)(struct folio *folio, struct writeback_control *wbc)”…”�”}”(hj-nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj)nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:53: ./fs/mpage.c”h´MŽhj%nubjæ)�”}”(hhh]”hÌ)�”}”(hŒAhandler to call for each folio before calling mpage_write_folio()”h]”hŒAhandler to call for each folio before calling mpage_write_folio()”…”�”}”(hjDnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:53: ./fs/mpage.c”h´M�hjAnubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj%nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j@nh´MŽhjimubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjMmubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjgnh]”hŒ Description”…”�”}”(hjinh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjenubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:53: ./fs/mpage.c”h´M�hjMmubhÌ)�”}”(hŒáThis is a library function, which implements the writepages() address_space_operation. It calls **write_folio** handler for each folio. If the handler returns value > 0, it calls mpage_write_folio() to do the folio writeback.”h]”(hŒ`This is a library function, which implements the writepages() address_space_operation. It calls ”…”�”}”(hj}nh²hh³Nh´Nubj©)�”}”(hŒ**write_folio**”h]”hŒ write_folio”…”�”}”(hj…nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj}nubhŒr handler for each folio. If the handler returns value > 0, it calls mpage_write_folio() to do the folio writeback.”…”�”}”(hj}nh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:53: ./fs/mpage.c”h´M�hjMmubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œgeneric_permission (C function)”Œc.generic_permission”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒUint generic_permission (const struct mnt_idmap *idmap, struct inode *inode, int mask)”h]”j)�”}”(hŒTint generic_permission(const struct mnt_idmap *idmap, struct inode *inode, int mask)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj¾nh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjºnh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Môubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍnh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjºnh²hh³jÌnh´MôubjC)�”}”(hŒgeneric_permission”h]”jI)�”}”(hŒgeneric_permission”h]”hŒgeneric_permission”…”�”}”(hjßnh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÛnubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjºnh²hh³jÌnh´Môubj=)�”}”(hŒ>(const struct mnt_idmap *idmap, struct inode *inode, int mask)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjûnh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj÷nubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj÷nubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj÷nubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#oh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj÷nubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hj4oh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj1oubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j6oŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjánsbŒc.generic_permission”†”asbuh1hhj÷nubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjToh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj÷nubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjboh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj÷nubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hjooh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj÷nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjónubjC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjˆoh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj„oubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•oh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj„oubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj¦oh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj£oubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¨oŒmodname”NŒ classname”Njj )�”}”j ]”jPoŒc.generic_permission”†”asbuh1hhj„oubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄoh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj„oubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÒoh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj„oubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjßoh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj„oubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjónubjC)�”}”(hŒint mask”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjøoh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjôoubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjôoubjI)�”}”(hŒmask”h]”hŒmask”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjôoubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjónubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjºnh²hh³jÌnh´Môubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj¶nh²hh³jÌnh´Môubah}”(h]”j±nah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÌnh´Môhj³nh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ2check for access rights on a Posix-like filesystem”h]”hŒ2check for access rights on a Posix-like filesystem”…”�”}”(hj>ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Môhj;ph²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj³nh²hh³jÌnh´Môubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jVpjšjVpj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ``struct inode *inode`` inode to check access rights for ``int mask`` right to check for (``MAY_READ``, ``MAY_WRITE``, ``MAY_EXEC``, ``MAY_NOT_BLOCK`` ...) **Description** Used to check for read/write/execute permissions on a file. We use "fsuid" for this, letting us set arbitrary permissions for filesystem access without changing the "normal" uids which are used for other things. generic_permission is rcu-walk aware. It returns -ECHILD in case an rcu-walk request cannot be satisfied (eg. requires blocking or too much complexity). It would then be called again in ref-walk mode. If the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through **idmap**. This function will then take care to map the inode according to **idmap** before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass **nop_mnt_idmap**.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj`ph]”hŒ Parameters”…”�”}”(hjbph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj^pubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MøhjZpubj¿)�”}”(hhh]”(jÄ)�”}”(hŒN``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjph]”hŒconst struct mnt_idmap *idmap”…”�”}”(hj�ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj}pubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mõhjypubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+idmap of the mount the inode was found from”h]”hŒ+idmap of the mount the inode was found from”…”�”}”(hj˜ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j”ph´Mõhj•pubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjypubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j”ph´MõhjvpubjÄ)�”}”(hŒ9``struct inode *inode`` inode to check access rights for ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj¸ph]”hŒstruct inode *inode”…”�”}”(hjºph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¶pubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Möhj²pubjæ)�”}”(hhh]”hÌ)�”}”(hŒ inode to check access rights for”h]”hŒ inode to check access rights for”…”�”}”(hjÑph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÍph´MöhjÎpubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj²pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÍph´MöhjvpubjÄ)�”}”(hŒc``int mask`` right to check for (``MAY_READ``, ``MAY_WRITE``, ``MAY_EXEC``, ``MAY_NOT_BLOCK`` ...) ”h]”(jÊ)�”}”(hŒ ``int mask``”h]”jÐ)�”}”(hjñph]”hŒint mask”…”�”}”(hjóph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjïpubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Møhjëpubjæ)�”}”(hhh]”hÌ)�”}”(hŒUright to check for (``MAY_READ``, ``MAY_WRITE``, ``MAY_EXEC``, ``MAY_NOT_BLOCK`` ...)”h]”(hŒright to check for (”…”�”}”(hj qh²hh³Nh´NubjÐ)�”}”(hŒ ``MAY_READ``”h]”hŒMAY_READ”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj qubhŒ, ”…”�”}”(hj qh²hh³Nh´NubjÐ)�”}”(hŒ ``MAY_WRITE``”h]”hŒ MAY_WRITE”…”�”}”(hj$qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj qubhŒ, ”…”�”}”hj qsbjÐ)�”}”(hŒ ``MAY_EXEC``”h]”hŒMAY_EXEC”…”�”}”(hj6qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj qubhŒ, ”…”�”}”(hj qh²hh³Nh´NubjÐ)�”}”(hŒ``MAY_NOT_BLOCK``”h]”hŒ MAY_NOT_BLOCK”…”�”}”(hjHqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj qubhŒ ...)”…”�”}”(hj qh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M÷hjqubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjëpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jqh´Møhjvpubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjZpubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjuqh]”hŒ Description”…”�”}”(hjwqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjsqubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MúhjZpubhÌ)�”}”(hŒÓUsed to check for read/write/execute permissions on a file. We use "fsuid" for this, letting us set arbitrary permissions for filesystem access without changing the "normal" uids which are used for other things.”h]”hŒÛUsed to check for read/write/execute permissions on a file. We use “fsuidâ€� for this, letting us set arbitrary permissions for filesystem access without changing the “normalâ€� uids which are used for other things.”…”�”}”(hj‹qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MùhjZpubhÌ)�”}”(hŒÈgeneric_permission is rcu-walk aware. It returns -ECHILD in case an rcu-walk request cannot be satisfied (eg. requires blocking or too much complexity). It would then be called again in ref-walk mode.”h]”hŒÈgeneric_permission is rcu-walk aware. It returns -ECHILD in case an rcu-walk request cannot be satisfied (eg. requires blocking or too much complexity). It would then be called again in ref-walk mode.”…”�”}”(hjšqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MþhjZpubhÌ)�”}”(hXLIf the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through **idmap**. This function will then take care to map the inode according to **idmap** before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass **nop_mnt_idmap**.”h]”(hŒgIf the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through ”…”�”}”(hj©qh²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hj±qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj©qubhŒB. This function will then take care to map the inode according to ”…”�”}”(hj©qh²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hjÃqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj©qubhŒ before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass ”…”�”}”(hj©qh²hh³Nh´Nubj©)�”}”(hŒ**nop_mnt_idmap**”h]”hŒ nop_mnt_idmap”…”�”}”(hjÕqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj©qubhŒ.”…”�”}”(hj©qh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MhjZpubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œinode_permission (C function)”Œc.inode_permission”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒSint inode_permission (const struct mnt_idmap *idmap, struct inode *inode, int mask)”h]”j)�”}”(hŒRint inode_permission(const struct mnt_idmap *idmap, struct inode *inode, int mask)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj rh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Miubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj rh²hh³jrh´MiubjC)�”}”(hŒinode_permission”h]”jI)�”}”(hŒinode_permission”h]”hŒinode_permission”…”�”}”(hj/rh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj+rubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj rh²hh³jrh´Miubj=)�”}”(hŒ>(const struct mnt_idmap *idmap, struct inode *inode, int mask)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjKrh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjGrubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXrh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjGrubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjfrh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjGrubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsrh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjGrubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hj„rh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�rubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j†rŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj1rsbŒc.inode_permission”†”asbuh1hhjGrubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤rh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjGrubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj²rh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjGrubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hj¿rh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjGrubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjCrubjC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjØrh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÔrubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjårh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÔrubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjörh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjórubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jørŒmodname”NŒ classname”Njj )�”}”j ]”j rŒc.inode_permission”†”asbuh1hhjÔrubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÔrubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj"sh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÔrubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj/sh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÔrubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjCrubjC)�”}”(hŒint mask”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjHsh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjDsubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVsh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjDsubjI)�”}”(hŒmask”h]”hŒmask”…”�”}”(hjdsh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjDsubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjCrubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj rh²hh³jrh´Miubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjrh²hh³jrh´Miubah}”(h]”jrah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jrh´Mihjrh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ(Check for access rights to a given inode”h]”hŒ(Check for access rights to a given inode”…”�”}”(hjŽsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mihj‹sh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjrh²hh³jrh´Miubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j¦sjšj¦sj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ``struct inode *inode`` Inode to check permission on ``int mask`` Right to check for (``MAY_READ``, ``MAY_WRITE``, ``MAY_EXEC``) **Description** Check for read/write/execute permissions on an inode. We use fs[ug]id for this, letting us set arbitrary permissions for filesystem access without changing the "normal" UIDs which are used for other things. When checking for MAY_APPEND, MAY_WRITE must also be set in **mask**.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj°sh]”hŒ Parameters”…”�”}”(hj²sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj®subah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mmhjªsubj¿)�”}”(hhh]”(jÄ)�”}”(hŒN``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjÏsh]”hŒconst struct mnt_idmap *idmap”…”�”}”(hjÑsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÍsubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MjhjÉsubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+idmap of the mount the inode was found from”h]”hŒ+idmap of the mount the inode was found from”…”�”}”(hjèsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jäsh´Mjhjåsubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÉsubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jäsh´MjhjÆsubjÄ)�”}”(hŒ5``struct inode *inode`` Inode to check permission on ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjth]”hŒstruct inode *inode”…”�”}”(hj th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjtubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mkhjtubjæ)�”}”(hhh]”hÌ)�”}”(hŒInode to check permission on”h]”hŒInode to check permission on”…”�”}”(hj!th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jth´Mkhjtubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjtubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jth´MkhjÆsubjÄ)�”}”(hŒL``int mask`` Right to check for (``MAY_READ``, ``MAY_WRITE``, ``MAY_EXEC``) ”h]”(jÊ)�”}”(hŒ ``int mask``”h]”jÐ)�”}”(hjAth]”hŒint mask”…”�”}”(hjCth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj?tubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mlhj;tubjæ)�”}”(hhh]”hÌ)�”}”(hŒ>Right to check for (``MAY_READ``, ``MAY_WRITE``, ``MAY_EXEC``)”h]”(hŒRight to check for (”…”�”}”(hjZth²hh³Nh´NubjÐ)�”}”(hŒ ``MAY_READ``”h]”hŒMAY_READ”…”�”}”(hjbth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjZtubhŒ, ”…”�”}”(hjZth²hh³Nh´NubjÐ)�”}”(hŒ ``MAY_WRITE``”h]”hŒ MAY_WRITE”…”�”}”(hjtth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjZtubhŒ, ”…”�”}”hjZtsbjÐ)�”}”(hŒ ``MAY_EXEC``”h]”hŒMAY_EXEC”…”�”}”(hj†th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjZtubhŒ)”…”�”}”(hjZth²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jVth´MlhjWtubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj;tubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jVth´MlhjÆsubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjªsubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj²th]”hŒ Description”…”�”}”(hj´th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj°tubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MnhjªsubhÌ)�”}”(hŒÏCheck for read/write/execute permissions on an inode. We use fs[ug]id for this, letting us set arbitrary permissions for filesystem access without changing the "normal" UIDs which are used for other things.”h]”hŒÓCheck for read/write/execute permissions on an inode. We use fs[ug]id for this, letting us set arbitrary permissions for filesystem access without changing the “normalâ€� UIDs which are used for other things.”…”�”}”(hjÈth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MmhjªsubhÌ)�”}”(hŒEWhen checking for MAY_APPEND, MAY_WRITE must also be set in **mask**.”h]”(hŒah"]”h$]”h&]”uh1j1hjuh²hh³j&uh´MÄubjC)�”}”(hŒpath_get”h]”jI)�”}”(hŒpath_get”h]”hŒpath_get”…”�”}”(hj9uh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj5uubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjuh²hh³j&uh´MÄubj=)�”}”(hŒ(const struct path *path)”h]”jC)�”}”(hŒconst struct path *path”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjUuh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjQuubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbuh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjQuubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjpuh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjQuubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}uh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjQuubh)�”}”(hhh]”jI)�”}”(hŒpath”h]”hŒpath”…”�”}”(hjŽuh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‹uubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j�uŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj;usbŒ c.path_get”†”asbuh1hhjQuubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®uh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjQuubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¼uh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjQuubjI)�”}”(hŒpath”h]”hŒpath”…”�”}”(hjÉuh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjQuubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjMuubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjuh²hh³j&uh´MÄubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjuh²hh³j&uh´MÄubah}”(h]”j uah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j&uh´MÄhj uh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒget a reference to a path”h]”hŒget a reference to a path”…”�”}”(hjóuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÄhjðuh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj uh²hh³j&uh´MÄubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j vjšj vj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hŒ§**Parameters** ``const struct path *path`` path to get the reference to **Description** Given a path increment the reference count to the dentry and the vfsmount.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjvh]”hŒ Parameters”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjvubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÈhjvubj¿)�”}”(hhh]”jÄ)�”}”(hŒ9``const struct path *path`` path to get the reference to ”h]”(jÊ)�”}”(hŒ``const struct path *path``”h]”jÐ)�”}”(hj4vh]”hŒconst struct path *path”…”�”}”(hj6vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj2vubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÅhj.vubjæ)�”}”(hhh]”hÌ)�”}”(hŒpath to get the reference to”h]”hŒpath to get the reference to”…”�”}”(hjMvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jIvh´MÅhjJvubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj.vubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jIvh´MÅhj+vubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjvubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjovh]”hŒ Description”…”�”}”(hjqvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjmvubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÇhjvubhÌ)�”}”(hŒJGiven a path increment the reference count to the dentry and the vfsmount.”h]”hŒJGiven a path increment the reference count to the dentry and the vfsmount.”…”�”}”(hj…vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÆhjvubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œpath_put (C function)”Œ c.path_put”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ'void path_put (const struct path *path)”h]”j)�”}”(hŒ&void path_put(const struct path *path)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj´vh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj°vh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÑubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃvh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj°vh²hh³jÂvh´MÑubjC)�”}”(hŒpath_put”h]”jI)�”}”(hŒpath_put”h]”hŒpath_put”…”�”}”(hjÕvh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÑvubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj°vh²hh³jÂvh´MÑubj=)�”}”(hŒ(const struct path *path)”h]”jC)�”}”(hŒconst struct path *path”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjñvh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjívubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþvh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjívubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj wh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjívubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjívubh)�”}”(hhh]”jI)�”}”(hŒpath”h]”hŒpath”…”�”}”(hj*wh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj'wubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j,wŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj×vsbŒ c.path_put”†”asbuh1hhjívubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJwh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjívubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjXwh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjívubjI)�”}”(hŒpath”h]”hŒpath”…”�”}”(hjewh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjívubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjévubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj°vh²hh³jÂvh´MÑubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj¬vh²hh³jÂvh´MÑubah}”(h]”j§vah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÂvh´MÑhj©vh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒput a reference to a path”h]”hŒput a reference to a path”…”�”}”(hj�wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÑhjŒwh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj©vh²hh³jÂvh´MÑubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j§wjšj§wj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hŒ§**Parameters** ``const struct path *path`` path to put the reference to **Description** Given a path decrement the reference count to the dentry and the vfsmount.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj±wh]”hŒ Parameters”…”�”}”(hj³wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¯wubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÕhj«wubj¿)�”}”(hhh]”jÄ)�”}”(hŒ9``const struct path *path`` path to put the reference to ”h]”(jÊ)�”}”(hŒ``const struct path *path``”h]”jÐ)�”}”(hjÐwh]”hŒconst struct path *path”…”�”}”(hjÒwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÎwubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÒhjÊwubjæ)�”}”(hhh]”hÌ)�”}”(hŒpath to put the reference to”h]”hŒpath to put the reference to”…”�”}”(hjéwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jåwh´MÒhjæwubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÊwubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jåwh´MÒhjÇwubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj«wubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj xh]”hŒ Description”…”�”}”(hj xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj xubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÔhj«wubhÌ)�”}”(hŒJGiven a path decrement the reference count to the dentry and the vfsmount.”h]”hŒJGiven a path decrement the reference count to the dentry and the vfsmount.”…”�”}”(hj!xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÓhj«wubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œend_dirop (C function)”Œ c.end_dirop”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ"void end_dirop (struct dentry *de)”h]”j)�”}”(hŒ!void end_dirop(struct dentry *de)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjPxh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjLxh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mˆ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_xh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjLxh²hh³j^xh´Mˆ ubjC)�”}”(hŒ end_dirop”h]”jI)�”}”(hŒ end_dirop”h]”hŒ end_dirop”…”�”}”(hjqxh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjmxubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjLxh²hh³j^xh´Mˆ ubj=)�”}”(hŒ(struct dentry *de)”h]”jC)�”}”(hŒstruct dentry *de”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj�xh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj‰xubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšxh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‰xubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj«xh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¨xubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j­xŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjsxsbŒ c.end_dirop”†”asbuh1hhj‰xubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËxh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‰xubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÙxh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj‰xubjI)�”}”(hŒde”h]”hŒde”…”�”}”(hjæxh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‰xubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj…xubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjLxh²hh³j^xh´Mˆ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjHxh²hh³j^xh´Mˆ ubah}”(h]”jCxah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j^xh´Mˆ hjExh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒsignal completion of a dirop”h]”hŒsignal completion of a dirop”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mˆ hj yh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjExh²hh³j^xh´Mˆ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j(yjšj(yj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX**Parameters** ``struct dentry *de`` the dentry which was returned by start_dirop or similar. **Description** If the **de** is an error, nothing happens. Otherwise any lock taken to protect the dentry is dropped and the dentry itself is released (dput()).”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj2yh]”hŒ Parameters”…”�”}”(hj4yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj0yubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MŒ hj,yubj¿)�”}”(hhh]”jÄ)�”}”(hŒO``struct dentry *de`` the dentry which was returned by start_dirop or similar. ”h]”(jÊ)�”}”(hŒ``struct dentry *de``”h]”jÐ)�”}”(hjQyh]”hŒstruct dentry *de”…”�”}”(hjSyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjOyubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M‰ hjKyubjæ)�”}”(hhh]”hÌ)�”}”(hŒ8the dentry which was returned by start_dirop or similar.”h]”hŒ8the dentry which was returned by start_dirop or similar.”…”�”}”(hjjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jfyh´M‰ hjgyubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjKyubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jfyh´M‰ hjHyubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj,yubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjŒyh]”hŒ Description”…”�”}”(hjŽyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjŠyubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M‹ hj,yubhÌ)�”}”(hŒ‘If the **de** is an error, nothing happens. Otherwise any lock taken to protect the dentry is dropped and the dentry itself is released (dput()).”h]”(hŒIf the ”…”�”}”(hj¢yh²hh³Nh´Nubj©)�”}”(hŒ**de**”h]”hŒde”…”�”}”(hjªyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¢yubhŒ„ is an error, nothing happens. Otherwise any lock taken to protect the dentry is dropped and the dentry itself is released (dput()).”…”�”}”(hj¢yh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MŠ hj,yubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ#vfs_path_parent_lookup (C function)”Œc.vfs_path_parent_lookup”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ‹int vfs_path_parent_lookup (struct filename *filename, unsigned int flags, struct path *parent, struct qstr *last, const struct path *root)”h]”j)�”}”(hŒŠint vfs_path_parent_lookup(struct filename *filename, unsigned int flags, struct path *parent, struct qstr *last, const struct path *root)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjãyh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjßyh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mç ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòyh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjßyh²hh³jñyh´Mç ubjC)�”}”(hŒvfs_path_parent_lookup”h]”jI)�”}”(hŒvfs_path_parent_lookup”h]”hŒvfs_path_parent_lookup”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjzubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjßyh²hh³jñyh´Mç ubj=)�”}”(hŒp(struct filename *filename, unsigned int flags, struct path *parent, struct qstr *last, const struct path *root)”h]”(jC)�”}”(hŒstruct filename *filename”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj zh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjzubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-zh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjzubh)�”}”(hhh]”jI)�”}”(hŒfilename”h]”hŒfilename”…”�”}”(hj>zh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj;zubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j@zŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjzsbŒc.vfs_path_parent_lookup”†”asbuh1hhjzubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^zh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjzubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjlzh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjzubjI)�”}”(hŒfilename”h]”hŒfilename”…”�”}”(hjyzh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjzubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjzubjC)�”}”(hŒunsigned int flags”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj’zh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjŽzubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj zh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjŽzubj�)�”}”(hŒint”h]”hŒint”…”�”}”(hj®zh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjŽzubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼zh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjŽzubjI)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjÊzh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŽzubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjzubjC)�”}”(hŒstruct path *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjãzh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjßzubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðzh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjßzubh)�”}”(hhh]”jI)�”}”(hŒpath”h]”hŒpath”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjþzubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j{Œmodname”NŒ classname”Njj )�”}”j ]”jZzŒc.vfs_path_parent_lookup”†”asbuh1hhjßzubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjßzubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj-{h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjßzubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hj:{h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjßzubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjzubjC)�”}”(hŒstruct qstr *last”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjS{h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjO{ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`{h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjO{ubh)�”}”(hhh]”jI)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(hjq{h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjn{ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”js{Œmodname”NŒ classname”Njj )�”}”j ]”jZzŒc.vfs_path_parent_lookup”†”asbuh1hhjO{ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�{h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjO{ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj�{h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjO{ubjI)�”}”(hŒlast”h]”hŒlast”…”�”}”(hjª{h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjO{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjzubjC)�”}”(hŒconst struct path *root”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjÃ{h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¿{ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐ{h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¿{ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÞ{h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¿{ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjë{h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¿{ubh)�”}”(hhh]”jI)�”}”(hŒpath”h]”hŒpath”…”�”}”(hjü{h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjù{ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jþ{Œmodname”NŒ classname”Njj )�”}”j ]”jZzŒc.vfs_path_parent_lookup”†”asbuh1hhj¿{ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¿{ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj(|h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¿{ubjI)�”}”(hŒroot”h]”hŒroot”…”�”}”(hj5|h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¿{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjzubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjßyh²hh³jñyh´Mç ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÛyh²hh³jñyh´Mç ubah}”(h]”jÖyah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jñyh´Mç hjØyh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ7lookup a parent path relative to a dentry-vfsmount pair”h]”hŒ7lookup a parent path relative to a dentry-vfsmount pair”…”�”}”(hj_|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mç hj\|h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjØyh²hh³jñyh´Mç ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jw|jšjw|j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX**Parameters** ``struct filename *filename`` filename structure ``unsigned int flags`` lookup flags ``struct path *parent`` pointer to struct path to fill ``struct qstr *last`` last component ``const struct path *root`` pointer to struct path of the base directory”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj�|h]”hŒ Parameters”…”�”}”(hjƒ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Më hj{|ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ1``struct filename *filename`` filename structure ”h]”(jÊ)�”}”(hŒ``struct filename *filename``”h]”jÐ)�”}”(hj |h]”hŒstruct filename *filename”…”�”}”(hj¢|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjž|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mè hjš|ubjæ)�”}”(hhh]”hÌ)�”}”(hŒfilename structure”h]”hŒfilename structure”…”�”}”(hj¹|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jµ|h´Mè hj¶|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjš|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jµ|h´Mè hj—|ubjÄ)�”}”(hŒ$``unsigned int flags`` lookup flags ”h]”(jÊ)�”}”(hŒ``unsigned int flags``”h]”jÐ)�”}”(hjÙ|h]”hŒunsigned int flags”…”�”}”(hjÛ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj×|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mé hjÓ|ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ lookup flags”h]”hŒ lookup flags”…”�”}”(hjò|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jî|h´Mé hjï|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÓ|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jî|h´Mé hj—|ubjÄ)�”}”(hŒ7``struct path *parent`` pointer to struct path to fill ”h]”(jÊ)�”}”(hŒ``struct path *parent``”h]”jÐ)�”}”(hj}h]”hŒstruct path *parent”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mê hj }ubjæ)�”}”(hhh]”hÌ)�”}”(hŒpointer to struct path to fill”h]”hŒpointer to struct path to fill”…”�”}”(hj+}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j'}h´Mê hj(}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj }ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j'}h´Mê hj—|ubjÄ)�”}”(hŒ%``struct qstr *last`` last component ”h]”(jÊ)�”}”(hŒ``struct qstr *last``”h]”jÐ)�”}”(hjK}h]”hŒstruct qstr *last”…”�”}”(hjM}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjI}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Më hjE}ubjæ)�”}”(hhh]”hÌ)�”}”(hŒlast component”h]”hŒlast component”…”�”}”(hjd}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j`}h´Më hja}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjE}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j`}h´Më hj—|ubjÄ)�”}”(hŒH``const struct path *root`` pointer to struct path of the base directory”h]”(jÊ)�”}”(hŒ``const struct path *root``”h]”jÐ)�”}”(hj„}h]”hŒconst struct path *root”…”�”}”(hj†}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj‚}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mí hj~}ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ,pointer to struct path of the base directory”h]”hŒ,pointer to struct path of the base directory”…”�”}”(hj�}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mì hjš}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj~}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j™}h´Mí hj—|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj{|ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_path_lookup (C function)”Œc.vfs_path_lookup”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒzint vfs_path_lookup (struct dentry *dentry, struct vfsmount *mnt, const char *name, unsigned int flags, struct path *path)”h]”j)�”}”(hŒyint vfs_path_lookup(struct dentry *dentry, struct vfsmount *mnt, const char *name, unsigned int flags, struct path *path)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjÞ}h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÚ}h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjí}h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÚ}h²hh³jì}h´M ubjC)�”}”(hŒvfs_path_lookup”h]”jI)�”}”(hŒvfs_path_lookup”h]”hŒvfs_path_lookup”…”�”}”(hjÿ}h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjû}ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÚ}h²hh³jì}h´M ubj=)�”}”(hŒf(struct dentry *dentry, struct vfsmount *mnt, const char *name, unsigned int flags, struct path *path)”h]”(jC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj~ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(~h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj~ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj9~h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj6~ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j;~Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj~sbŒc.vfs_path_lookup”†”asbuh1hhj~ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY~h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj~ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjg~h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj~ubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjt~h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj~ubjC)�”}”(hŒstruct vfsmount *mnt”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj�~h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj‰~ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš~h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‰~ubh)�”}”(hhh]”jI)�”}”(hŒvfsmount”h]”hŒvfsmount”…”�”}”(hj«~h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¨~ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j­~Œmodname”NŒ classname”Njj )�”}”j ]”jU~Œc.vfs_path_lookup”†”asbuh1hhj‰~ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉ~h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‰~ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj×~h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj‰~ubjI)�”}”(hŒmnt”h]”hŒmnt”…”�”}”(hjä~h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‰~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj~ubjC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjý~h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjù~ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjù~ubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjù~ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjù~ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjù~ubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjù~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj~ubjC)�”}”(hŒunsigned int flags”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjVubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjVubj�)�”}”(hŒint”h]”hŒint”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjVubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjVubjI)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjVubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj~ubjC)�”}”(hŒstruct path *path”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj§ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj§ubh)�”}”(hhh]”jI)�”}”(hŒpath”h]”hŒpath”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jËŒmodname”NŒ classname”Njj )�”}”j ]”jU~Œc.vfs_path_lookup”†”asbuh1hhj§ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj§ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj§ubjI)�”}”(hŒpath”h]”hŒpath”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj~ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÚ}h²hh³jì}h´M ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÖ}h²hh³jì}h´M ubah}”(h]”jÑ}ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jì}h´M hjÓ}h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ5lookup a file path relative to a dentry-vfsmount pair”h]”hŒ5lookup a file path relative to a dentry-vfsmount pair”…”�”}”(hj,€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M hj)€h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÓ}h²hh³jì}h´M ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jD€jšjD€j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX&**Parameters** ``struct dentry *dentry`` pointer to dentry of the base directory ``struct vfsmount *mnt`` pointer to vfs mount of the base directory ``const char *name`` pointer to file name ``unsigned int flags`` lookup flags ``struct path *path`` pointer to struct path to fill”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjN€h]”hŒ Parameters”…”�”}”(hjP€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjL€ubah}”(h]”h ]”h"•]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M hjH€ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒB``struct dentry *dentry`` pointer to dentry of the base directory ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hjm€h]”hŒstruct dentry *dentry”…”�”}”(hjo€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjk€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M hjg€ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ'pointer to dentry of the base directory”h]”hŒ'pointer to dentry of the base directory”…”�”}”(hj†€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‚€h´M hjƒ€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjg€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‚€h´M hjd€ubjÄ)�”}”(hŒD``struct vfsmount *mnt`` pointer to vfs mount of the base directory ”h]”(jÊ)�”}”(hŒ``struct vfsmount *mnt``”h]”jÐ)�”}”(hj¦€h]”hŒstruct vfsmount *mnt”…”�”}”(hj¨€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¤€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M hj €ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ*pointer to vfs mount of the base directory”h]”hŒ*pointer to vfs mount of the base directory”…”�”}”(hj¿€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j»€h´M hj¼€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj €ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j»€h´M hjd€ubjÄ)�”}”(hŒ*``const char *name`` pointer to file name ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hj߀h]”hŒconst char *name”…”�”}”(hjá€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÝ€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M hjÙ€ubjæ)�”}”(hhh]”hÌ)�”}”(hŒpointer to file name”h]”hŒpointer to file name”…”�”}”(hjø€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jô€h´M hjõ€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÙ€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jô€h´M hjd€ubjÄ)�”}”(hŒ$``unsigned int flags`` lookup flags ”h]”(jÊ)�”}”(hŒ``unsigned int flags``”h]”jÐ)�”}”(hj�h]”hŒunsigned int flags”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M hj�ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ lookup flags”h]”hŒ lookup flags”…”�”}”(hj1�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j-�h´M hj.�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j-�h´M hjd€ubjÄ)�”}”(hŒ4``struct path *path`` pointer to struct path to fill”h]”(jÊ)�”}”(hŒ``struct path *path``”h]”jÐ)�”}”(hjQ�h]”hŒstruct path *path”…”�”}”(hjS�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjO�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M hjK�ubjæ)�”}”(hhh]”hÌ)�”}”(hŒpointer to struct path to fill”h]”hŒpointer to struct path to fill”…”�”}”(hjj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M hjg�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjK�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jf�h´M hjd€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjH€ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œtry_lookup_noperm (C function)”Œc.try_lookup_noperm”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒJstruct dentry * try_lookup_noperm (struct qstr *name, struct dentry *base)”h]”j)�”}”(hŒHstruct dentry *try_lookup_noperm(struct qstr *name, struct dentry *base)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj«�h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj§�h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M; ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj§�h²hh³j¸�h´M; ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjÊ�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÇ�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÌ�Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒtry_lookup_noperm”sbŒc.try_lookup_noperm”†”asbuh1hhj§�h²hh³j¸�h´M; ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjë�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj§�h²hh³j¸�h´M; ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjù�h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj§�h²hh³j¸�h´M; ubjC)�”}”(hŒtry_lookup_noperm”h]”jI)�”}”(hjè�h]”hŒtry_lookup_noperm”…”�”}”(hj ‚h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‚ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj§�h²hh³j¸�h´M; ubj=)�”}”(hŒ((struct qstr *name, struct dentry *base)”h]”(jC)�”}”(hŒstruct qstr *name”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj%‚h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj!‚ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2‚h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj!‚ubh)�”}”(hhh]”jI)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(hjC‚h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj@‚ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jE‚Œmodname”NŒ classname”Njj )�”}”j ]”jæ�Œc.try_lookup_noperm”†”asbuh1hhj!‚ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hja‚h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj!‚ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjo‚h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj!‚ubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj|‚h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj!‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj‚ubjC)�”}”(hŒstruct dentry *base”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj•‚h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj‘‚ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢‚h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‘‚ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj³‚h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj°‚ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jµ‚Œmodname”NŒ classname”Njj )�”}”j ]”jæ�Œc.try_lookup_noperm”†”asbuh1hhj‘‚ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑ‚h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‘‚ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjß‚h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj‘‚ubjI)�”}”(hŒbase”h]”hŒbase”…”�”}”(hjì‚h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‘‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj‚ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj§�h²hh³j¸�h´M; ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj£�h²hh³j¸�h´M; ubah}”(h]”jž�ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j¸�h´M; hj �h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ5filesystem helper to lookup single pathname component”h]”hŒ5filesystem helper to lookup single pathname component”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M; hjƒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj �h²hh³j¸�h´M; ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j.ƒjšj.ƒj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX?**Parameters** ``struct qstr *name`` qstr storing pathname component to lookup ``struct dentry *base`` base directory to lookup from **Description** Look up a dentry by name in the dcache, returning NULL if it does not currently exist or an error if there is a problem with the name. The function does not try to create a dentry and if one is found it doesn't try to revalidate it. Note that this routine is purely a helper for filesystem usage and should not be called by generic code. It does no permission checking. No locks need be held - only a counted reference to **base** is needed. **Return** - ref-counted dentry on success, or - ``NULL`` if name could not be found, or - ERR_PTR(-EACCES) if name is dot or dotdot or contains a slash or nul, or - ERR_PTR() if fs provide ->d_hash, and this returned an error.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj8ƒh]”hŒ Parameters”…”�”}”(hj:ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj6ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M? hj2ƒubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ@``struct qstr *name`` qstr storing pathname component to lookup ”h]”(jÊ)�”}”(hŒ``struct qstr *name``”h]”jÐ)�”}”(hjWƒh]”hŒstruct qstr *name”…”�”}”(hjYƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjUƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M< hjQƒubjæ)�”}”(hhh]”hÌ)�”}”(hŒ)qstr storing pathname component to lookup”h]”hŒ)qstr storing pathname component to lookup”…”�”}”(hjpƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jlƒh´M< hjmƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjQƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jlƒh´M< hjNƒubjÄ)�”}”(hŒ6``struct dentry *base`` base directory to lookup from ”h]”(jÊ)�”}”(hŒ``struct dentry *base``”h]”jÐ)�”}”(hj�ƒh]”hŒstruct dentry *base”…”�”}”(hj’ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjŽƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M= hjŠƒubjæ)�”}”(hhh]”hÌ)�”}”(hŒbase directory to lookup from”h]”hŒbase directory to lookup from”…”�”}”(hj©ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¥ƒh´M= hj¦ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjŠƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¥ƒh´M= hjNƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj2ƒubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj˃h]”hŒ Description”…”�”}”(hj̓h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjɃubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M? hj2ƒubhÌ)�”}”(hŒèLook up a dentry by name in the dcache, returning NULL if it does not currently exist or an error if there is a problem with the name. The function does not try to create a dentry and if one is found it doesn't try to revalidate it.”h]”hŒêLook up a dentry by name in the dcache, returning NULL if it does not currently exist or an error if there is a problem with the name. The function does not try to create a dentry and if one is found it doesn’t try to revalidate it.”…”�”}”(hjáƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M> hj2ƒubhÌ)�”}”(hŒ‰Note that this routine is purely a helper for filesystem usage and should not be called by generic code. It does no permission checking.”h]”hŒ‰Note that this routine is purely a helper for filesystem usage and should not be called by generic code. It does no permission checking.”…”�”}”(hjðƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MC hj2ƒubhÌ)�”}”(hŒGNo locks need be held - only a counted reference to **base** is needed.”h]”(hŒ4No locks need be held - only a counted reference to ”…”�”}”(hjÿƒh²hh³Nh´Nubj©)�”}”(hŒ**base**”h]”hŒbase”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÿƒubhŒ is needed.”…”�”}”(hjÿƒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MF hj2ƒubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj"„h]”hŒReturn”…”�”}”(hj$„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj „ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MH hj2ƒubj‘E)�”}”(hhh]”(j–E)�”}”(hŒ!ref-counted dentry on success, or”h]”hÌ)�”}”(hj=„h]”hŒ!ref-counted dentry on success, or”…”�”}”(hj?„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MI hj;„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•Ehj8„ubj–E)�”}”(hŒ'``NULL`` if name could not be found, or”h]”hÌ)�”}”(hjU„h]”(jÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjZ„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjW„ubhŒ if name could not be found, or”…”�”}”(hjW„h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MJ hjS„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•Ehj8„ubj–E)�”}”(hŒHERR_PTR(-EACCES) if name is dot or dotdot or contains a slash or nul, or”h]”hÌ)�”}”(hj{„h]”hŒHERR_PTR(-EACCES) if name is dot or dotdot or contains a slash or nul, or”…”�”}”(hj}„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MK hjy„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•Ehj8„ubj–E)�”}”(hŒ=ERR_PTR() if fs provide ->d_hash, and this returned an error.”h]”hÌ)�”}”(hj“„h]”hŒ=ERR_PTR() if fs provide ->d_hash, and this returned an error.”…”�”}”(hj•„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´ML hj‘„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•Ehj8„ubeh}”(h]”h ]”h"]”h$]”h&]”jÏEjÍ2uh1j�Eh³jL„h´MI hj2ƒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œlookup_noperm (C function)”Œc.lookup_noperm”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒFstruct dentry * lookup_noperm (struct qstr *name, struct dentry *base)”h]”j)�”}”(hŒDstruct dentry *lookup_noperm(struct qstr *name, struct dentry *base)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÏ„h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjË„h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M\ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝ„h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjË„h²hh³jÜ„h´M\ ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjî„h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjë„ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jð„Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒ lookup_noperm”sbŒc.lookup_noperm”†”asbuh1hhjË„h²hh³jÜ„h´M\ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjË„h²hh³jÜ„h´M\ ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjË„h²hh³jÜ„h´M\ ubjC)�”}”(hŒ lookup_noperm”h]”jI)�”}”(hj …h]”hŒ lookup_noperm”…”�”}”(hj.…h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj*…ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjË„h²hh³jÜ„h´M\ ubj=)�”}”(hŒ((struct qstr *name, struct dentry *base)”h]”(jC)�”}”(hŒstruct qstr *name”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjI…h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjE…ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjV…h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjE…ubh)�”}”(hhh]”jI)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(hjg…h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjd…ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”ji…Œmodname”NŒ classname”Njj )�”}”j ]”j …Œc.lookup_noperm”†”asbuh1hhjE…ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj……h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjE…ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj“…h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjE…ubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj …h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjE…ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjA…ubjC)�”}”(hŒstruct dentry *base”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¹…h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjµ…ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆ…h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjµ…ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj×…h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÔ…ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÙ…Œmodname”NŒ classname”Njj )�”}”j ]”j …Œc.lookup_noperm”†”asbuh1hhjµ…ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ…h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjµ…ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjµ…ubjI)�”}”(hŒbase”h]”hŒbase”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjµ…ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjA…ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjË„h²hh³jÜ„h´M\ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÇ„h²hh³jÜ„h´M\ ubah}”(h]”j„ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÜ„h´M\ hjÄ„h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ5filesystem helper to lookup single pathname component”h]”hŒ5filesystem helper to lookup single pathname component”…”�”}”(hj:†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M\ hj7†h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÄ„h²hh³jÜ„h´M\ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jR†jšjR†j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXK**Parameters** ``struct qstr *name`` qstr storing pathname component to lookup ``struct dentry *base`` base directory to lookup from **Description** Note that this routine is purely a helper for filesystem usage and should not be called by generic code. It does no permission checking. The caller must hold base->i_rwsem.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj\†h]”hŒ Parameters”…”�”}”(hj^†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjZ†ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M` hjV†ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ@``struct qstr *name`` qstr storing pathname component to lookup ”h]”(jÊ)�”}”(hŒ``struct qstr *name``”h]”jÐ)�”}”(hj{†h]”hŒstruct qstr *name”…”�”}”(hj}†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjy†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M] hju†ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ)qstr storing pathname component to lookup”h]”hŒ)qstr storing pathname component to lookup”…”�”}”(hj”†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�†h´M] hj‘†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhju†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j�†h´M] hjr†ubjÄ)�”}”(hŒ6``struct dentry *base`` base directory to lookup from ”h]”(jÊ)�”}”(hŒ``struct dentry *base``”h]”jÐ)�”}”(hj´†h]”hŒstruct dentry *base”…”�”}”(hj¶†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj²†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M^ hj®†ubjæ)�”}”(hhh]”hÌ)�”}”(hŒbase directory to lookup from”h]”hŒbase directory to lookup from”…”�”}”(hj͆h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jɆh´M^ hjʆubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj®†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jɆh´M^ hjr†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjV†ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjï†h]”hŒ Description”…”�”}”(hjñ†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjí†ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M` hjV†ubhÌ)�”}”(hŒ‰Note that this routine is purely a helper for filesystem usage and should not be called by generic code. It does no permission checking.”h]”hŒ‰Note that this routine is purely a helper for filesystem usage and should not be called by generic code. It does no permission checking.”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M_ hjV†ubhÌ)�”}”(hŒ#The caller must hold base->i_rwsem.”h]”hŒ#The caller must hold base->i_rwsem.”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mb hjV†ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œlookup_one (C function)”Œ c.lookup_one”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒbstruct dentry * lookup_one (const struct mnt_idmap *idmap, struct qstr *name, struct dentry *base)”h]”j)�”}”(hŒ`struct dentry *lookup_one(const struct mnt_idmap *idmap, struct qstr *name, struct dentry *base)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjC‡h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj?‡h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mv ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ‡h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj?‡h²hh³jP‡h´Mv ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjb‡h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj_‡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jd‡Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒ lookup_one”sbŒ c.lookup_one”†”asbuh1hhj?‡h²hh³jP‡h´Mv ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ‡h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj?‡h²hh³jP‡h´Mv ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj‘‡h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj?‡h²hh³jP‡h´Mv ubjC)�”}”(hŒ lookup_one”h]”jI)�”}”(hj€‡h]”hŒ lookup_one”…”�”}”(hj¢‡h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjž‡ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj?‡h²hh³jP‡h´Mv ubj=)�”}”(hŒG(const struct mnt_idmap *idmap, struct qstr *name, struct dentry *base)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj½‡h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¹‡ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjʇh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¹‡ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj؇h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¹‡ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjå‡h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¹‡ubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hjö‡h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjó‡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jø‡Œmodname”NŒ classname”Njj )�”}”j ]”j~‡Œ c.lookup_one”†”asbuh1hhj¹‡ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¹‡ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj"ˆh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¹‡ubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hj/ˆh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¹‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjµ‡ubjC)�”}”(hŒstruct qstr *name”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjHˆh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjDˆubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUˆh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjDˆubh)�”}”(hhh]”jI)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(hjfˆh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjcˆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jhˆŒmodname”NŒ classname”Njj )�”}”j ]”j~‡Œ c.lookup_one”†”asbuh1hhjDˆubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„ˆh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjDˆubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj’ˆh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjDˆubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hjŸˆh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjDˆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjµ‡ubjC)�”}”(hŒstruct dentry *base”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¸ˆh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj´ˆubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjňh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj´ˆubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjÖˆh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÓˆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j؈Œmodname”NŒ classname”Njj )�”}”j ]”j~‡Œ c.lookup_one”†”asbuh1hhj´ˆubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôˆh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj´ˆubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj´ˆubjI)�”}”(hŒbase”h]”hŒbase”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj´ˆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjµ‡ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj?‡h²hh³jP‡h´Mv ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj;‡h²hh³jP‡h´Mv ubah}”(h]”j6‡ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jP‡h´Mv hj8‡h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ lookup single pathname component”h]”hŒ lookup single pathname component”…”�”}”(hj9‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mv hj6‰h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj8‡h²hh³jP‡h´Mv ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jQ‰jšjQ‰j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX^**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount the lookup is performed from ``struct qstr *name`` qstr holding pathname component to lookup ``struct dentry *base`` base directory to lookup from **Description** This can be used for in-kernel filesystem clients such as file servers. The caller must hold base->i_rwsem.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj[‰h]”hŒ Parameters”…”�”}”(hj]‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjY‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mz hjU‰ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒR``const struct mnt_idmap *idmap`` idmap of the mount the lookup is performed from ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjz‰h]”hŒconst struct mnt_idmap *idmap”…”�”}”(hj|‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjx‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mw hjt‰ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ/idmap of the mount the lookup is performed from”h]”hŒ/idmap of the mount the lookup is performed from”…”�”}”(hj“‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�‰h´Mw hj�‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjt‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j�‰h´Mw hjq‰ubjÄ)�”}”(hŒ@``struct qstr *name`` qstr holding pathname component to lookup ”h]”(jÊ)�”}”(hŒ``struct qstr *name``”h]”jÐ)�”}”(hj³‰h]”hŒstruct qstr *name”…”�”}”(hjµ‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj±‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mx hj­‰ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ)qstr holding pathname component to lookup”h]”hŒ)qstr holding pathname component to lookup”…”�”}”(hj̉h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jȉh´Mx hjɉubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj­‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jȉh´Mx hjq‰ubjÄ)�”}”(hŒ6``struct dentry *base`` base directory to lookup from ”h]”(jÊ)�”}”(hŒ``struct dentry *base``”h]”jÐ)�”}”(hjì‰h]”hŒstruct dentry *base”…”�”}”(hjî‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjê‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´My hjæ‰ubjæ)�”}”(hhh]”hÌ)�”}”(hŒbase directory to lookup from”h]”hŒbase directory to lookup from”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jŠh´My hjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjæ‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jŠh´My hjq‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjU‰ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj'Šh]”hŒ Description”…”�”}”(hj)Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj%Šubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M{ hjU‰ubhÌ)�”}”(hŒGThis can be used for in-kernel filesystem clients such as file servers.”h]”hŒGThis can be used for in-kernel filesystem clients such as file servers.”…”�”}”(hj=Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mz hjU‰ubhÌ)�”}”(hŒ#The caller must hold base->i_rwsem.”h]”hŒ#The caller must hold base->i_rwsem.”…”�”}”(hjLŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M| hjU‰ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ lookup_one_unlocked (C function)”Œc.lookup_one_unlocked”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒkstruct dentry * lookup_one_unlocked (const struct mnt_idmap *idmap, struct qstr *name, struct dentry *base)”h]”j)�”}”(hŒistruct dentry *lookup_one_unlocked(const struct mnt_idmap *idmap, struct qstr *name, struct dentry *base)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj{Šh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjwŠh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M‘ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰Šh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjwŠh²hh³jˆŠh´M‘ ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjšŠh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj—Šubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jœŠŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒlookup_one_unlocked”sbŒc.lookup_one_unlocked”†”asbuh1hhjwŠh²hh³jˆŠh´M‘ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»Šh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjwŠh²hh³jˆŠh´M‘ ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÉŠh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjwŠh²hh³jˆŠh´M‘ ubjC)�”}”(hŒlookup_one_unlocked”h]”jI)�”}”(hj¸Šh]”hŒlookup_one_unlocked”…”�”}”(hjÚŠh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÖŠubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjwŠh²hh³jˆŠh´M‘ ubj=)�”}”(hŒG(const struct mnt_idmap *idmap, struct qstr *name, struct dentry *base)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjõŠh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjñŠubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjñŠubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjñŠubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjñŠubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hj.‹h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj+‹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j0‹Œmodname”NŒ classname”Njj )�”}”j ]”j¶ŠŒc.lookup_one_unlocked”†”asbuh1hhjñŠubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjL‹h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjñŠubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjZ‹h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjñŠubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hjg‹h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjñŠubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjíŠubjC)�”}”(hŒstruct qstr *name”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj€‹h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj|‹ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�‹h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj|‹ubh)�”}”(hhh]”jI)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(hjž‹h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj›‹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j ‹Œmodname”NŒ classname”Njj )�”}”j ]”j¶ŠŒc.lookup_one_unlocked”†”asbuh1hhj|‹ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼‹h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj|‹ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÊ‹h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj|‹ubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj׋h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj|‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjíŠubjC)�”}”(hŒstruct dentry *base”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjð‹h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjì‹ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjý‹h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjì‹ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj Œubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jŒŒmodname”NŒ classname”Njj )�”}”j ]”j¶ŠŒc.lookup_one_unlocked”†”asbuh1hhjì‹ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,Œh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjì‹ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj:Œh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjì‹ubjI)�”}”(hŒbase”h]”hŒbase”…”�”}”(hjGŒh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjì‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjíŠubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjwŠh²hh³jˆŠh´M‘ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjsŠh²hh³jˆŠh´M‘ ubah}”(h]”jnŠah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jˆŠh´M‘ hjpŠh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ lookup single pathname component”h]”hŒ lookup single pathname component”…”�”}”(hjqŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M‘ hjnŒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjpŠh²hh³jˆŠh´M‘ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j‰Œjšj‰Œj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXt**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount the lookup is performed from ``struct qstr *name`` qstr holding pathname component to lookup ``struct dentry *base`` base directory to lookup from **Description** This can be used for in-kernel filesystem clients such as file servers. Unlike lookup_one, it should be called without the parent i_rwsem held, and will take the i_rwsem itself if necessary. **Return** - A dentry, possibly negative, or - same errors as try_lookup_noperm() or - ERR_PTR(-ENOENT) if parent has been removed, or - ERR_PTR(-EACCES) if parent directory is not searchable.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj“Œh]”hŒ Parameters”…”�”}”(hj•Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‘Œubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M• hj�Œubj¿)�”}”(hhh]”(jÄ)�”}”(hŒR``const struct mnt_idmap *idmap`` idmap of the mount the lookup is performed from ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj²Œh]”hŒconst struct mnt_idmap *idmap”…”�”}”(hj´Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj°Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M’ hj¬Œubjæ)�”}”(hhh]”hÌ)�”}”(hŒ/idmap of the mount the lookup is performed from”h]”hŒ/idmap of the mount the lookup is performed from”…”�”}”(hjËŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÇŒh´M’ hjÈŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¬Œubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÇŒh´M’ hj©ŒubjÄ)�”}”(hŒ@``struct qstr *name`` qstr holding pathname component to lookup ”h]”(jÊ)�”}”(hŒ``struct qstr *name``”h]”jÐ)�”}”(hjëŒh]”hŒstruct qstr *name”…”�”}”(hjíŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjéŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M“ hjåŒubjæ)�”}”(hhh]”hÌ)�”}”(hŒ)qstr holding pathname component to lookup”h]”hŒ)qstr holding pathname component to lookup”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�h´M“ hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjåŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j�h´M“ hj©ŒubjÄ)�”}”(hŒ6``struct dentry *base`` base directory to lookup from ”h]”(jÊ)�”}”(hŒ``struct dentry *base``”h]”jÐ)�”}”(hj$�h]”hŒstruct dentry *base”…”�”}”(hj&�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj"�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M” hj�ubjæ)�”}”(hhh]”hÌ)�”}”(hŒbase directory to lookup from”h]”hŒbase directory to lookup from”…”�”}”(hj=�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j9�h´M” hj:�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j9�h´M” hj©Œubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj�ŒubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj_�h]”hŒ Description”…”�”}”(hja�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj]�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M– hj�ŒubhÌ)�”}”(hŒGThis can be used for in-kernel filesystem clients such as file servers.”h]”hŒGThis can be used for in-kernel filesystem clients such as file servers.”…”�”}”(hju�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M• hj�ŒubhÌ)�”}”(hŒvUnlike lookup_one, it should be called without the parent i_rwsem held, and will take the i_rwsem itself if necessary.”h]”hŒvUnlike lookup_one, it should be called without the parent i_rwsem held, and will take the i_rwsem itself if necessary.”…”�”}”(hj„�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M— hj�ŒubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj•�h]”hŒReturn”…”�”}”(hj—�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj“�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mš hj�Œubj‘E)�”}”(hhh]”(j–E)�”}”(hŒA dentry, possibly negative, or”h]”hÌ)�”}”(hj°�h]”hŒA dentry, possibly negative, or”…”�”}”(hj²�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M› hj®�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•Ehj«�ubj–E)�”}”(hŒ%same errors as try_lookup_noperm() or”h]”hÌ)�”}”(hjÈ�h]”hŒ%same errors as try_lookup_noperm() or”…”�”}”(hjÊ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mœ hjÆ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•Ehj«�ubj–E)�”}”(hŒ/ERR_PTR(-ENOENT) if parent has been removed, or”h]”hÌ)�”}”(hjà�h]”hŒ/ERR_PTR(-ENOENT) if parent has been removed, or”…”�”}”(hjâ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M� hjÞ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•Ehj«�ubj–E)�”}”(hŒ7ERR_PTR(-EACCES) if parent directory is not searchable.”h]”hÌ)�”}”(hjø�h]”hŒ7ERR_PTR(-EACCES) if parent directory is not searchable.”…”�”}”(hjú�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mž hjö�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•Ehj«�ubeh}”(h]”h ]”h"]”h$]”h&]”jÏEjÍ2uh1j�Eh³j¿�h´M› hj�Œubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ)lookup_one_positive_killable (C function)”Œc.lookup_one_positive_killable”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒtstruct dentry * lookup_one_positive_killable (const struct mnt_idmap *idmap, struct qstr *name, struct dentry *base)”h]”j)�”}”(hŒrstruct dentry *lookup_one_positive_killable(const struct mnt_idmap *idmap, struct qstr *name, struct dentry *base)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj4Žh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj0Žh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M² ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBŽh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj0Žh²hh³jAŽh´M² ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjSŽh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjPŽubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jUŽŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒlookup_one_positive_killable”sbŒc.lookup_one_positive_killable”†”asbuh1hhj0Žh²hh³jAŽh´M² ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtŽh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj0Žh²hh³jAŽh´M² ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj‚Žh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj0Žh²hh³jAŽh´M² ubjC)�”}”(hŒlookup_one_positive_killable”h]”jI)�”}”(hjqŽh]”hŒlookup_one_positive_killable”…”�”}”(hj“Žh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�Žubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj0Žh²hh³jAŽh´M² ubj=)�”}”(hŒG(const struct mnt_idmap *idmap, struct qstr *name, struct dentry *base)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj®Žh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjªŽubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»Žh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjªŽubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÉŽh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjªŽubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖŽh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjªŽubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hjçŽh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjäŽubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j鎌modname”NŒ classname”Njj )�”}”j ]”joŽŒc.lookup_one_positive_killable”†”asbuh1hhjªŽubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjªŽubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjªŽubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjªŽubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¦ŽubjC)�”}”(hŒstruct qstr *name”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj9�h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj5�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj5�ubh)�”}”(hhh]”jI)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(hjW�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjT�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jY�Œmodname”NŒ classname”Njj )�”}”j ]”joŽŒc.lookup_one_positive_killable”†”asbuh1hhj5�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hju�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj5�ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjƒ�h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj5�ubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj5�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¦ŽubjC)�”}”(hŒstruct dentry *base”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj©�h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¥�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¥�ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjÇ�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÄ�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÉ�Œmodname”NŒ classname”Njj )�”}”j ]”joŽŒc.lookup_one_positive_killable”†”asbuh1hhj¥�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjå�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¥�ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjó�h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¥�ubjI)�”}”(hŒbase”h]”hŒbase”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¥�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¦Žubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj0Žh²hh³jAŽh´M² ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj,Žh²hh³jAŽh´M² ubah}”(h]”j'Žah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jAŽh´M² hj)Žh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ lookup single pathname component”h]”hŒ lookup single pathname component”…”�”}”(hj*�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M² hj'�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj)Žh²hh³jAŽh´M² ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jB�jšjB�j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXÝ**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount the lookup is performed from ``struct qstr *name`` qstr holding pathname component to lookup ``struct dentry *base`` base directory to lookup from **Description** This helper will yield ERR_PTR(-ENOENT) on negatives. The helper returns known positive or ERR_PTR(). This is what most of the users want. Note that pinned negative with unlocked parent _can_ become positive at any time, so callers of lookup_one_unlocked() need to be very careful; pinned positives have >d_inode stable, so this one avoids such problems. This can be used for in-kernel filesystem clients such as file servers. It should be called without the parent i_rwsem held, and will take the i_rwsem itself if necessary. If a fatal signal is pending or delivered, it will return ``-EINTR`` if the lock is needed. **Return** A positive dentry, or - same errors as lookup_one_unlocked() or - ERR_PTR(-EINTR) if a fatal signal is pending.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjL�h]”hŒ Parameters”…”�”}”(hjN�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjJ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M¶ hjF�ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒR``const struct mnt_idmap *idmap`` idmap of the mount the lookup is performed from ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjk�h]”hŒconst struct mnt_idmap *idmap”…”�”}”(hjm�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhji�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M³ hje�ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ/idmap of the mount the lookup is performed from”h]”hŒ/idmap of the mount the lookup is performed from”…”�”}”(hj„�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j€�h´M³ hj��ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhje�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j€�h´M³ hjb�ubjÄ)�”}”(hŒ@``struct qstr *name`` qstr holding pathname component to lookup ”h]”(jÊ)�”}”(hŒ``struct qstr *name``”h]”jÐ)�”}”(hj¤�h]”hŒstruct qstr *name”…”�”}”(hj¦�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¢�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M´ hjž�ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ)qstr holding pathname component to lookup”h]”hŒ)qstr holding pathname component to lookup”…”�”}”(hj½�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¹�h´M´ hjº�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjž�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¹�h´M´ hjb�ubjÄ)�”}”(hŒ6``struct dentry *base`` base directory to lookup from ”h]”(jÊ)�”}”(hŒ``struct dentry *base``”h]”jÐ)�”}”(hjÝ�h]”hŒstruct dentry *base”…”�”}”(hjß�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÛ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mµ hj×�ubjæ)�”}”(hhh]”hÌ)�”}”(hŒbase directory to lookup from”h]”hŒbase directory to lookup from”…”�”}”(hjö�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jò�h´Mµ hjó�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj×�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jò�h´Mµ hjb�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjF�ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj‘h]”hŒ Description”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M· hjF�ubhÌ)�”}”(hŒŠThis helper will yield ERR_PTR(-ENOENT) on negatives. The helper returns known positive or ERR_PTR(). This is what most of the users want.”h]”hŒŠThis helper will yield ERR_PTR(-ENOENT) on negatives. The helper returns known positive or ERR_PTR(). This is what most of the users want.”…”�”}”(hj.‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M¶ hjF�ubhÌ)�”}”(hŒ×Note that pinned negative with unlocked parent _can_ become positive at any time, so callers of lookup_one_unlocked() need to be very careful; pinned positives have >d_inode stable, so this one avoids such problems.”h]”hŒ×Note that pinned negative with unlocked parent _can_ become positive at any time, so callers of lookup_one_unlocked() need to be very careful; pinned positives have >d_inode stable, so this one avoids such problems.”…”�”}”(hj=‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M¹ hjF�ubhÌ)�”}”(hŒGThis can be used for in-kernel filesystem clients such as file servers.”h]”hŒGThis can be used for in-kernel filesystem clients such as file servers.”…”�”}”(hjL‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M½ hjF�ubhÌ)�”}”(hŒÀIt should be called without the parent i_rwsem held, and will take the i_rwsem itself if necessary. If a fatal signal is pending or delivered, it will return ``-EINTR`` if the lock is needed.”h]”(hŒŸIt should be called without the parent i_rwsem held, and will take the i_rwsem itself if necessary. If a fatal signal is pending or delivered, it will return ”…”�”}”(hj[‘h²hh³Nh´NubjÐ)�”}”(hŒ ``-EINTR``”h]”hŒ-EINTR”…”�”}”(hjc‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj[‘ubhŒ if the lock is needed.”…”�”}”(hj[‘h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M¿ hjF�ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj~‘h]”hŒReturn”…”�”}”(hj€‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj|‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mà hjF�ubhÌ)�”}”(hŒoA positive dentry, or - same errors as lookup_one_unlocked() or - ERR_PTR(-EINTR) if a fatal signal is pending.”h]”hŒoA positive dentry, or - same errors as lookup_one_unlocked() or - ERR_PTR(-EINTR) if a fatal signal is pending.”…”�”}”(hj”‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÄ hjF�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ)lookup_one_positive_unlocked (C function)”Œc.lookup_one_positive_unlocked”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒtstruct dentry * lookup_one_positive_unlocked (const struct mnt_idmap *idmap, struct qstr *name, struct dentry *base)”h]”j)�”}”(hŒrstruct dentry *lookup_one_positive_unlocked(const struct mnt_idmap *idmap, struct qstr *name, struct dentry *base)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¿‘h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mß ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑ‘h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¿‘h²hh³jБh´Mß ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjâ‘h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjß‘ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j䑌modname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒlookup_one_positive_unlocked”sbŒc.lookup_one_positive_unlocked”†”asbuh1hhj¿‘h²hh³jБh´Mß ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¿‘h²hh³jБh´Mß ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¿‘h²hh³jБh´Mß ubjC)�”}”(hŒlookup_one_positive_unlocked”h]”jI)�”}”(hj’h]”hŒlookup_one_positive_unlocked”…”�”}”(hj"’h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj’ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj¿‘h²hh³jБh´Mß ubj=)�”}”(hŒG(const struct mnt_idmap *idmap, struct qstr *name, struct dentry *base)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj=’h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj9’ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJ’h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj9’ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjX’h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj9’ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hje’h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj9’ubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hjv’h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjs’ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jx’Œmodname”NŒ classname”Njj )�”}”j ]”jþ‘Œc.lookup_one_positive_unlocked”†”asbuh1hhj9’ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”’h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj9’ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¢’h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj9’ubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hj¯’h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj9’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj5’ubjC)�”}”(hŒstruct qstr *name”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÈ’h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÄ’ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ’h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÄ’ubh)�”}”(hhh]”jI)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(hjæ’h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjã’ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jè’Œmodname”NŒ classname”Njj )�”}”j ]”jþ‘Œc.lookup_one_positive_unlocked”†”asbuh1hhjÄ’ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÄ’ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÄ’ubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÄ’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj5’ubjC)�”}”(hŒstruct dentry *base”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj8“h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj4“ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE“h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj4“ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjV“h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjS“ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jX“Œmodname”NŒ classname”Njj )�”}”j ]”jþ‘Œc.lookup_one_positive_unlocked”†”asbuh1hhj4“ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt“h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj4“ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj‚“h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj4“ubjI)�”}”(hŒbase”h]”hŒbase”…”�”}”(hj�“h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj4“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj5’ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj¿‘h²hh³jБh´Mß ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj»‘h²hh³jБh´Mß ubah}”(h]”j¶‘ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jБh´Mß hj¸‘h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ lookup single pathname component”h]”hŒ lookup single pathname component”…”�”}”(hj¹“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mß hj¶“h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¸‘h²hh³jБh´Mß ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÑ“jšjÑ“j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXR**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount the lookup is performed from ``struct qstr *name`` qstr holding pathname component to lookup ``struct dentry *base`` base directory to lookup from **Description** This helper will yield ERR_PTR(-ENOENT) on negatives. The helper returns known positive or ERR_PTR(). This is what most of the users want. Note that pinned negative with unlocked parent _can_ become positive at any time, so callers of lookup_one_unlocked() need to be very careful; pinned positives have >d_inode stable, so this one avoids such problems. This can be used for in-kernel filesystem clients such as file servers. The helper should be called without i_rwsem held. **Return** A positive dentry, or - ERR_PTR(-ENOENT) if the name could not be found, or - same errors as lookup_one_unlocked().”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÛ“h]”hŒ Parameters”…”�”}”(hjÝ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÙ“ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mã hjÕ“ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒR``const struct mnt_idmap *idmap`` idmap of the mount the lookup is performed from ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjú“h]”hŒconst struct mnt_idmap *idmap”…”�”}”(hjü“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjø“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mà hjô“ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ/idmap of the mount the lookup is performed from”h]”hŒ/idmap of the mount the lookup is performed from”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j”h´Mà hj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjô“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j”h´Mà hjñ“ubjÄ)�”}”(hŒ@``struct qstr *name`` qstr holding pathname component to lookup ”h]”(jÊ)�”}”(hŒ``struct qstr *name``”h]”jÐ)�”}”(hj3”h]”hŒstruct qstr *name”…”�”}”(hj5”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj1”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Má hj-”ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ)qstr holding pathname component to lookup”h]”hŒ)qstr holding pathname component to lookup”…”�”}”(hjL”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jH”h´Má hjI”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj-”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jH”h´Má hjñ“ubjÄ)�”}”(hŒ6``struct dentry *base`` base directory to lookup from ”h]”(jÊ)�”}”(hŒ``struct dentry *base``”h]”jÐ)�”}”(hjl”h]”hŒstruct dentry *base”…”�”}”(hjn”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mâ hjf”ubjæ)�”}”(hhh]”hÌ)�”}”(hŒbase directory to lookup from”h]”hŒbase directory to lookup from”…”�”}”(hj…”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�”h´Mâ hj‚”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjf”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j�”h´Mâ hjñ“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÕ“ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj§”h]”hŒ Description”…”�”}”(hj©”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¥”ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mä hjÕ“ubhÌ)�”}”(hŒŠThis helper will yield ERR_PTR(-ENOENT) on negatives. The helper returns known positive or ERR_PTR(). This is what most of the users want.”h]”hŒŠThis helper will yield ERR_PTR(-ENOENT) on negatives. The helper returns known positive or ERR_PTR(). This is what most of the users want.”…”�”}”(hj½”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mã hjÕ“ubhÌ)�”}”(hŒ×Note that pinned negative with unlocked parent _can_ become positive at any time, so callers of lookup_one_unlocked() need to be very careful; pinned positives have >d_inode stable, so this one avoids such problems.”h]”hŒ×Note that pinned negative with unlocked parent _can_ become positive at any time, so callers of lookup_one_unlocked() need to be very careful; pinned positives have >d_inode stable, so this one avoids such problems.”…”�”}”(hjÌ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mæ hjÕ“ubhÌ)�”}”(hŒGThis can be used for in-kernel filesystem clients such as file servers.”h]”hŒGThis can be used for in-kernel filesystem clients such as file servers.”…”�”}”(hjÛ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mê hjÕ“ubhÌ)�”}”(hŒ1The helper should be called without i_rwsem held.”h]”hŒ1The helper should be called without i_rwsem held.”…”�”}”(hjê”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mì hjÕ“ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjû”h]”hŒReturn”…”�”}”(hjý”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjù”ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mî hjÕ“ubhÌ)�”}”(hŒsA positive dentry, or - ERR_PTR(-ENOENT) if the name could not be found, or - same errors as lookup_one_unlocked().”h]”hŒsA positive dentry, or - ERR_PTR(-ENOENT) if the name could not be found, or - same errors as lookup_one_unlocked().”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mï hjÕ“ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ#lookup_noperm_unlocked (C function)”Œc.lookup_noperm_unlocked”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒOstruct dentry * lookup_noperm_unlocked (struct qstr *name, struct dentry *base)”h]”j)�”}”(hŒMstruct dentry *lookup_noperm_unlocked(struct qstr *name, struct dentry *base)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj@•h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj<•h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN•h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj<•h²hh³jM•h´M ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj_•h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj\•ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”ja•Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒlookup_noperm_unlocked”sbŒc.lookup_noperm_unlocked”†”asbuh1hhj<•h²hh³jM•h´M ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€•h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj<•h²hh³jM•h´M ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjŽ•h²hh³•Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj<•h²hh³jM•h´M ubjC)�”}”(hŒlookup_noperm_unlocked”h]”jI)�”}”(hj}•h]”hŒlookup_noperm_unlocked”…”�”}”(hjŸ•h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj›•ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj<•h²hh³jM•h´M ubj=)�”}”(hŒ((struct qstr *name, struct dentry *base)”h]”(jC)�”}”(hŒstruct qstr *name”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjº•h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¶•ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇ•h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¶•ubh)�”}”(hhh]”jI)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(hjØ•h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÕ•ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÚ•Œmodname”NŒ classname”Njj )�”}”j ]”j{•Œc.lookup_noperm_unlocked”†”asbuh1hhj¶•ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö•h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¶•ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¶•ubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¶•ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj²•ubjC)�”}”(hŒstruct dentry *base”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj*–h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj&–ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7–h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj&–ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjH–h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjE–ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jJ–Œmodname”NŒ classname”Njj )�”}”j ]”j{•Œc.lookup_noperm_unlocked”†”asbuh1hhj&–ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf–h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj&–ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjt–h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj&–ubjI)�”}”(hŒbase”h]”hŒbase”…”�”}”(hj�–h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj&–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj²•ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj<•h²hh³jM•h´M ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj8•h²hh³jM•h´M ubah}”(h]”j3•ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jM•h´M hj5•h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ5filesystem helper to lookup single pathname component”h]”hŒ5filesystem helper to lookup single pathname component”…”�”}”(hj«–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M hj¨–h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj5•h²hh³jM•h´M ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÖjšjÖj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXl**Parameters** ``struct qstr *name`` pathname component to lookup ``struct dentry *base`` base directory to lookup from **Description** Note that this routine is purely a helper for filesystem usage and should not be called by generic code. It does no permission checking. Unlike lookup_noperm(), it should be called without the parent i_rwsem held, and will take the i_rwsem itself if necessary. Unlike try_lookup_noperm() it *does* revalidate the dentry if it already existed. **Return** A dentry, possibly negative, or - ERR_PTR(-ENOENT) if parent has been removed, or - same errors as try_lookup_noperm()”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÍ–h]”hŒ Parameters”…”�”}”(hjÏ–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjË–ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M hjÇ–ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ3``struct qstr *name`` pathname component to lookup ”h]”(jÊ)�”}”(hŒ``struct qstr *name``”h]”jÐ)�”}”(hjì–h]”hŒstruct qstr *name”…”�”}”(hjî–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjê–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M hjæ–ubjæ)�”}”(hhh]”hÌ)�”}”(hŒpathname component to lookup”h]”hŒpathname component to lookup”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j—h´M hj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjæ–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j—h´M hjã–ubjÄ)�”}”(hŒ6``struct dentry *base`` base directory to lookup from ”h]”(jÊ)�”}”(hŒ``struct dentry *base``”h]”jÐ)�”}”(hj%—h]”hŒstruct dentry *base”…”�”}”(hj'—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj#—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M hj—ubjæ)�”}”(hhh]”hÌ)�”}”(hŒbase directory to lookup from”h]”hŒbase directory to lookup from”…”�”}”(hj>—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j:—h´M hj;—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j:—h´M hjã–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÇ–ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj`—h]”hŒ Description”…”�”}”(hjb—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj^—ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M hjÇ–ubhÌ)�”}”(hŒˆNote that this routine is purely a helper for filesystem usage and should not be called by generic code. It does no permission checking.”h]”hŒˆNote that this routine is purely a helper for filesystem usage and should not be called by generic code. It does no permission checking.”…”�”}”(hjv—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M hjÇ–ubhÌ)�”}”(hŒ{Unlike lookup_noperm(), it should be called without the parent i_rwsem held, and will take the i_rwsem itself if necessary.”h]”hŒ{Unlike lookup_noperm(), it should be called without the parent i_rwsem held, and will take the i_rwsem itself if necessary.”…”�”}”(hj…—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M hjÇ–ubhÌ)�”}”(hŒQUnlike try_lookup_noperm() it *does* revalidate the dentry if it already existed.”h]”(hŒUnlike try_lookup_noperm() it ”…”�”}”(hj”—h²hh³Nh´Nubj )�”}”(hŒ*does*”h]”hŒdoes”…”�”}”(hjœ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~ hj”—ubhŒ- revalidate the dentry if it already existed.”…”�”}”(hj”—h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M hjÇ–ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj·—h]”hŒReturn”…”�”}”(hj¹—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjµ—ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M hjÇ–ubhÌ)�”}”(hŒvA dentry, possibly negative, or - ERR_PTR(-ENOENT) if parent has been removed, or - same errors as try_lookup_noperm()”h]”hŒvA dentry, possibly negative, or - ERR_PTR(-ENOENT) if parent has been removed, or - same errors as try_lookup_noperm()”…”�”}”(hjÍ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M hjÇ–ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œstart_creating (C function)”Œc.start_creating”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒhstruct dentry * start_creating (const struct mnt_idmap *idmap, struct dentry *parent, struct qstr *name)”h]”j)�”}”(hŒfstruct dentry *start_creating(const struct mnt_idmap *idmap, struct dentry *parent, struct qstr *name)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjü—h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjø—h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M> ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ˜h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjø—h²hh³j ˜h´M> ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj˜ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j˜Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒstart_creating”sbŒc.start_creating”†”asbuh1hhjø—h²hh³j ˜h´M> ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<˜h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjø—h²hh³j ˜h´M> ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjJ˜h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjø—h²hh³j ˜h´M> ubjC)�”}”(hŒstart_creating”h]”jI)�”}”(hj9˜h]”hŒstart_creating”…”�”}”(hj[˜h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjW˜ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjø—h²hh³j ˜h´M> ubj=)�”}”(hŒI(const struct mnt_idmap *idmap, struct dentry *parent, struct qstr *name)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjv˜h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjr˜ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ˜h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjr˜ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj‘˜h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjr˜ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjž˜h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjr˜ubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hj¯˜h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¬˜ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j±˜Œmodname”NŒ classname”Njj )�”}”j ]”j7˜Œc.start_creating”†”asbuh1hhjr˜ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj͘h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjr˜ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÛ˜h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjr˜ubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hjè˜h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjr˜ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjn˜ubjC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjý˜ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjý˜ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj™ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j!™Œmodname”NŒ classname”Njj )�”}”j ]”j7˜Œc.start_creating”†”asbuh1hhjý˜ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=™h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjý˜ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjK™h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjý˜ubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjX™h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjý˜ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjn˜ubjC)�”}”(hŒstruct qstr *name”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjq™h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjm™ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~™h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjm™ubh)�”}”(hhh]”jI)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(hj�™h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŒ™ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j‘™Œmodname”NŒ classname”Njj )�”}”j ]”j7˜Œc.start_creating”†”asbuh1hhjm™ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­™h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjm™ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj»™h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjm™ubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hjÈ™h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjm™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjn˜ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjø—h²hh³j ˜h´M> ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjô—h²hh³j ˜h´M> ubah}”(h]”jï—ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j ˜h´M> hjñ—h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒAprepare to access or create a given name with permission checking”h]”hŒAprepare to access or create a given name with permission checking”…”�”}”(hjò™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M> hjï™h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjñ—h²hh³j ˜h´M> ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j šjšj šj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX5**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount ``struct dentry *parent`` directory in which to prepare to create the name ``struct qstr *name`` the name to be created **Description** Locks are taken and a lookup is performed prior to creating an object in a directory. Permission checking (MAY_EXEC) is performed against **idmap**. If the name already exists, a positive dentry is returned, so behaviour is similar to O_CREAT without O_EXCL, which doesn't fail with -EEXIST. **Return** a negative or positive dentry, or an error.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjšh]”hŒ Parameters”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjšubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MB hjšubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ5``const struct mnt_idmap *idmap`` idmap of the mount ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj3šh]”hŒconst struct mnt_idmap *idmap”…”�”}”(hj5šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj1šubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M? hj-šubjæ)�”}”(hhh]”hÌ)�”}”(hŒidmap of the mount”h]”hŒidmap of the mount”…”�”}”(hjLšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jHšh´M? hjIšubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj-šubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jHšh´M? hj*šubjÄ)�”}”(hŒK``struct dentry *parent`` directory in which to prepare to create the name ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hjlšh]”hŒstruct dentry *parent”…”�”}”(hjnšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjjšubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M@ hjfšubjæ)�”}”(hhh]”hÌ)�”}”(hŒ0directory in which to prepare to create the name”h]”hŒ0directory in which to prepare to create the name”…”�”}”(hj…šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�šh´M@ hj‚šubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjfšubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j�šh´M@ hj*šubjÄ)�”}”(hŒ-``struct qstr *name`` the name to be created ”h]”(jÊ)�”}”(hŒ``struct qstr *name``”h]”jÐ)�”}”(hj¥šh]”hŒstruct qstr *name”…”�”}”(hj§šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj£šubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MA hjŸšubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe name to be created”h]”hŒthe name to be created”…”�”}”(hj¾šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jºšh´MA hj»šubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjŸšubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jºšh´MA hj*šubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjšubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjàšh]”hŒ Description”…”�”}”(hjâšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÞšubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MC hjšubhÌ)�”}”(hŒ•Locks are taken and a lookup is performed prior to creating an object in a directory. Permission checking (MAY_EXEC) is performed against **idmap**.”h]”(hŒ‹Locks are taken and a lookup is performed prior to creating an object in a directory. Permission checking (MAY_EXEC) is performed against ”…”�”}”(hjöšh²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hjþšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjöšubhŒ.”…”�”}”(hjöšh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MB hjšubhÌ)�”}”(hŒŽIf the name already exists, a positive dentry is returned, so behaviour is similar to O_CREAT without O_EXCL, which doesn't fail with -EEXIST.”h]”hŒ�If the name already exists, a positive dentry is returned, so behaviour is similar to O_CREAT without O_EXCL, which doesn’t fail with -EEXIST.”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MF hjšubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj(›h]”hŒReturn”…”�”}”(hj*›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj&›ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MJ hjšubhÌ)�”}”(hŒ+a negative or positive dentry, or an error.”h]”hŒ+a negative or positive dentry, or an error.”…”�”}”(hj>›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MK hjšubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œstart_removing (C function)”Œc.start_removing”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒhstruct dentry * start_removing (const struct mnt_idmap *idmap, struct dentry *parent, struct qstr *name)”h]”j)�”}”(hŒfstruct dentry *start_removing(const struct mnt_idmap *idmap, struct dentry *parent, struct qstr *name)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjm›h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhji›h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MY ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{›h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hji›h²hh³jz›h´MY ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjŒ›h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‰›ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jŽ›Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒstart_removing”sbŒc.start_removing”†”asbuh1hhji›h²hh³jz›h´MY ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­›h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hji›h²hh³jz›h´MY ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj»›h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hji›h²hh³jz›h´MY ubjC)�”}”(hŒstart_removing”h]”jI)�”}”(hjª›h]”hŒstart_removing”…”�”}”(hjÌ›h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÈ›ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhji›h²hh³jz›h´MY ubj=)�”}”(hŒI(const struct mnt_idmap *idmap, struct dentry *parent, struct qstr *name)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjç›h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjã›ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjô›h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjã›ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjã›ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjã›ubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hj œh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjœubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j"œŒmodname”NŒ classname”Njj )�”}”j ]”j¨›Œc.start_removing”†”asbuh1hhjã›ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>œh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjã›ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjLœh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjã›ubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hjYœh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjã›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjß›ubjC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjrœh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjnœubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjnœubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj�œh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�œubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j’œŒmodname”NŒ classname”Njj )�”}”j ]”j¨›Œc.start_removing”†”asbuh1hhjnœubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®œh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjnœubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¼œh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjnœubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjÉœh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjnœubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjß›ubjC)�”}”(hŒstruct qstr *name”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjâœh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÞœubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïœh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÞœubh)�”}”(hhh]”jI)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjýœubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j�Œmodname”NŒ classname”Njj )�”}”j ]”j¨›Œc.start_removing”†”asbuh1hhjÞœubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÞœubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj,�h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÞœubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj9�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÞœubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjß›ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hji›h²hh³jz›h´MY ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhje›h²hh³jz›h´MY ubah}”(h]”j`›ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jz›h´MY hjb›h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ7prepare to remove a given name with permission checking”h]”hŒ7prepare to remove a given name with permission checking”…”�”}”(hjc�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MY hj`�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjb›h²hh³jz›h´MY ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j{�jšj{�j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount ``struct dentry *parent`` directory in which to find the name ``struct qstr *name`` the name to be removed **Description** Locks are taken and a lookup is performed prior to removing an object from a directory. Permission checking (MAY_EXEC) is performed against **idmap**. If the name doesn't exist, an error is returned. end_removing() should be called when removal is complete, or aborted. **Return** a positive dentry, or an error.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj…�h]”hŒ Parameters”…”�”}”(hj‡�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjƒ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M] hj�ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ5``const struct mnt_idmap *idmap`` idmap of the mount ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj¤�h]”hŒconst struct mnt_idmap *idmap”…”�”}”(hj¦�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¢�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MZ hjž�ubjæ)�”}”(hhh]”hÌ)�”}”(hŒidmap of the mount”h]”hŒidmap of the mount”…”�”}”(hj½�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¹�h´MZ hjº�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjž�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¹�h´MZ hj›�ubjÄ)�”}”(hŒ>``struct dentry *parent`` directory in which to find the name ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hjÝ�h]”hŒstruct dentry *parent”…”�”}”(hjß�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÛ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M[ hj×�ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ#directory in which to find the name”h]”hŒ#directory in which to find the name”…”�”}”(hjö�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jò�h´M[ hjó�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj×�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jò�h´M[ hj›�ubjÄ)�”}”(hŒ-``struct qstr *name`` the name to be removed ”h]”(jÊ)�”}”(hŒ``struct qstr *name``”h]”jÐ)�”}”(hjžh]”hŒstruct qstr *name”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjžubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M\ hjžubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe name to be removed”h]”hŒthe name to be removed”…”�”}”(hj/žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j+žh´M\ hj,žubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjžubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j+žh´M\ hj›�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj�ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjQžh]”hŒ Description”…”�”}”(hjSžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjOžubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M^ hj�ubhÌ)�”}”(hŒ—Locks are taken and a lookup is performed prior to removing an object from a directory. Permission checking (MAY_EXEC) is performed against **idmap**.”h]”(hŒ�Locks are taken and a lookup is performed prior to removing an object from a directory. Permission checking (MAY_EXEC) is performed against ”…”�”}”(hjgžh²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hjožh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjgžubhŒ.”…”�”}”(hjgžh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M] hj�ubhÌ)�”}”(hŒ0If the name doesn't exist, an error is returned.”h]”hŒ2If the name doesn’t exist, an error is returned.”…”�”}”(hjˆžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Ma hj�ubhÌ)�”}”(hŒEend_removing() should be called when removal is complete, or aborted.”h]”hŒEend_removing() should be called when removal is complete, or aborted.”…”�”}”(hj—žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mc hj�ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj¨žh]”hŒReturn”…”�”}”(hjªžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¦žubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Me hj�ubhÌ)�”}”(hŒa positive dentry, or an error.”h]”hŒa positive dentry, or an error.”…”�”}”(hj¾žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mf hj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ$start_creating_killable (C function)”Œc.start_creating_killable”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒqstruct dentry * start_creating_killable (const struct mnt_idmap *idmap, struct dentry *parent, struct qstr *name)”h]”j)�”}”(hŒostruct dentry *start_creating_killable(const struct mnt_idmap *idmap, struct dentry *parent, struct qstr *name)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjížh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjéžh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mt ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûžh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjéžh²hh³júžh´Mt ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj Ÿh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj Ÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jŸŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒstart_creating_killable”sbŒc.start_creating_killable”†”asbuh1hhjéžh²hh³júžh´Mt ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-Ÿh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjéžh²hh³júžh´Mt ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj;Ÿh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjéžh²hh³júžh´Mt ubjC)�”}”(hŒstart_creating_killable”h]”jI)�”}”(hj*Ÿh]”hŒstart_creating_killable”…”�”}”(hjLŸh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjHŸubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjéžh²hh³júžh´Mt ubj=)�”}”(hŒI(const struct mnt_idmap *idmap, struct dentry *parent, struct qstr *name)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjgŸh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjcŸubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtŸh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjcŸubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj‚Ÿh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjcŸubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Ÿh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjcŸubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hj Ÿh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�Ÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¢ŸŒmodname”NŒ classname”Njj )�”}”j ]”j(ŸŒc.start_creating_killable”†”asbuh1hhjcŸubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾Ÿh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjcŸubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÌŸh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjcŸubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hjÙŸh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjcŸubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj_ŸubjC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjòŸh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjîŸubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿŸh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjîŸubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj  ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j Œmodname”NŒ classname”Njj )�”}”j ]”j(ŸŒc.start_creating_killable”†”asbuh1hhjîŸubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj. h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjîŸubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj< h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjîŸubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjI h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjîŸubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj_ŸubjC)�”}”(hŒstruct qstr *name”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjb h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj^ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj^ ubh)�”}”(hhh]”jI)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(hj€ h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj} ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j‚ Œmodname”NŒ classname”Njj )�”}”j ]”j(ŸŒc.start_creating_killable”†”asbuh1hhj^ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjž h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj^ ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¬ h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj^ ubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj¹ h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj^ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj_Ÿubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjéžh²hh³júžh´Mt ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjåžh²hh³júžh´Mt ubah}”(h]”jàžah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³júžh´Mt hjâžh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ7prepare to create a given name with permission checking”h]”hŒ7prepare to create a given name with permission checking”…”�”}”(hjã h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mt hjà h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjâžh²hh³júžh´Mt ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jû jšjû j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX3**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount ``struct dentry *parent`` directory in which to prepare to create the name ``struct qstr *name`` the name to be created **Description** Locks are taken and a lookup is performed prior to creating an object in a directory. Permission checking (MAY_EXEC) is performed against **idmap**. If the name already exists, a positive dentry is returned. If a signal is received or was already pending, the function aborts with -EINTR; **Return** a negative or positive dentry, or an error.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj¡h]”hŒ Parameters”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mx hjÿ ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ5``const struct mnt_idmap *idmap`` idmap of the mount ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj$¡h]”hŒconst struct mnt_idmap *idmap”…”�”}”(hj&¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj"¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mu hj¡ubjæ)�”}”(hhh]”hÌ)�”}”(hŒidmap of the mount”h]”hŒidmap of the mount”…”�”}”(hj=¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j9¡h´Mu hj:¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j9¡h´Mu hj¡ubjÄ)�”}”(hŒK``struct dentry *parent`` directory in which to prepare to create the name ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hj]¡h]”hŒstruct dentry *parent”…”�”}”(hj_¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj[¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mv hjW¡ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ0directory in which to prepare to create the name”h]”hŒ0directory in which to prepare to create the name”…”�”}”(hjv¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jr¡h´Mv hjs¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjW¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jr¡h´Mv hj¡ubjÄ)�”}”(hŒ-``struct qstr *name`` the name to be created ”h]”(jÊ)�”}”(hŒ``struct qstr *name``”h]”jÐ)�”}”(hj–¡h]”hŒstruct qstr *name”…”�”}”(hj˜¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj”¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mw hj�¡ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe name to be created”h]”hŒthe name to be created”…”�”}”(hj¯¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j«¡h´Mw hj¬¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj�¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j«¡h´Mw hj¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÿ ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÑ¡h]”hŒ Description”…”�”}”(hjÓ¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÏ¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´My hjÿ ubhÌ)�”}”(hŒ•Locks are taken and a lookup is performed prior to creating an object in a directory. Permission checking (MAY_EXEC) is performed against **idmap**.”h]”(hŒ‹Locks are taken and a lookup is performed prior to creating an object in a directory. Permission checking (MAY_EXEC) is performed against ”…”�”}”(hjç¡h²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hjï¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjç¡ubhŒ.”…”�”}”(hjç¡h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mx hjÿ ubhÌ)�”}”(hŒ:If the name already exists, a positive dentry is returned.”h]”hŒ:If the name already exists, a positive dentry is returned.”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M| hjÿ ubhÌ)�”}”(hŒPIf a signal is received or was already pending, the function aborts with -EINTR;”h]”hŒPIf a signal is received or was already pending, the function aborts with -EINTR;”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M~ hjÿ ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj(¢h]”hŒReturn”…”�”}”(hj*¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj&¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M� hjÿ ubhÌ)�”}”(hŒ+a negative or positive dentry, or an error.”h]”hŒ+a negative or positive dentry, or an error.”…”�”}”(hj>¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M‚ hjÿ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ$start_removing_killable (C function)”Œc.start_removing_killable”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒqstruct dentry * start_removing_killable (const struct mnt_idmap *idmap, struct dentry *parent, struct qstr *name)”h]”j)�”}”(hŒostruct dentry *start_removing_killable(const struct mnt_idmap *idmap, struct dentry *parent, struct qstr *name)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjm¢h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhji¢h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M‘ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{¢h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hji¢h²hh³jz¢h´M‘ ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjŒ¢h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‰¢ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jŽ¢Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒstart_removing_killable”sbŒc.start_removing_killable”†”asbuh1hhji¢h²hh³jz¢h´M‘ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­¢h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hji¢h²hh³jz¢h´M‘ ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj»¢h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hji¢h²hh³jz¢h´M‘ ubjC)�”}”(hŒstart_removing_killable”h]”jI)�”}”(hjª¢h]”hŒstart_removing_killable”…”�”}”(hjÌ¢h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÈ¢ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhji¢h²hh³jz¢h´M‘ ubj=)�”}”(hŒI(const struct mnt_idmap *idmap, struct dentry *parent, struct qstr *name)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjç¢h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjã¢ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjô¢h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjã¢ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjã¢ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjã¢ubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hj £h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj£ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j"£Œmodname”NŒ classname”Njj )�”}”j ]”j¨¢Œc.start_removing_killable”†”asbuh1hhjã¢ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>£h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjã¢ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjL£h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjã¢ubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hjY£h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjã¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjߢubjC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjr£h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjn£ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjn£ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj�£h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�£ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j’£Œmodname”NŒ classname”Njj )�”}”j ]”j¨¢Œc.start_removing_killable”†”asbuh1hhjn£ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®£h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjn£ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¼£h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjn£ubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjÉ£h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjn£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjߢubjC)�”}”(hŒstruct qstr *name”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjâ£h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÞ£ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï£h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÞ£ubh)�”}”(hhh]”jI)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjý£ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¤Œmodname”NŒ classname”Njj )�”}”j ]”j¨¢Œc.start_removing_killable”†”asbuh1hhjÞ£ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÞ£ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj,¤h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÞ£ubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj9¤h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÞ£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjߢubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hji¢h²hh³jz¢h´M‘ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhje¢h²hh³jz¢h´M‘ ubah}”(h]”j`¢ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jz¢h´M‘ hjb¢h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ7prepare to remove a given name with permission checking”h]”hŒ7prepare to remove a given name with permission checking”…”�”}”(hjc¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M‘ hj`¤h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjb¢h²hh³jz¢h´M‘ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j{¤jšj{¤j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXY**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount ``struct dentry *parent`` directory in which to find the name ``struct qstr *name`` the name to be removed **Description** Locks are taken and a lookup is performed prior to removing an object from a directory. Permission checking (MAY_EXEC) is performed against **idmap**. If the name doesn't exist, an error is returned. end_removing() should be called when removal is complete, or aborted. If a signal is received or was already pending, the function aborts with -EINTR; **Return** a positive dentry, or an error.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj…¤h]”hŒ Parameters”…”�”}”(hj‡¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjƒ¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M• hj¤ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ5``const struct mnt_idmap *idmap`` idmap of the mount ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj¤¤h]”hŒconst struct mnt_idmap *idmap”…”�”}”(hj¦¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¢¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M’ hjž¤ubjæ)�”}”(hhh]”hÌ)�”}”(hŒidmap of the mount”h]”hŒidmap of the mount”…”�”}”(hj½¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¹¤h´M’ hjº¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjž¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¹¤h´M’ hj›¤ubjÄ)�”}”(hŒ>``struct dentry *parent`` directory in which to find the name ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hjݤh]”hŒstruct dentry *parent”…”�”}”(hjߤh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÛ¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M“ hjפubjæ)�”}”(hhh]”hÌ)�”}”(hŒ#directory in which to find the name”h]”hŒ#directory in which to find the name”…”�”}”(hjö¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jò¤h´M“ hjó¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjפubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jò¤h´M“ hj›¤ubjÄ)�”}”(hŒ-``struct qstr *name`` the name to be removed ”h]”(jÊ)�”}”(hŒ``struct qstr *name``”h]”jÐ)�”}”(hj¥h]”hŒstruct qstr *name”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M” hj¥ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe name to be removed”h]”hŒthe name to be removed”…”�”}”(hj/¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j+¥h´M” hj,¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j+¥h´M” hj›¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj¤ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjQ¥h]”hŒ Description”…”�”}”(hjS¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjO¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M– hj¤ubhÌ)�”}”(hŒ—Locks are taken and a lookup is performed prior to removing an object from a directory. Permission checking (MAY_EXEC) is performed against **idmap**.”h]”(hŒ�Locks are taken and a lookup is performed prior to removing an object from a directory. Permission checking (MAY_EXEC) is performed against ”…”�”}”(hjg¥h²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hjo¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjg¥ubhŒ.”…”�”}”(hjg¥h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M• hj¤ubhÌ)�”}”(hŒ0If the name doesn't exist, an error is returned.”h]”hŒ2If the name doesn’t exist, an error is returned.”…”�”}”(hjˆ¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M™ hj¤ubhÌ)�”}”(hŒEend_removing() should be called when removal is complete, or aborted.”h]”hŒEend_removing() should be called when removal is complete, or aborted.”…”�”}”(hj—¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M› hj¤ubhÌ)�”}”(hŒPIf a signal is received or was already pending, the function aborts with -EINTR;”h]”hŒPIf a signal is received or was already pending, the function aborts with -EINTR;”…”�”}”(hj¦¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M� hj¤ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj·¥h]”hŒReturn”…”�”}”(hj¹¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjµ¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M  hj¤ubhÌ)�”}”(hŒa positive dentry, or an error.”h]”hŒa positive dentry, or an error.”…”�”}”(hjÍ¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M¡ hj¤ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ"start_creating_noperm (C function)”Œc.start_creating_noperm”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒPstruct dentry * start_creating_noperm (struct dentry *parent, struct qstr *name)”h]”j)�”}”(hŒNstruct dentry *start_creating_noperm(struct dentry *parent, struct qstr *name)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjü¥h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjø¥h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M° ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ¦h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjø¥h²hh³j ¦h´M° ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¦ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¦Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒstart_creating_noperm”sbŒc.start_creating_noperm”†”asbuh1hhjø¥h²hh³j ¦h´M° ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<¦h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjø¥h²hh³j ¦h´M° ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjJ¦h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjø¥h²hh³j ¦h´M° ubjC)�”}”(hŒstart_creating_noperm”h]”jI)�”}”(hj9¦h]”hŒstart_creating_noperm”…”�”}”(hj[¦h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjW¦ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjø¥h²hh³j ¦h´M° ubj=)�”}”(hŒ*(struct dentry *parent, struct qstr *name)”h]”(jC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjv¦h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjr¦ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ¦h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjr¦ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj”¦h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‘¦ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j–¦Œmodname”NŒ classname”Njj )�”}”j ]”j7¦Œc.start_creating_noperm”†”asbuh1hhjr¦ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²¦h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjr¦ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÀ¦h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjr¦ubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjͦh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjr¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjn¦ubjC)�”}”(hŒstruct qstr *name”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjæ¦h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjâ¦ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjó¦h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjâ¦ubh)�”}”(hhh]”jI)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj§ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j§Œmodname”NŒ classname”Njj )�”}”j ]”j7¦Œc.start_creating_noperm”†”asbuh1hhjâ¦ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"§h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjâ¦ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj0§h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjâ¦ubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj=§h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjâ¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjn¦ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjø¥h²hh³j ¦h´M° ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjô¥h²hh³j ¦h´M° ubah}”(h]”jï¥ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j ¦h´M° hjñ¥h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ:prepare to create a given name without permission checking”h]”hŒ:prepare to create a given name without permission checking”…”�”}”(hjg§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M° hjd§h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjñ¥h²hh³j ¦h´M° ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j§jšj§j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXi**Parameters** ``struct dentry *parent`` directory in which to prepare to create the name ``struct qstr *name`` the name to be created **Description** Locks are taken and a lookup is performed prior to creating an object in a directory. If the name already exists, a positive dentry is returned. **Return** a negative or positive dentry, or an error.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj‰§h]”hŒ Parameters”…”�”}”(hj‹§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‡§ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M´ hjƒ§ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒK``struct dentry *parent`` directory in which to prepare to create the name ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hj¨§h]”hŒstruct dentry *parent”…”�”}”(hjª§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¦§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M± hj¢§ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ0directory in which to prepare to create the name”h]”hŒ0directory in which to prepare to create the name”…”�”}”(hjÁ§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j½§h´M± hj¾§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¢§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j½§h´M± hjŸ§ubjÄ)�”}”(hŒ-``struct qstr *name`` the name to be created ”h]”(jÊ)�”}”(hŒ``struct qstr *name``”h]”jÐ)�”}”(hjá§h]”hŒstruct qstr *name”…”�”}”(hjã§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjß§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M² hjÛ§ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe name to be created”h]”hŒthe name to be created”…”�”}”(hjú§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jö§h´M² hj÷§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÛ§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jö§h´M² hjŸ§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjƒ§ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj¨h]”hŒ Description”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M´ hjƒ§ubhÌ)�”}”(hŒULocks are taken and a lookup is performed prior to creating an object in a directory.”h]”hŒULocks are taken and a lookup is performed prior to creating an object in a directory.”…”�”}”(hj2¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M³ hjƒ§ubhÌ)�”}”(hŒ:If the name already exists, a positive dentry is returned.”h]”hŒ:If the name already exists, a positive dentry is returned.”…”�”}”(hjA¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M¶ hjƒ§ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjR¨h]”hŒReturn”…”�”}”(hjT¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjP¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M¸ hjƒ§ubhÌ)�”}”(hŒ+a negative or positive dentry, or an error.”h]”hŒ+a negative or positive dentry, or an error.”…”�”}”(hjh¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M¹ hjƒ§ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ"start_removing_noperm (C function)”Œc.start_removing_noperm”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒPstruct dentry * start_removing_noperm (struct dentry *parent, struct qstr *name)”h]”j)�”}”(hŒNstruct dentry *start_removing_noperm(struct dentry *parent, struct qstr *name)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj—¨h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj“¨h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÇ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥¨h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj“¨h²hh³j¤¨h´MÇ ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj¶¨h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj³¨ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¸¨Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒstart_removing_noperm”sbŒc.start_removing_noperm”†”asbuh1hhj“¨h²hh³j¤¨h´MÇ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjרh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj“¨h²hh³j¤¨h´MÇ ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjå¨h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj“¨h²hh³j¤¨h´MÇ ubjC)�”}”(hŒstart_removing_noperm”h]”jI)�”}”(hjÔ¨h]”hŒstart_removing_noperm”…”�”}”(hjö¨h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjò¨ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj“¨h²hh³j¤¨h´MÇ ubj=)�”}”(hŒ*(struct dentry *parent, struct qstr *name)”h]”(jC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj ©ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ©ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj/©h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj,©ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j1©Œmodname”NŒ classname”Njj )�”}”j ]”jÒ¨Œc.start_removing_noperm”†”asbuh1hhj ©ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM©h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ©ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj[©h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ©ubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjh©h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj ©ubjC)�”}”(hŒstruct qstr *name”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj�©h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj}©ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽ©h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj}©ubh)�”}”(hhh]”jI)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(hjŸ©h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjœ©ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¡©Œmodname”NŒ classname”Njj )�”}”j ]”jÒ¨Œc.start_removing_noperm”†”asbuh1hhj}©ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½©h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj}©ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjË©h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj}©ubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hjØ©h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj}©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj ©ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj“¨h²hh³j¤¨h´MÇ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj�¨h²hh³j¤¨h´MÇ ubah}”(h]”jЍah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j¤¨h´MÇ hjŒ¨h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ:prepare to remove a given name without permission checking”h]”hŒ:prepare to remove a given name without permission checking”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÇ hjÿ©h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjŒ¨h²hh³j¤¨h´MÇ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jªjšjªj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX�**Parameters** ``struct dentry *parent`` directory in which to find the name ``struct qstr *name`` the name to be removed **Description** Locks are taken and a lookup is performed prior to removing an object from a directory. If the name doesn't exist, an error is returned. end_removing() should be called when removal is complete, or aborted. **Return** a positive dentry, or an error.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj$ªh]”hŒ Parameters”…”�”}”(hj&ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj"ªubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MË hjªubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ>``struct dentry *parent`` directory in which to find the name ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hjCªh]”hŒstruct dentry *parent”…”�”}”(hjEªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjAªubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÈ hj=ªubjæ)�”}”(hhh]”hÌ)�”}”(hŒ#directory in which to find the name”h]”hŒ#directory in which to find the name”…”�”}”(hj\ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jXªh´MÈ hjYªubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj=ªubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jXªh´MÈ hj:ªubjÄ)�”}”(hŒ-``struct qstr *name`` the name to be removed ”h]”(jÊ)�”}”(hŒ``struct qstr *name``”h]”jÐ)�”}”(hj|ªh]”hŒstruct qstr *name”…”�”}”(hj~ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjzªubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÉ hjvªubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe name to be removed”h]”hŒthe name to be removed”…”�”}”(hj•ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‘ªh´MÉ hj’ªubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjvªubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‘ªh´MÉ hj:ªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjªubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj·ªh]”hŒ Description”…”�”}”(hj¹ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjµªubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MË hjªubhÌ)�”}”(hŒWLocks are taken and a lookup is performed prior to removing an object from a directory.”h]”hŒWLocks are taken and a lookup is performed prior to removing an object from a directory.”…”�”}”(hjͪh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÊ hjªubhÌ)�”}”(hŒ0If the name doesn't exist, an error is returned.”h]”hŒ2If the name doesn’t exist, an error is returned.”…”�”}”(hjܪh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÍ hjªubhÌ)�”}”(hŒEend_removing() should be called when removal is complete, or aborted.”h]”hŒEend_removing() should be called when removal is complete, or aborted.”…”�”}”(hjëªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÏ hjªubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjüªh]”hŒReturn”…”�”}”(hjþªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjúªubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÑ hjªubhÌ)�”}”(hŒa positive dentry, or an error.”h]”hŒa positive dentry, or an error.”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÒ hjªubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ"start_creating_dentry (C function)”Œc.start_creating_dentry”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒSstruct dentry * start_creating_dentry (struct dentry *parent, struct dentry *child)”h]”j)�”}”(hŒQstruct dentry *start_creating_dentry(struct dentry *parent, struct dentry *child)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjA«h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj=«h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mà ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO«h²hh³Nh´Nubah}”(h]”h ]”j>a•h"]”h$]”h&]”uh1j1hj=«h²hh³jN«h´Mà ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj`«h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj]«ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jb«Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒstart_creating_dentry”sbŒc.start_creating_dentry”†”asbuh1hhj=«h²hh³jN«h´Mà ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�«h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj=«h²hh³jN«h´Mà ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj�«h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj=«h²hh³jN«h´Mà ubjC)�”}”(hŒstart_creating_dentry”h]”jI)�”}”(hj~«h]”hŒstart_creating_dentry”…”�”}”(hj «h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjœ«ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj=«h²hh³jN«h´Mà ubj=)�”}”(hŒ-(struct dentry *parent, struct dentry *child)”h]”(jC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj»«h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj·«ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈ«h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj·«ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjÙ«h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÖ«ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÛ«Œmodname”NŒ classname”Njj )�”}”j ]”j|«Œc.start_creating_dentry”†”asbuh1hhj·«ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷«h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj·«ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj·«ubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj·«ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj³«ubjC)�”}”(hŒstruct dentry *child”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj+¬h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj'¬ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8¬h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj'¬ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjI¬h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjF¬ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jK¬Œmodname”NŒ classname”Njj )�”}”j ]”j|«Œc.start_creating_dentry”†”asbuh1hhj'¬ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg¬h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj'¬ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hju¬h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj'¬ubjI)�”}”(hŒchild”h]”hŒchild”…”�”}”(hj‚¬h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj'¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj³«ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj=«h²hh³jN«h´Mà ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj9«h²hh³jN«h´Mà ubah}”(h]”j4«ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jN«h´Mà hj6«h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ*prepare to access or create a given dentry”h]”hŒ*prepare to access or create a given dentry”…”�”}”(hj¬¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mà hj©¬h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj6«h²hh³jN«h´Mà ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jĬjšjĬj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXè**Parameters** ``struct dentry *parent`` directory of dentry ``struct dentry *child`` the dentry to be prepared **Description** A lock is taken to protect the dentry against other dirops and the validity of the dentry is checked: correct parent and still hashed. If the dentry is valid and negative a reference is taken and returned. If not an error is returned. end_creating() should be called when creation is complete, or aborted. **Return** the valid dentry, or an error.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjάh]”hŒ Parameters”…”�”}”(hjЬh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj̬ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mä hjȬubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ.``struct dentry *parent`` directory of dentry ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hjí¬h]”hŒstruct dentry *parent”…”�”}”(hjï¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjë¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Má hjç¬ubjæ)�”}”(hhh]”hÌ)�”}”(hŒdirectory of dentry”h]”hŒdirectory of dentry”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j­h´Má hj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjç¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j­h´Má hjä¬ubjÄ)�”}”(hŒ3``struct dentry *child`` the dentry to be prepared ”h]”(jÊ)�”}”(hŒ``struct dentry *child``”h]”jÐ)�”}”(hj&­h]”hŒstruct dentry *child”…”�”}”(hj(­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj$­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mâ hj ­ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe dentry to be prepared”h]”hŒthe dentry to be prepared”…”�”}”(hj?­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j;­h´Mâ hj<­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj ­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j;­h´Mâ hjä¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjȬubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hja­h]”hŒ Description”…”�”}”(hjc­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj_­ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mä hjȬubhÌ)�”}”(hŒ†A lock is taken to protect the dentry against other dirops and the validity of the dentry is checked: correct parent and still hashed.”h]”hŒ†A lock is taken to protect the dentry against other dirops and the validity of the dentry is checked: correct parent and still hashed.”…”�”}”(hjw­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mã hjȬubhÌ)�”}”(hŒdIf the dentry is valid and negative a reference is taken and returned. If not an error is returned.”h]”hŒdIf the dentry is valid and negative a reference is taken and returned. If not an error is returned.”…”�”}”(hj†­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mæ hjȬubhÌ)�”}”(hŒFend_creating() should be called when creation is complete, or aborted.”h]”hŒFend_creating() should be called when creation is complete, or aborted.”…”�”}”(hj•­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mé hjȬubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj¦­h]”hŒReturn”…”�”}”(hj¨­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¤­ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Më hjȬubhÌ)�”}”(hŒthe valid dentry, or an error.”h]”hŒthe valid dentry, or an error.”…”�”}”(hj¼­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mì hjȬubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ"start_removing_dentry (C function)”Œc.start_removing_dentry”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒSstruct dentry * start_removing_dentry (struct dentry *parent, struct dentry *child)”h]”j)�”}”(hŒQstruct dentry *start_removing_dentry(struct dentry *parent, struct dentry *child)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjë­h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjç­h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù­h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjç­h²hh³jø­h´Mubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj ®h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj®ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j ®Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒstart_removing_dentry”sbŒc.start_removing_dentry”†”asbuh1hhjç­h²hh³jø­h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+®h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjç­h²hh³jø­h´Mubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj9®h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjç­h²hh³jø­h´MubjC)�”}”(hŒstart_removing_dentry”h]”jI)�”}”(hj(®h]”hŒstart_removing_dentry”…”�”}”(hjJ®h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjF®ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjç­h²hh³jø­h´Mubj=)�”}”(hŒ-(struct dentry *parent, struct dentry *child)”h]”(jC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hje®h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhja®ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr®h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hja®ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjƒ®h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj€®ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j…®Œmodname”NŒ classname”Njj )�”}”j ]”j&®Œc.start_removing_dentry”†”asbuh1hhja®ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡®h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hja®ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¯®h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hja®ubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hj¼®h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhja®ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj]®ubjC)�”}”(hŒstruct dentry *child”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÕ®h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÑ®ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâ®h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÑ®ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjó®h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjð®ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jõ®Œmodname”NŒ classname”Njj )�”}”j ]”j&®Œc.start_removing_dentry”†”asbuh1hhjÑ®ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÑ®ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÑ®ubjI)�”}”(hŒchild”h]”hŒchild”…”�”}”(hj,¯h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÑ®ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj]®ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjç­h²hh³jø­h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjã­h²hh³jø­h´Mubah}”(h]”jÞ­ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jø­h´Mhjà­h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ prepare to remove a given dentry”h]”hŒ prepare to remove a given dentry”…”�”}”(hjV¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MhjS¯h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjà­h²hh³jø­h´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jn¯jšjn¯j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX**Parameters** ``struct dentry *parent`` directory from which dentry should be removed ``struct dentry *child`` the dentry to be removed **Description** A lock is taken to protect the dentry against other dirops and the validity of the dentry is checked: correct parent and still hashed. If the dentry is valid and positive, a reference is taken and returned. If not an error is returned. end_removing() should be called when removal is complete, or aborted. **Return** the valid dentry, or an error.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjx¯h]”hŒ Parameters”…”�”}”(hjz¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjv¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mhjr¯ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒH``struct dentry *parent`` directory from which dentry should be removed ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hj—¯h]”hŒstruct dentry *parent”…”�”}”(hj™¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj•¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mhj‘¯ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ-directory from which dentry should be removed”h]”hŒ-directory from which dentry should be removed”…”�”}”(hj°¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¬¯h´Mhj­¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj‘¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¬¯h´MhjޝubjÄ)�”}”(hŒ2``struct dentry *child`` the dentry to be removed ”h]”(jÊ)�”}”(hŒ``struct dentry *child``”h]”jÐ)�”}”(hjЯh]”hŒstruct dentry *child”…”�”}”(hjÒ¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjίubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mhjʯubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe dentry to be removed”h]”hŒthe dentry to be removed”…”�”}”(hjé¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jå¯h´Mhjæ¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjʯubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jå¯h´Mhjޝubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjr¯ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj °h]”hŒ Description”…”�”}”(hj °h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj °ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mhjr¯ubhÌ)�”}”(hŒ†A lock is taken to protect the dentry against other dirops and the validity of the dentry is checked: correct parent and still hashed.”h]”hŒ†A lock is taken to protect the dentry against other dirops and the validity of the dentry is checked: correct parent and still hashed.”…”�”}”(hj!°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mhjr¯ubhÌ)�”}”(hŒeIf the dentry is valid and positive, a reference is taken and returned. If not an error is returned.”h]”hŒeIf the dentry is valid and positive, a reference is taken and returned. If not an error is returned.”…”�”}”(hj0°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mhjr¯ubhÌ)�”}”(hŒEend_removing() should be called when removal is complete, or aborted.”h]”hŒEend_removing() should be called when removal is complete, or aborted.”…”�”}”(hj?°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M hjr¯ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjP°h]”hŒReturn”…”�”}”(hjR°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjN°ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M hjr¯ubhÌ)�”}”(hŒthe valid dentry, or an error.”h]”hŒthe valid dentry, or an error.”…”�”}”(hjf°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M hjr¯ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œstart_renaming (C function)”Œc.start_renaming”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒjint start_renaming (struct renamedata *rd, int lookup_flags, struct qstr *old_last, struct qstr *new_last)”h]”j)�”}”(hŒiint start_renaming(struct renamedata *rd, int lookup_flags, struct qstr *old_last, struct qstr *new_last)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj•°h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj‘°h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MZubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤°h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‘°h²hh³j£°h´MZubjC)�”}”(hŒstart_renaming”h]”jI)�”}”(hŒstart_renaming”h]”hŒstart_renaming”…”�”}”(hj¶°h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj²°ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj‘°h²hh³j£°h´MZubj=)�”}”(hŒW(struct renamedata *rd, int lookup_flags, struct qstr *old_last, struct qstr *new_last)”h]”(jC)�”}”(hŒstruct renamedata *rd”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÒ°h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjΰubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjß°h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjΰubh)�”}”(hhh]”jI)�”}”(hŒ renamedata”h]”hŒ renamedata”…”�”}”(hjð°h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjí°ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jò°Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj¸°sbŒc.start_renaming”†”asbuh1hhjΰubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjΰubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjΰubjI)�”}”(hŒrd”h]”hŒrd”…”�”}”(hj+±h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjΰubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjʰubjC)�”}”(hŒint lookup_flags”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjD±h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj@±ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjR±h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj@±ubjI)�”}”(hŒ lookup_flags”h]”hŒ lookup_flags”…”�”}”(hj`±h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj@±ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjʰubjC)�”}”(hŒstruct qstr *old_last”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjy±h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhju±ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†±h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hju±ubh)�”}”(hhh]”jI)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(hj—±h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj”±ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j™±Œmodname”NŒ classname”Njj )�”}”j ]”j ±Œc.start_renaming”†”asbuh1hhju±ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµ±h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hju±ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hju±ubjI)�”}”(hŒold_last”h]”hŒold_last”…”�”}”(hjбh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhju±ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjʰubjC)�”}”(hŒstruct qstr *new_last”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjé±h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjå±ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö±h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjå±ubh)�”}”(hhh]”jI)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj²ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j ²Œmodname”NŒ classname”Njj )�”}”j ]”j ±Œc.start_renaming”†”asbuh1hhjå±ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%²h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjå±ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj3²h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjå±ubjI)�”}”(hŒnew_last”h]”hŒnew_last”…”�”}”(hj@²h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjå±ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjʰubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj‘°h²hh³j£°h´MZubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj�°h²hh³j£°h´MZubah}”(h]”jˆ°ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j£°h´MZhjаh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ9lookup and lock names for rename with permission checking”h]”hŒ9lookup and lock names for rename with permission checking”…”�”}”(hjj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MZhjg²h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjаh²hh³j£°h´MZubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j‚²jšj‚²j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX**Parameters** ``struct renamedata *rd`` rename data containing parents and flags, and for receiving found dentries ``int lookup_flags`` extra flags to pass to ->lookup (e.g. LOOKUP_REVAL, LOOKUP_NO_SYMLINKS etc). ``struct qstr *old_last`` name of object in **rd.old_parent** ``struct qstr *new_last`` name of object in **rd.new_parent** **Description** Look up two names and ensure locks are in place for rename. On success the found dentries are stored in **rd.old_dentry**, **rd.new_dentry**. Also the refcount on **rd->old_parent** is increased. These references and the lock are dropped by end_renaming(). The passed in qstrs need not have the hash calculated, and basic eXecute permission checking is performed against **rd.mnt_idmap**. **Return** zero or an error.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjŒ²h]”hŒ Parameters”…”�”}”(hj޲h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjвubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M^hj†²ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒe``struct renamedata *rd`` rename data containing parents and flags, and for receiving found dentries ”h]”(jÊ)�”}”(hŒ``struct renamedata *rd``”h]”jÐ)�”}”(hj«²h]”hŒstruct renamedata *rd”…”�”}”(hj­²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj©²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M\hj¥²ubjæ)�”}”(hhh]”hÌ)�”}”(hŒJrename data containing parents and flags, and for receiving found dentries”h]”hŒJrename data containing parents and flags, and for receiving found dentries”…”�”}”(hjIJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M[hjÁ²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¥²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÀ²h´M\hj¢²ubjÄ)�”}”(hŒb``int lookup_flags`` extra flags to pass to ->lookup (e.g. LOOKUP_REVAL, LOOKUP_NO_SYMLINKS etc). ”h]”(jÊ)�”}”(hŒ``int lookup_flags``”h]”jÐ)�”}”(hjå²h]”hŒint lookup_flags”…”�”}”(hjç²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjã²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M^hjß²ubjæ)�”}”(hhh]”hÌ)�”}”(hŒLextra flags to pass to ->lookup (e.g. LOOKUP_REVAL, LOOKUP_NO_SYMLINKS etc).”h]”hŒLextra flags to pass to ->lookup (e.g. LOOKUP_REVAL, LOOKUP_NO_SYMLINKS etc).”…”�”}”(hjþ²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M]hjû²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjß²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jú²h´M^hj¢²ubjÄ)�”}”(hŒ>``struct qstr *old_last`` name of object in **rd.old_parent** ”h]”(jÊ)�”}”(hŒ``struct qstr *old_last``”h]”jÐ)�”}”(hj³h]”hŒstruct qstr *old_last”…”�”}”(hj!³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M_hj³ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ#name of object in **rd.old_parent**”h]”(hŒname of object in ”…”�”}”(hj8³h²hh³Nh´Nubj©)�”}”(hŒ**rd.old_parent**”h]”hŒ rd.old_parent”…”�”}”(hj@³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj8³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j4³h´M_hj5³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j4³h´M_hj¢²ubjÄ)�”}”(hŒ>``struct qstr *new_last`` name of object in **rd.new_parent** ”h]”(jÊ)�”}”(hŒ``struct qstr *new_last``”h]”jÐ)�”}”(hjf³h]”hŒstruct qstr *new_last”…”�”}”(hjh³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjd³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M`hj`³ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ#name of object in **rd.new_parent**”h]”(hŒname of object in ”…”�”}”(hj³h²hh³Nh´Nubj©)�”}”(hŒ**rd.new_parent**”h]”hŒ rd.new_parent”…”�”}”(hj‡³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j{³h´M`hj|³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj`³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j{³h´M`hj¢²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj†²ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj¯³h]”hŒ Description”…”�”}”(hj±³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj­³ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mbhj†²ubhÌ)�”}”(hŒ;Look up two names and ensure locks are in place for rename.”h]”hŒ;Look up two names and ensure locks are in place for rename.”…”�”}”(hjųh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mahj†²ubhÌ)�”}”(hŒÅOn success the found dentries are stored in **rd.old_dentry**, **rd.new_dentry**. Also the refcount on **rd->old_parent** is increased. These references and the lock are dropped by end_renaming().”h]”(hŒ,On success the found dentries are stored in ”…”�”}”(hjÔ³h²hh³Nh´Nubj©)�”}”(hŒ**rd.old_dentry**”h]”hŒ rd.old_dentry”…”�”}”(hjܳh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÔ³ubhŒ, ”…”�”}”(hjÔ³h²hh³Nh´Nubj©)�”}”(hŒ**rd.new_dentry**”h]”hŒ rd.new_dentry”…”�”}”(hjî³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÔ³ubhŒ. Also the refcount on ”…”�”}”(hjÔ³h²hh³Nh´Nubj©)�”}”(hŒ**rd->old_parent**”h]”hŒrd->old_parent”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÔ³ubhŒK is increased. These references and the lock are dropped by end_renaming().”…”�”}”(hjÔ³h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mdhj†²ubhÌ)�”}”(hŒƒThe passed in qstrs need not have the hash calculated, and basic eXecute permission checking is performed against **rd.mnt_idmap**.”h]”(hŒrThe passed in qstrs need not have the hash calculated, and basic eXecute permission checking is performed against ”…”�”}”(hj´h²hh³Nh´Nubj©)�”}”(hŒ**rd.mnt_idmap**”h]”hŒ rd.mnt_idmap”…”�”}”(hj!´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj´ubhŒ.”…”�”}”(hj´h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mhhj†²ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj<´h]”hŒReturn”…”�”}”(hj>´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj:´ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mkhj†²ubhÌ)�”}”(hŒzero or an error.”h]”hŒzero or an error.”…”�”}”(hjR´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mlhj†²ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ"start_renaming_dentry (C function)”Œc.start_renaming_dentry”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒuint start_renaming_dentry (struct renamedata *rd, int lookup_flags, struct dentry *old_dentry, struct qstr *new_last)”h]”j)�”}”(hŒtint start_renaming_dentry(struct renamedata *rd, int lookup_flags, struct dentry *old_dentry, struct qstr *new_last)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj�´h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj}´h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M¸ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�´h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj}´h²hh³j�´h´M¸ubjC)�”}”(hŒstart_renaming_dentry”h]”jI)�”}”(hŒstart_renaming_dentry”h]”hŒstart_renaming_dentry”…”�”}”(hj¢´h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjž´ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj}´h²hh³j�´h´M¸ubj=)�”}”(hŒ[(struct renamedata *rd, int lookup_flags, struct dentry *old_dentry, struct qstr *new_last)”h]”(jC)�”}”(hŒstruct renamedata *rd”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¾´h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjº´ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjË´h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjº´ubh)�”}”(hhh]”jI)�”}”(hŒ renamedata”h]”hŒ renamedata”…”�”}”(hjÜ´h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÙ´ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÞ´Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj¤´sbŒc.start_renaming_dentry”†”asbuh1hhjº´ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjü´h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjº´ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj µh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjº´ubjI)�”}”(hŒrd”h]”hŒrd”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjº´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¶´ubjC)�”}”(hŒint lookup_flags”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj0µh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj,µubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>µh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj,µubjI)�”}”(hŒ lookup_flags”h]”hŒ lookup_flags”…”�”}”(hjLµh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj,µubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¶´ubjC)�”}”(hŒstruct dentry *old_dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjeµh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjaµubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrµh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjaµubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjƒµh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj€µubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j…µŒmodname”NŒ classname”Njj )�”}”j ]”jø´Œc.start_renaming_dentry”†”asbuh1hhjaµubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡µh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjaµubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¯µh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjaµubjI)�”}”(hŒ old_dentry”h]”hŒ old_dentry”…”�”}”(hj¼µh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjaµubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¶´ubjC)�”}”(hŒstruct qstr *new_last”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÕµh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjѵubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâµh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjѵubh)�”}”(hhh]”jI)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(hjóµh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjðµubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jõµŒmodname”NŒ classname”Njj )�”}”j ]”jø´Œc.start_renaming_dentry”†”asbuh1hhjѵubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjѵubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjѵubjI)�”}”(hŒnew_last”h]”hŒnew_last”…”�”}”(hj,¶h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjѵubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¶´ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj}´h²hh³j�´h´M¸ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjy´h²hh³j�´h´M¸ubah}”(h]”jt´ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j�´h´M¸hjv´h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ8lookup and lock name for rename with permission checking”h]”hŒ8lookup and lock name for rename with permission checking”…”�”}”(hjV¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M¸hjS¶h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjv´h²hh³j�´h´M¸ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jn¶jšjn¶j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX˜**Parameters** ``struct renamedata *rd`` rename data containing parents and flags, and for receiving found dentries ``int lookup_flags`` extra flags to pass to ->lookup (e.g. LOOKUP_REVAL, LOOKUP_NO_SYMLINKS etc). ``struct dentry *old_dentry`` dentry of name to move ``struct qstr *new_last`` name of target in **rd.new_parent** **Description** Look up target name and ensure locks are in place for rename. On success the found dentry is stored in **rd.new_dentry** and **rd.old_parent** is confirmed to be the parent of **old_dentry**. If it was originally ``NULL``, it is set. In either case a reference is taken so that end_renaming() can have a stable reference to unlock. References and the lock can be dropped with end_renaming() The passed in qstr need not have the hash calculated, and basic eXecute permission checking is performed against **rd.mnt_idmap**. **Return** zero or an error.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjx¶h]”hŒ Parameters”…”�”}”(hjz¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjv¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M¼hjr¶ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒe``struct renamedata *rd`` rename data containing parents and flags, and for receiving found dentries ”h]”(jÊ)�”}”(hŒ``struct renamedata *rd``”h]”jÐ)�”}”(hj—¶h]”hŒstruct renamedata *rd”…”�”}”(hj™¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj•¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mºhj‘¶ubjæ)�”}”(hhh]”hÌ)�”}”(hŒJrename data containing parents and flags, and for receiving found dentries”h]”hŒJrename data containing parents and flags, and for receiving found dentries”…”�”}”(hj°¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M¹hj­¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj‘¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¬¶h´Mºhj޶ubjÄ)�”}”(hŒb``int lookup_flags`` extra flags to pass to ->lookup (e.g. LOOKUP_REVAL, LOOKUP_NO_SYMLINKS etc). ”h]”(jÊ)�”}”(hŒ``int lookup_flags``”h]”jÐ)�”}”(hjѶh]”hŒint lookup_flags”…”�”}”(hjÓ¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj϶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M¼hj˶ubjæ)�”}”(hhh]”hÌ)�”}”(hŒLextra flags to pass to ->lookup (e.g. LOOKUP_REVAL, LOOKUP_NO_SYMLINKS etc).”h]”hŒLextra flags to pass to ->lookup (e.g. LOOKUP_REVAL, LOOKUP_NO_SYMLINKS etc).”…”�”}”(hjê¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M»hjç¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj˶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jæ¶h´M¼hj޶ubjÄ)�”}”(hŒ5``struct dentry *old_dentry`` dentry of name to move ”h]”(jÊ)�”}”(hŒ``struct dentry *old_dentry``”h]”jÐ)�”}”(hj ·h]”hŒstruct dentry *old_dentry”…”�”}”(hj ·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj ·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M½hj·ubjæ)�”}”(hhh]”hÌ)�”}”(hŒdentry of name to move”h]”hŒdentry of name to move”…”�”}”(hj$·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j ·h´M½hj!·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j ·h´M½hj޶ubjÄ)�”}”(hŒ>``struct qstr *new_last`` name of target in **rd.new_parent** ”h]”(jÊ)�”}”(hŒ``struct qstr *new_last``”h]”jÐ)�”}”(hjD·h]”hŒstruct qstr *new_last”…”�”}”(hjF·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjB·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M¾hj>·ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ#name of target in **rd.new_parent**”h]”(hŒname of target in ”…”�”}”(hj]·h²hh³Nh´Nubj©)�”}”(hŒ**rd.new_parent**”h]”hŒ rd.new_parent”…”�”}”(hje·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj]·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jY·h´M¾hjZ·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj>·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jY·h´M¾hj޶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjr¶ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj�·h]”hŒ Description”…”�”}”(hj�·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‹·ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÀhjr¶ubhÌ)�”}”(hŒ=Look up target name and ensure locks are in place for rename.”h]”hŒ=Look up target name and ensure locks are in place for rename.”…”�”}”(hj£·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M¿hjr¶ubhÌ)�”}”(hXOn success the found dentry is stored in **rd.new_dentry** and **rd.old_parent** is confirmed to be the parent of **old_dentry**. If it was originally ``NULL``, it is set. In either case a reference is taken so that end_renaming() can have a stable reference to unlock.”h]”(hŒ)On success the found dentry is stored in ”…”�”}”(hj²·h²hh³Nh´Nubj©)�”}”(hŒ**rd.new_dentry**”h]”hŒ rd.new_dentry”…”�”}”(hjº·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj²·ubhŒ and ”…”�”}”(hj²·h²hh³Nh´Nubj©)�”}”(hŒ**rd.old_parent**”h]”hŒ rd.old_parent”…”�”}”(hjÌ·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj²·ubhŒ" is confirmed to be the parent of ”…”�”}”(hj²·h²hh³Nh´Nubj©)�”}”(hŒ**old_dentry**”h]”hŒ old_dentry”…”�”}”(hjÞ·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj²·ubhŒ. If it was originally ”…”�”}”(hj²·h²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjð·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj²·ubhŒo, it is set. In either case a reference is taken so that end_renaming() can have a stable reference to unlock.”…”�”}”(hj²·h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÂhjr¶ubhÌ)�”}”(hŒ:References and the lock can be dropped with end_renaming()”h]”hŒ:References and the lock can be dropped with end_renaming()”…”�”}”(hj ¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÇhjr¶ubhÌ)�”}”(hŒ‚The passed in qstr need not have the hash calculated, and basic eXecute permission checking is performed against **rd.mnt_idmap**.”h]”(hŒqThe passed in qstr need not have the hash calculated, and basic eXecute permission checking is performed against ”…”�”}”(hj¸h²hh³Nh´Nubj©)�”}”(hŒ**rd.mnt_idmap**”h]”hŒ rd.mnt_idmap”…”�”}”(hj ¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¸ubhŒ.”…”�”}”(hj¸h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÉhjr¶ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj;¸h]”hŒReturn”…”�”}”(hj=¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj9¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÌhjr¶ubhÌ)�”}”(hŒzero or an error.”h]”hŒzero or an error.”…”�”}”(hjQ¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÍhjr¶ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ(start_renaming_two_dentries (C function)”Œc.start_renaming_two_dentries”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒmint start_renaming_two_dentries (struct renamedata *rd, struct dentry *old_dentry, struct dentry *new_dentry)”h]”j)�”}”(hŒlint start_renaming_two_dentries(struct renamedata *rd, struct dentry *old_dentry, struct dentry *new_dentry)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj€¸h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj|¸h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÜubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�¸h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj|¸h²hh³jޏh´MÜubjC)�”}”(hŒstart_renaming_two_dentries”h]”jI)�”}”(hŒstart_renaming_two_dentries”h]”hŒstart_renaming_two_dentries”…”�”}”(hj¡¸h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�¸ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj|¸h²hh³jޏh´MÜubj=)�”}”(hŒM(struct renamedata *rd, struct dentry *old_dentry, struct dentry *new_dentry)”h]”(jC)�”}”(hŒstruct renamedata *rd”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj½¸h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¹¸ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjʸh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¹¸ubh)�”}”(hhh]”jI)�”}”(hŒ renamedata”h]”hŒ renamedata”…”�”}”(hjÛ¸h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjظubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jݸŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj£¸sbŒc.start_renaming_two_dentries”†”asbuh1hhj¹¸ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû¸h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¹¸ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj ¹h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¹¸ubjI)�”}”(hŒrd”h]”hŒrd”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¹¸ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjµ¸ubjC)�”}”(hŒstruct dentry *old_dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj/¹h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj+¹ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<¹h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj+¹ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjM¹h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjJ¹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jO¹Œmodname”NŒ classname”Njj )�”}”j ]”j÷¸Œc.start_renaming_two_dentries”†”asbuh1hhj+¹ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjk¹h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj+¹ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjy¹h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj+¹ubjI)�”}”(hŒ old_dentry”h]”hŒ old_dentry”…”�”}”(hj†¹h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj+¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjµ¸ubjC)�”}”(hŒstruct dentry *new_dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjŸ¹h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj›¹ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬¹h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj›¹ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj½¹h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjº¹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¿¹Œmodname”NŒ classname”Njj )�”}”j ]”j÷¸Œc.start_renaming_two_dentries”†”asbuh1hhj›¹ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ¹h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj›¹ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjé¹h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj›¹ubjI)�”}”(hŒ new_dentry”h]”hŒ new_dentry”…”�”}”(hjö¹h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj›¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjµ¸ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj|¸h²hh³jޏh´MÜubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjx¸h²hh³jޏh´MÜubah}”(h]”js¸ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jޏh´MÜhju¸h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ,Lock to dentries in given parents for rename”h]”hŒ,Lock to dentries in given parents for rename”…”�”}”(hj ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÜhjºh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhju¸h²hh³jޏh´MÜubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j8ºjšj8ºj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX**Parameters** ``struct renamedata *rd`` rename data containing parent ``struct dentry *old_dentry`` dentry of name to move ``struct dentry *new_dentry`` dentry to move to **Description** Ensure locks are in place for rename and check parentage is still correct. On success the two dentries are stored in **rd.old_dentry** and **rd.new_dentry** and **rd.old_parent** and **rd.new_parent** are confirmed to be the parents of the dentries. References and the lock can be dropped with end_renaming() **Return** zero or an error.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjBºh]”hŒ Parameters”…”�”}”(hjDºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj@ºubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Màhj<ºubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ8``struct renamedata *rd`` rename data containing parent ”h]”(jÊ)�”}”(hŒ``struct renamedata *rd``”h]”jÐ)�”}”(hjaºh]”hŒstruct renamedata *rd”…”�”}”(hjcºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj_ºubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÝhj[ºubjæ)�”}”(hhh]”hÌ)�”}”(hŒrename data containing parent”h]”hŒrename data containing parent”…”�”}”(hjzºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jvºh´MÝhjwºubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj[ºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jvºh´MÝhjXºubjÄ)�”}”(hŒ5``struct dentry *old_dentry`` dentry of name to move ”h]”(jÊ)�”}”(hŒ``struct dentry *old_dentry``”h]”jÐ)�”}”(hjšºh]”hŒstruct dentry *old_dentry”…”�”}”(hjœºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj˜ºubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÞhj”ºubjæ)�”}”(hhh]”hÌ)�”}”(hŒdentry of name to move”h]”hŒdentry of name to move”…”�”}”(hj³ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¯ºh´MÞhj°ºubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj”ºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¯ºh´MÞhjXºubjÄ)�”}”(hŒ0``struct dentry *new_dentry`` dentry to move to ”h]”(jÊ)�”}”(hŒ``struct dentry *new_dentry``”h]”jÐ)�”}”(hjÓºh]”hŒstruct dentry *new_dentry”…”�”}”(hjÕºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjѺubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mßhjͺubjæ)�”}”(hhh]”hÌ)�”}”(hŒdentry to move to”h]”hŒdentry to move to”…”�”}”(hjìºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jèºh´Mßhjéºubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjͺubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jèºh´MßhjXºubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj<ºubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj»h]”hŒ Description”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj »ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Máhj<ºubhÌ)�”}”(hŒJEnsure locks are in place for rename and check parentage is still correct.”h]”hŒJEnsure locks are in place for rename and check parentage is still correct.”…”�”}”(hj$»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Màhj<ºubhÌ)�”}”(hŒ®On success the two dentries are stored in **rd.old_dentry** and **rd.new_dentry** and **rd.old_parent** and **rd.new_parent** are confirmed to be the parents of the dentries.”h]”(hŒ*On success the two dentries are stored in ”…”�”}”(hj3»h²hh³Nh´Nubj©)�”}”(hŒ**rd.old_dentry**”h]”hŒ rd.old_dentry”…”�”}”(hj;»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj3»ubhŒ and ”…”�”}”(hj3»h²hh³Nh´Nubj©)�”}”(hŒ**rd.new_dentry**”h]”hŒ rd.new_dentry”…”�”}”(hjM»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj3»ubhŒ and ”…”�”}”(hj3»h²hh³Nh´Nubj©)�”}”(hŒ**rd.old_parent**”h]”hŒ rd.old_parent”…”�”}”(hj_»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj3»ubhŒ and ”…”�”}”hj3»sbj©)�”}”(hŒ**rd.new_parent**”h]”hŒ rd.new_parent”…”�”}”(hjq»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj3»ubhŒ1 are confirmed to be the parents of the dentries.”…”�”}”(hj3»h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mâhj<ºubhÌ)�”}”(hŒ:References and the lock can be dropped with end_renaming()”h]”hŒ:References and the lock can be dropped with end_renaming()”…”�”}”(hjŠ»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mæhj<ºubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj›»h]”hŒReturn”…”�”}”(hj�»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj™»ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mèhj<ºubhÌ)�”}”(hŒzero or an error.”h]”hŒzero or an error.”…”�”}”(hj±»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Méhj<ºubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_create (C function)”Œ c.vfs_create”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒoint vfs_create (const struct mnt_idmap *idmap, struct dentry *dentry, umode_t mode, struct delegated_inode *di)”h]”j)�”}”(hŒnint vfs_create(const struct mnt_idmap *idmap, struct dentry *dentry, umode_t mode, struct delegated_inode *di)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjà»h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÜ»h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MIubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï»h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÜ»h²hh³jî»h´MIubjC)�”}”(hŒ vfs_create”h]”jI)�”}”(hŒ vfs_create”h]”hŒ vfs_create”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjý»ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÜ»h²hh³jî»h´MIubj=)�”}”(hŒ`(const struct mnt_idmap *idmap, struct dentry *dentry, umode_t mode, struct delegated_inode *di)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¼ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*¼h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¼ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj8¼h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¼ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE¼h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¼ubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hjV¼h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjS¼ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jX¼Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj¼sbŒ c.vfs_create”†”asbuh1hhj¼ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv¼h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¼ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj„¼h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¼ubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hj‘¼h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¼ubjC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjª¼h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¦¼ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·¼h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¦¼ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjȼh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjżubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jʼŒmodname”NŒ classname”Njj )�”}”j ]”jr¼Œ c.vfs_create”†”asbuh1hhj¦¼ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ¼h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¦¼ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjô¼h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¦¼ubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¦¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¼ubjC)�”}”(hŒ umode_t mode”h]”(h)�”}”(hhh]”jI)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj½ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j½Œmodname”NŒ classname”Njj )�”}”j ]”jr¼Œ c.vfs_create”†”asbuh1hhj½ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;½h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj½ubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hjI½h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj½ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¼ubjC)�”}”(hŒstruct delegated_inode *di”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjb½h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj^½ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo½h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj^½ubh)�”}”(hhh]”jI)�”}”(hŒdelegated_inode”h]”hŒdelegated_inode”…”�”}”(hj€½h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj}½ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j‚½Œmodname”NŒ classname”Njj )�”}”j ]”jr¼Œ c.vfs_create”†”asbuh1hhj^½ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjž½h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj^½ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¬½h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj^½ubjI)�”}”(hŒdi”h]”hŒdi”…”�”}”(hj¹½h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj^½ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¼ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÜ»h²hh³jî»h´MIubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjØ»h²hh³jî»h´MIubah}”(h]”jÓ»ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jî»h´MIhjÕ»h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒcreate new file”h]”hŒcreate new file”…”�”}”(hjã½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MIhjà½h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÕ»h²hh³jî»h´MIubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jû½jšjû½j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX†**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ``struct dentry *dentry`` dentry of the child file ``umode_t mode`` mode of the child file ``struct delegated_inode *di`` returns parent inode, if the inode is delegated. **Description** Create a new file. If the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through **idmap**. This function will then take care to map the inode according to **idmap** before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass **nop_mnt_idmap**.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj¾h]”hŒ Parameters”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MMhjÿ½ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒN``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj$¾h]”hŒconst struct mnt_idmap *idmap”…”�”}”(hj&¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj"¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MJhj¾ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+idmap of the mount the inode was found from”h]”hŒ+idmap of the mount the inode was found from”…”�”}”(hj=¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j9¾h´MJhj:¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j9¾h´MJhj¾ubjÄ)�”}”(hŒ3``struct dentry *dentry`` dentry of the child file ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hj]¾h]”hŒstruct dentry *dentry”…”�”}”(hj_¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj[¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MKhjW¾ubjæ)�”}”(hhh]”hÌ)�”}”(hŒdentry of the child file”h]”hŒdentry of the child file”…”�”}”(hjv¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jr¾h´MKhjs¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjW¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jr¾h´MKhj¾ubjÄ)�”}”(hŒ(``umode_t mode`` mode of the child file ”h]”(jÊ)�”}”(hŒ``umode_t mode``”h]”jÐ)�”}”(hj–¾h]”hŒ umode_t mode”…”�”}”(hj˜¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj”¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MLhj�¾ubjæ)�”}”(hhh]”hÌ)�”}”(hŒmode of the child file”h]”hŒmode of the child file”…”�”}”(hj¯¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j«¾h´MLhj¬¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj�¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j«¾h´MLhj¾ubjÄ)�”}”(hŒP``struct delegated_inode *di`` returns parent inode, if the inode is delegated. ”h]”(jÊ)�”}”(hŒ``struct delegated_inode *di``”h]”jÐ)�”}”(hjϾh]”hŒstruct delegated_inode *di”…”�”}”(hjѾh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MMhjɾubjæ)�”}”(hhh]”hÌ)�”}”(hŒ0returns parent inode, if the inode is delegated.”h]”hŒ0returns parent inode, if the inode is delegated.”…”�”}”(hjè¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jä¾h´MMhjå¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjɾubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jä¾h´MMhj¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÿ½ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj ¿h]”hŒ Description”…”�”}”(hj ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MOhjÿ½ubhÌ)�”}”(hŒCreate a new file.”h]”hŒCreate a new file.”…”�”}”(hj ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MNhjÿ½ubhÌ)�”}”(hXLIf the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through **idmap**. This function will then take care to map the inode according to **idmap** before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass **nop_mnt_idmap**.”h]”(hŒgIf the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through ”…”�”}”(hj/¿h²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hj7¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj/¿ubhŒB. This function will then take care to map the inode according to ”…”�”}”(hj/¿h²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hjI¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj/¿ubhŒ before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass ”…”�”}”(hj/¿h²hh³Nh´Nubj©)�”}”(hŒ**nop_mnt_idmap**”h]”hŒ nop_mnt_idmap”…”�”}”(hj[¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj/¿ubhŒ.”…”�”}”(hj/¿h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MPhjÿ½ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ kernel_tmpfile_open (C function)”Œc.kernel_tmpfile_open”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ–struct file * kernel_tmpfile_open (const struct mnt_idmap *idmap, const struct path *parentpath, umode_t mode, int open_flag, const struct cred *cred)”h]”j)�”}”(hŒ”struct file *kernel_tmpfile_open(const struct mnt_idmap *idmap, const struct path *parentpath, umode_t mode, int open_flag, const struct cred *cred)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj”¿h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj�¿h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MAubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢¿h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�¿h²hh³j¡¿h´MAubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj³¿h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj°¿ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jµ¿Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒkernel_tmpfile_open”sbŒc.kernel_tmpfile_open”†”asbuh1hhj�¿h²hh³j¡¿h´MAubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ¿h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�¿h²hh³j¡¿h´MAubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjâ¿h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj�¿h²hh³j¡¿h´MAubjC)�”}”(hŒkernel_tmpfile_open”h]”jI)�”}”(hjÑ¿h]”hŒkernel_tmpfile_open”…”�”}”(hjó¿h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjï¿ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj�¿h²hh³j¡¿h´MAubj=)�”}”(hŒt(const struct mnt_idmap *idmap, const struct path *parentpath, umode_t mode, int open_flag, const struct cred *cred)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj Àubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj Àubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj)Àh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj Àubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6Àh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj Àubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hjGÀh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjDÀubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jIÀŒmodname”NŒ classname”Njj )�”}”j ]”jÏ¿Œc.kernel_tmpfile_open”†”asbuh1hhj Àubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeÀh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj Àubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjsÀh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ÀubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hj€Àh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj Àubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÀubjC)�”}”(hŒconst struct path *parentpath”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj™Àh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj•Àubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦Àh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj•Àubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj´Àh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj•Àubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁÀh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj•Àubh)�”}”(hhh]”jI)�”}”(hŒpath”h]”hŒpath”…”�”}”(hjÒÀh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÏÀubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÔÀŒmodname”NŒ classname”Njj )�”}”j ]”jÏ¿Œc.kernel_tmpfile_open”†”asbuh1hhj•Àubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðÀh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&•X]”uh1j1hj•Àubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjþÀh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj•ÀubjI)�”}”(hŒ parentpath”h]”hŒ parentpath”…”�”}”(hj Áh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj•Àubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÀubjC)�”}”(hŒ umode_t mode”h]”(h)�”}”(hhh]”jI)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hj'Áh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj$Áubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j)ÁŒmodname”NŒ classname”Njj )�”}”j ]”jÏ¿Œc.kernel_tmpfile_open”†”asbuh1hhj Áubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEÁh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ÁubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hjSÁh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj Áubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÀubjC)�”}”(hŒ int open_flag”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjlÁh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjhÁubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzÁh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjhÁubjI)�”}”(hŒ open_flag”h]”hŒ open_flag”…”�”}”(hjˆÁh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjhÁubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÀubjC)�”}”(hŒconst struct cred *cred”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj¡Áh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj�Áubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®Áh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�Áubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¼Áh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj�Áubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉÁh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�Áubh)�”}”(hhh]”jI)�”}”(hŒcred”h]”hŒcred”…”�”}”(hjÚÁh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj×Áubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÜÁŒmodname”NŒ classname”Njj )�”}”j ]”jÏ¿Œc.kernel_tmpfile_open”†”asbuh1hhj�Áubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøÁh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�Áubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj�ÁubjI)�”}”(hŒcred”h]”hŒcred”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�Áubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÀubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj�¿h²hh³j¡¿h´MAubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjŒ¿h²hh³j¡¿h´MAubah}”(h]”j‡¿ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j¡¿h´MAhj‰¿h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ&open a tmpfile for kernel internal use”h]”hŒ&open a tmpfile for kernel internal use”…”�”}”(hj=Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MAhj:Âh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj‰¿h²hh³j¡¿h´MAubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jUÂjšjUÂj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXÖ**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ``const struct path *parentpath`` path of the base directory ``umode_t mode`` mode of the new tmpfile ``int open_flag`` flags ``const struct cred *cred`` credentials for open **Description** Create and open a temporary file. The file is not accounted in nr_files, hence this is only for kernel internal use, and must not be installed into file tables or such.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj_Âh]”hŒ Parameters”…”�”}”(hjaÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj]Âubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MEhjYÂubj¿)�”}”(hhh]”(jÄ)�”}”(hŒN``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj~Âh]”hŒconst struct mnt_idmap *idmap”…”�”}”(hj€Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj|Âubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MBhjxÂubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+idmap of the mount the inode was found from”h]”hŒ+idmap of the mount the inode was found from”…”�”}”(hj—Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j“Âh´MBhj”Âubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjxÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j“Âh´MBhjuÂubjÄ)�”}”(hŒ=``const struct path *parentpath`` path of the base directory ”h]”(jÊ)�”}”(hŒ!``const struct path *parentpath``”h]”jÐ)�”}”(hj·Âh]”hŒconst struct path *parentpath”…”�”}”(hj¹Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjµÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MChj±Âubjæ)�”}”(hhh]”hÌ)�”}”(hŒpath of the base directory”h]”hŒpath of the base directory”…”�”}”(hjÐÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÌÂh´MChjÍÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj±Âubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÌÂh´MChjuÂubjÄ)�”}”(hŒ)``umode_t mode`` mode of the new tmpfile ”h]”(jÊ)�”}”(hŒ``umode_t mode``”h]”jÐ)�”}”(hjðÂh]”hŒ umode_t mode”…”�”}”(hjòÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjîÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MDhjêÂubjæ)�”}”(hhh]”hÌ)�”}”(hŒmode of the new tmpfile”h]”hŒmode of the new tmpfile”…”�”}”(hj Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÃh´MDhjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjêÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÃh´MDhjuÂubjÄ)�”}”(hŒ``int open_flag`` flags ”h]”(jÊ)�”}”(hŒ``int open_flag``”h]”jÐ)�”}”(hj)Ãh]”hŒ int open_flag”…”�”}”(hj+Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj'Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MEhj#Ãubjæ)�”}”(hhh]”hÌ)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjBÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j>Ãh´MEhj?Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj#Ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j>Ãh´MEhjuÂubjÄ)�”}”(hŒ1``const struct cred *cred`` credentials for open ”h]”(jÊ)�”}”(hŒ``const struct cred *cred``”h]”jÐ)�”}”(hjbÃh]”hŒconst struct cred *cred”…”�”}”(hjdÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj`Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MFhj\Ãubjæ)�”}”(hhh]”hÌ)�”}”(hŒcredentials for open”h]”hŒcredentials for open”…”�”}”(hj{Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jwÃh´MFhjxÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj\Ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jwÃh´MFhjuÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjYÂubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj�Ãh]”hŒ Description”…”�”}”(hjŸÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj›Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MHhjYÂubhÌ)�”}”(hŒ©Create and open a temporary file. The file is not accounted in nr_files, hence this is only for kernel internal use, and must not be installed into file tables or such.”h]”hŒ©Create and open a temporary file. The file is not accounted in nr_files, hence this is only for kernel internal use, and must not be installed into file tables or such.”…”�”}”(hj³Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MGhjYÂubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œend_creating_path (C function)”Œc.end_creating_path”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒGvoid end_creating_path (const struct path *path, struct dentry *dentry)”h]”j)�”}”(hŒFvoid end_creating_path(const struct path *path, struct dentry *dentry)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjâÃh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÞÃh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñÃh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÞÃh²hh³jðÃh´MubjC)�”}”(hŒend_creating_path”h]”jI)�”}”(hŒend_creating_path”h]”hŒend_creating_path”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÿÃubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÞÃh²hh³jðÃh´Mubj=)�”}”(hŒ0(const struct path *path, struct dentry *dentry)”h]”(jC)�”}”(hŒconst struct path *path”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÄubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,Äh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÄubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj:Äh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÄubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGÄh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÄubh)�”}”(hhh]”jI)�”}”(hŒpath”h]”hŒpath”…”�”}”(hjXÄh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjUÄubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jZÄŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÄsbŒc.end_creating_path”†”asbuh1hhjÄubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxÄh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÄubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj†Äh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÄubjI)�”}”(hŒpath”h]”hŒpath”…”�”}”(hj“Äh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÄubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÄubjC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¬Äh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¨Äubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹Äh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¨Äubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjÊÄh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÇÄubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÌÄŒmodname”NŒ classname”Njj )�”}”j ]”jtÄŒc.end_creating_path”†”asbuh1hhj¨Äubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèÄh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¨Äubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjöÄh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¨ÄubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¨Äubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÄubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÞÃh²hh³jðÃh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÚÃh²hh³jðÃh´Mubah}”(h]”jÕÃah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jðÃh´Mhj×Ãh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ6finish a code section started by start_creating_path()”h]”hŒ6finish a code section started by start_creating_path()”…”�”}”(hj-Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mhj*Åh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj×Ãh²hh³jðÃh´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jEÅjšjEÅj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXó**Parameters** ``const struct path *path`` the path instantiated by start_creating_path() ``struct dentry *dentry`` the dentry returned by start_creating_path() **Description** end_creating_path() will unlock and locks taken by start_creating_path() and drop an references that were taken. It should only be called if start_creating_path() returned a non-error. If vfs_mkdir() was called and it returned an error, that error *should* be passed to end_creating_path() together with the path.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjOÅh]”hŒ Parameters”…”�”}”(hjQÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjMÅubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MhjIÅubj¿)�”}”(hhh]”(jÄ)�”}”(hŒK``const struct path *path`` the path instantiated by start_creating_path() ”h]”(jÊ)�”}”(hŒ``const struct path *path``”h]”jÐ)�”}”(hjnÅh]”hŒconst struct path *path”…”�”}”(hjpÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjlÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MhjhÅubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.the path instantiated by start_creating_path()”h]”hŒ.the path instantiated by start_creating_path()”…”�”}”(hj‡Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jƒÅh´Mhj„Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjhÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jƒÅh´MhjeÅubjÄ)�”}”(hŒG``struct dentry *dentry`` the dentry returned by start_creating_path() ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hj§Åh]”hŒstruct dentry *dentry”…”�”}”(hj©Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¥Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mhj¡Åubjæ)�”}”(hhh]”hÌ)�”}”(hŒ,the dentry returned by start_creating_path()”h]”hŒ,the dentry returned by start_creating_path()”…”�”}”(hjÀÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¼Åh´Mhj½Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¡Åubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¼Åh´MhjeÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjIÅubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjâÅh]”hŒ Description”…”�”}”(hjäÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjàÅubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MhjIÅubhÌ)�”}”(hX:end_creating_path() will unlock and locks taken by start_creating_path() and drop an references that were taken. It should only be called if start_creating_path() returned a non-error. If vfs_mkdir() was called and it returned an error, that error *should* be passed to end_creating_path() together with the path.”h]”(hŒùend_creating_path() will unlock and locks taken by start_creating_path() and drop an references that were taken. It should only be called if start_creating_path() returned a non-error. If vfs_mkdir() was called and it returned an error, that error ”…”�”}”(hjøÅh²hh³Nh´Nubj )�”}”(hŒ*should*”h]”hŒshould”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~ hjøÅubhŒ9 be passed to end_creating_path() together with the path.”…”�”}”(hjøÅh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MhjIÅubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdentry_create (C function)”Œc.dentry_create”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒastruct file * dentry_create (struct path *path, int flags, umode_t mode, const struct cred *cred)”h]”j)�”}”(hŒ_struct file *dentry_create(struct path *path, int flags, umode_t mode, const struct cred *cred)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj9Æh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj5Æh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M,ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGÆh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj5Æh²hh³jFÆh´M,ubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjXÆh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjUÆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jZÆŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒ dentry_create”sbŒc.dentry_create”†”asbuh1hhj5Æh²hh³jFÆh´M,ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyÆh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj5Æh²hh³jFÆh´M,ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj‡Æh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj5Æh²hh³jFÆh´M,ubjC)�”}”(hŒ dentry_create”h]”jI)�”}”(hjvÆh]”hŒ dentry_create”…”�”}”(hj˜Æh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj”Æubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj5Æh²hh³jFÆh´M,ubj=)�”}”(hŒE(struct path *path, int flags, umode_t mode, const struct cred *cred)”h]”(jC)�”}”(hŒstruct path *path”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj³Æh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¯Æubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀÆh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¯Æubh)�”}”(hhh]”jI)�”}”(hŒpath”h]”hŒpath”…”�”}”(hjÑÆh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÎÆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÓÆŒmodname”NŒ classname”Njj )�”}”j ]”jtÆŒc.dentry_create”†”asbuh1hhj¯Æubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïÆh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¯Æubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjýÆh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¯ÆubjI)�”}”(hŒpath”h]”hŒpath”…”�”}”(hj Çh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¯Æubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj«ÆubjC)�”}”(hŒ int flags”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj#Çh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÇubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1Çh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÇubjI)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj?Çh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÇubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj«ÆubjC)�”}”(hŒ umode_t mode”h]”(h)�”}”(hhh]”jI)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hj[Çh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjXÇubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j]ÇŒmodname”NŒ classname”Njj )�”}”j ]”jtÆŒc.dentry_create”†”asbuh1hhjTÇubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyÇh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjTÇubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj‡Çh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjTÇubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj«ÆubjC)�”}”(hŒconst struct cred *cred”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj Çh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjœÇubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­Çh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjœÇubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj»Çh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjœÇubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈÇh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjœÇubh)�”}”(hhh]”jI)�”}”(hŒcred”h]”hŒcred”…”�”}”(hjÙÇh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÖÇubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÛÇŒmodname”NŒ classname”Njj )�”}”j ]”jtÆŒc.dentry_create”†”asbuh1hhjœÇubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷Çh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjœÇubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjœÇubjI)�”}”(hŒcred”h]”hŒcred”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjœÇubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj«Æubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj5Æh²hh³jFÆh´M,ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj1Æh²hh³jFÆh´M,ubah}”(h]”j,Æah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jFÆh´M,hj.Æh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒCreate and open a file”h]”hŒCreate and open a file”…”�”}”(hj<Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M,hj9Èh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj.Æh²hh³jFÆh´M,ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jTÈjšjTÈj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXI**Parameters** ``struct path *path`` path to create ``int flags`` O\_ flags ``umode_t mode`` mode bits for new file ``const struct cred *cred`` credentials to use **Description** Caller must hold the parent directory's lock, and have prepared a negative dentry, placed in **path->dentry**, for the new file. Caller sets **path->mnt** to the vfsmount of the filesystem where the new file is to be created. The parent directory and the negative dentry must reside on the same filesystem instance. On success, returns a ``struct file *``. Otherwise an ERR_PTR is returned.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj^Èh]”hŒ Parameters”…”�”}”(hj`Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj\Èubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M0hjXÈubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ%``struct path *path`` path to create ”h]”(jÊ)�”}”(hŒ``struct path *path``”h]”jÐ)�”}”(hj}Èh]”hŒstruct path *path”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj{Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M-hjwÈubjæ)�”}”(hhh]”hÌ)�”}”(hŒpath to create”h]”hŒpath to create”…”�”}”(hj–Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j’Èh´M-hj“Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjwÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j’Èh´M-hjtÈubjÄ)�”}”(hŒ``int flags`` O\_ flags ”h]”(jÊ)�”}”(hŒ ``int flags``”h]”jÐ)�”}”(hj¶Èh]”hŒ int flags”…”�”}”(hj¸Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj´Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M.hj°Èubjæ)�”}”(hhh]”hÌ)�”}”(hŒ O\_ flags”h]”hŒ O_ flags”…”�”}”(hjÏÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jËÈh´M.hjÌÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj°Èubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jËÈh´M.hjtÈubjÄ)�”}”(hŒ(``umode_t mode`` mode bits for new file ”h]”(jÊ)�”}”(hŒ``umode_t mode``”h]”jÐ)�”}”(hjïÈh]”hŒ umode_t mode”…”�”}”(hjñÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjíÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M/hjéÈubjæ)�”}”(hhh]”hÌ)�”}”(hŒmode bits for new file”h]”hŒmode bits for new file”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÉh´M/hjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjéÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÉh´M/hjtÈubjÄ)�”}”(hŒ/``const struct cred *cred`` credentials to use ”h]”(jÊ)�”}”(hŒ``const struct cred *cred``”h]”jÐ)�”}”(hj(Éh]”hŒconst struct cred *cred”…”�”}”(hj*Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj&Éubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M0hj"Éubjæ)�”}”(hhh]”hÌ)�”}”(hŒcredentials to use”h]”hŒcredentials to use”…”�”}”(hjAÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j=Éh´M0hj>Éubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj"Éubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j=Éh´M0hjtÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjXÈubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjcÉh]”hŒ Description”…”�”}”(hjeÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjaÉubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M2hjXÈubhÌ)�”}”(hŒ€Caller must hold the parent directory's lock, and have prepared a negative dentry, placed in **path->dentry**, for the new file.”h]”(hŒ_Caller must hold the parent directory’s lock, and have prepared a negative dentry, placed in ”…”�”}”(hjyÉh²hh³Nh´Nubj©)�”}”(hŒ**path->dentry**”h]”hŒ path->dentry”…”�”}”(hj�Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjyÉubhŒ, for the new file.”…”�”}”(hjyÉh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M1hjXÈubhÌ)�”}”(hŒºCaller sets **path->mnt** to the vfsmount of the filesystem where the new file is to be created. The parent directory and the negative dentry must reside on the same filesystem instance.”h]”(hŒ Caller sets ”…”�”}”(hjšÉh²hh³Nh´Nubj©)�”}”(hŒ **path->mnt**”h]”hŒ path->mnt”…”�”}”(hj¢Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjšÉubhŒ¡ to the vfsmount of the filesystem where the new file is to be created. The parent directory and the negative dentry must reside on the same filesystem instance.”…”�”}”(hjšÉh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M4hjXÈubhÌ)�”}”(hŒJOn success, returns a ``struct file *``. Otherwise an ERR_PTR is returned.”h]”(hŒOn success, returns a ”…”�”}”(hj»Éh²hh³Nh´NubjÐ)�”}”(hŒ``struct file *``”h]”hŒ struct file *”…”�”}”(hjÃÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj»ÉubhŒ#. Otherwise an ERR_PTR is returned.”…”�”}”(hj»Éh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M8hjXÈubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_mknod (C function)”Œ c.vfs_mknod”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ™int vfs_mknod (const struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, umode_t mode, dev_t dev, struct delegated_inode *delegated_inode)”h]”j)�”}”(hŒ˜int vfs_mknod(const struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, umode_t mode, dev_t dev, struct delegated_inode *delegated_inode)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjüÉh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjøÉh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Myubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Êh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjøÉh²hh³j Êh´MyubjC)�”}”(hŒ vfs_mknod”h]”jI)�”}”(hŒ vfs_mknod”h]”hŒ vfs_mknod”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÊubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjøÉh²hh³j Êh´Myubj=)�”}”(hŒ‹(const struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, umode_t mode, dev_t dev, struct delegated_inode *delegated_inode)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj9Êh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj5Êubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFÊh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj5Êubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjTÊh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj5Êubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaÊh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj5Êubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hjrÊh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjoÊubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jtÊŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÊsbŒ c.vfs_mknod”†”asbuh1hhj5Êubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’Êh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj5Êubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj Êh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj5ÊubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hj­Êh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj5Êubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj1ÊubjC)�”}”(hŒstruct inode *dir”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÆÊh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÂÊubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓÊh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÂÊubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjäÊh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjáÊubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jæÊŒmodname”NŒ classname”Njj )�”}”j ]”jŽÊŒ c.vfs_mknod”†”asbuh1hhjÂÊubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÂÊubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÂÊubjI)�”}”(hŒdir”h]”hŒdir”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÂÊubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj1ÊubjC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj6Ëh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj2Ëubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCËh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj2Ëubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjTËh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjQËubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jVËŒmodname”NŒ classname”Njj )�”}”j ]”jŽÊŒ c.vfs_mknod”†”asbuh1hhj2Ëubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrËh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj2Ëubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj€Ëh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj2ËubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj�Ëh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj2Ëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj1ÊubjC)�”}”(hŒ umode_t mode”h]”(h)�”}”(hhh]”jI)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hj©Ëh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¦Ëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j«ËŒmodname”NŒ classname”Njj )�”}”j ]”jŽÊŒ c.vfs_mknod”†”asbuh1hhj¢Ëubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇËh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¢ËubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hjÕËh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¢Ëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj1ÊubjC)�”}”(hŒ dev_t dev”h]”(h)�”}”(hhh]”jI)�”}”(hŒdev_t”h]”hŒdev_t”…”�”}”(hjñËh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjîËubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jóËŒmodname”NŒ classname”Njj )�”}”j ]”jŽÊŒ c.vfs_mknod”†”asbuh1hhjêËubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjêËubjI)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjêËubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj1ÊubjC)�”}”(hŒ'struct delegated_inode *delegated_inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj6Ìh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj2Ìubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCÌh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj2Ìubh)�”}”(hhh]”jI)�”}”(hŒdelegated_inode”h]”hŒdelegated_inode”…”�”}”(hjTÌh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjQÌubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jVÌŒmodname”NŒ classname”Njj )�”}”j ]”jŽÊŒ c.vfs_mknod”†”asbuh1hhj2Ìubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrÌh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj2Ìubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj€Ìh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj2ÌubjI)�”}”(hŒdelegated_inode”h]”hŒdelegated_inode”…”�”}”(hj�Ìh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj2Ìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj1Êubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjøÉh²hh³j Êh´Myubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjôÉh²hh³j Êh´Myubah}”(h]”jïÉah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j Êh´MyhjñÉh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒcreate device node or file”h]”hŒcreate device node or file”…”�”}”(hj·Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Myhj´Ìh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjñÉh²hh³j Êh´Myubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÏÌjšjÏÌj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ``struct inode *dir`` inode of the parent directory ``struct dentry *dentry`` dentry of the child device node ``umode_t mode`` mode of the child device node ``dev_t dev`` device number of device to create ``struct delegated_inode *delegated_inode`` returns parent inode, if the inode is delegated. **Description** Create a device node or file. If the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through **idmap**. This function will then take care to map the inode according to **idmap** before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass **nop_mnt_idmap**.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÙÌh]”hŒ Parameters”…”�”}”(hjÛÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj×Ìubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M}hjÓÌubj¿)�”}”(hhh]”(jÄ)�”}”(hŒN``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjøÌh]”hŒconst struct mnt_idmap *idmap”…”�”}”(hjúÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjöÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MzhjòÌubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+idmap of the mount the inode was found from”h]”hŒ+idmap of the mount the inode was found from”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j Íh´MzhjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjòÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j Íh´MzhjïÌubjÄ)�”}”(hŒ4``struct inode *dir`` inode of the parent directory ”h]”(jÊ)�”}”(hŒ``struct inode *dir``”h]”jÐ)�”}”(hj1Íh]”hŒstruct inode *dir”…”�”}”(hj3Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj/Íubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M{hj+Íubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode of the parent directory”h]”hŒinode of the parent directory”…”�”}”(hjJÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jFÍh´M{hjGÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj+Íubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jFÍh´M{hjïÌubjÄ)�”}”(hŒ:``struct dentry *dentry`` dentry of the child device node ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hjjÍh]”hŒstruct dentry *dentry”…”�”}”(hjlÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjhÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M|hjdÍubjæ)�”}”(hhh]”hÌ)�”}”(hŒdentry of the child device node”h]”hŒdentry of the child device node”…”�”}”(hjƒÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÍh´M|hj€Íubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjdÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÍh´M|hjïÌubjÄ)�”}”(hŒ/``umode_t mode`` mode of the child device node ”h]”(jÊ)�”}”(hŒ``umode_t mode``”h]”jÐ)�”}”(hj£Íh]”hŒ umode_t mode”…”�”}”(hj¥Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¡Íubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M}hj�Íubjæ)�”}”(hhh]”hÌ)�”}”(hŒmode of the child device node”h]”hŒmode of the child device node”…”�”}”(hj¼Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¸Íh´M}hj¹Íubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj�Íubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¸Íh´M}hjïÌubjÄ)�”}”(hŒ0``dev_t dev`` device number of device to create ”h]”(jÊ)�”}”(hŒ ``dev_t dev``”h]”jÐ)�”}”(hjÜÍh]”hŒ dev_t dev”…”�”}”(hjÞÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÚÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M~hjÖÍubjæ)�”}”(hhh]”hÌ)�”}”(hŒ!device number of device to create”h]”hŒ!device number of device to create”…”�”}”(hjõÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jñÍh´M~hjòÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÖÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jñÍh´M~hjïÌubjÄ)�”}”(hŒ]``struct delegated_inode *delegated_inode`` returns parent inode, if the inode is delegated. ”h]”(jÊ)�”}”(hŒ+``struct delegated_inode *delegated_inode``”h]”jÐ)�”}”(hjÎh]”hŒ'struct delegated_inode *delegated_inode”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MhjÎubjæ)�”}”(hhh]”hÌ)�”}”(hŒ0returns parent inode, if the inode is delegated.”h]”hŒ0returns parent inode, if the inode is delegated.”…”�”}”(hj.Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j*Îh´Mhj+Îubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j*Îh´MhjïÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÓÌubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjPÎh]”hŒ Description”…”�”}”(hjRÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjNÎubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M�hjÓÌubhÌ)�”}”(hŒCreate a device node or file.”h]”hŒCreate a device node or file.”…”�”}”(hjfÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M€hjÓÌubhÌ)�”}”(hXLIf the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through **idmap**. This function will then take care to map the inode according to **idmap** before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass **nop_mnt_idmap**.”h]”(hŒgIf the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through ”…”�”}”(hjuÎh²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hj}Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjuÎubhŒB. This function will then take care to map the inode according to ”…”�”}”(hjuÎh²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hj�Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjuÎubhŒ before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass ”…”�”}”(hjuÎh²hh³Nh´Nubj©)�”}”(hŒ**nop_mnt_idmap**”h]”hŒ nop_mnt_idmap”…”�”}”(hj¡Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjuÎubhŒ.”…”�”}”(hjuÎh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M‚hjÓÌubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_mkdir (C function)”Œ c.vfs_mkdir”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒšstruct dentry * vfs_mkdir (const struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, umode_t mode, struct delegated_inode *delegated_inode)”h]”j)�”}”(hŒ˜struct dentry *vfs_mkdir(const struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, umode_t mode, struct delegated_inode *delegated_inode)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÚÎh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÖÎh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèÎh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÖÎh²hh³jçÎh´Mubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjùÎh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjöÎubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jûÎŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒ vfs_mkdir”sbŒ c.vfs_mkdir”†”asbuh1hhjÖÎh²hh³jçÎh´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÖÎh²hh³jçÎh´Mubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj(Ïh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÖÎh²hh³jçÎh´MubjC)�”}”(hŒ vfs_mkdir”h]”jI)�”}”(hjÏh]”hŒ vfs_mkdir”…”�”}”(hj9Ïh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj5Ïubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÖÎh²hh³jçÎh´Mubj=)�”}”(hŒ€(const struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, umode_t mode, struct delegated_inode *delegated_inode)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjTÏh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjPÏubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaÏh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjPÏubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjoÏh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjPÏubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|Ïh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjPÏubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hj�Ïh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŠÏubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j�ÏŒmodname”NŒ classname”Njj )�”}”j ]”jÏŒ c.vfs_mkdir”†”asbuh1hhjPÏubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«Ïh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjPÏubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¹Ïh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjPÏubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hjÆÏh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjPÏubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjLÏubjC)�”}”(hŒstruct inode *dir”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjßÏh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÛÏubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìÏh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÛÏubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjýÏh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjúÏubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÿÏŒmodname”NŒ classname”Njj )�”}”j ]”jÏŒ c.vfs_mkdir”†”asbuh1hhjÛÏubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÛÏubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj)Ðh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÛÏubjI)�”}”(hŒdir”h]”hŒdir”…”�”}”(hj6Ðh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÛÏubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjLÏubjC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjOÐh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjKÐubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\Ðh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjKÐubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjmÐh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjjÐubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”joÐŒmodname”NŒ classname”Njj )�”}”j ]”jÏŒ c.vfs_mkdir”†”asbuh1hhjKÐubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹Ðh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjKÐubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj™Ðh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjKÐubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj¦Ðh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjKÐubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjLÏubjC)�”}”(hŒ umode_t mode”h]”(h)�”}”(hhh]”jI)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hjÂÐh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¿Ðubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÄÐŒmodname”NŒ classname”Njj )�”}”j ]”jÏŒ c.vfs_mkdir”†”asbuh1hhj»Ðubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàÐh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj»ÐubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hjîÐh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj»Ðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjLÏubjC)�”}”(hŒ'struct delegated_inode *delegated_inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÑubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÑubh)�”}”(hhh]”jI)�”}”(hŒdelegated_inode”h]”hŒdelegated_inode”…”�”}”(hj%Ñh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj"Ñubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j'ÑŒmodname”NŒ classname”Njj )�”}”j ]”jÏŒ c.vfs_mkdir”†”asbuh1hhjÑubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCÑh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÑubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjQÑh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÑubjI)�”}”(hŒdelegated_inode”h]”hŒdelegated_inode”…”�”}”(hj^Ñh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÑubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjLÏubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÖÎh²hh³jçÎh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÒÎh²hh³jçÎh´Mubah}”(h]”jÍÎah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jçÎh´MhjÏÎh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ5create directory returning correct dentry if possible”h]”hŒ5create directory returning correct dentry if possible”…”�”}”(hjˆÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mhj…Ñh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÏÎh²hh³jçÎh´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j Ñjšj Ñj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXò**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ``struct inode *dir`` inode of the parent directory ``struct dentry *dentry`` dentry of the child directory ``umode_t mode`` mode of the child directory ``struct delegated_inode *delegated_inode`` returns parent inode, if the inode is delegated. **Description** Create a directory. If the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through **idmap**. This function will then take care to map the inode according to **idmap** before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass **nop_mnt_idmap**. In the event that the filesystem does not use the ***dentry** but leaves it negative or unhashes it and possibly splices a different one returning it, the original dentry is dput() and the alternate is returned. In case of an error the dentry is dput() and an ERR_PTR() is returned.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjªÑh]”hŒ Parameters”…”�”}”(hj¬Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¨Ñubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mhj¤Ñubj¿)�”}”(hhh]”(jÄ)�”}”(hŒN``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjÉÑh]”hŒconst struct mnt_idmap *idmap”…”�”}”(hjËÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÇÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MhjÃÑubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+idmap of the mount the inode was found from”h]”hŒ+idmap of the mount the inode was found from”…”�”}”(hjâÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÞÑh´MhjßÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÃÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÞÑh´MhjÀÑubjÄ)�”}”(hŒ4``struct inode *dir`` inode of the parent directory ”h]”(jÊ)�”}”(hŒ``struct inode *dir``”h]”jÐ)�”}”(hjÒh]”hŒstruct inode *dir”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MhjüÑubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode of the parent directory”h]”hŒinode of the parent directory”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÒh´MhjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjüÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÒh´MhjÀÑubjÄ)�”}”(hŒ8``struct dentry *dentry`` dentry of the child directory ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hj;Òh]”hŒstruct dentry *dentry”…”�”}”(hj=Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj9Òubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mhj5Òubjæ)�”}”(hhh]”hÌ)�”}”(hŒdentry of the child directory”h]”hŒdentry of the child directory”…”�”}”(hjTÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jPÒh´MhjQÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj5Òubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jPÒh´MhjÀÑubjÄ)�”}”(hŒ-``umode_t mode`` mode of the child directory ”h]”(jÊ)�”}”(hŒ``umode_t mode``”h]”jÐ)�”}”(hjtÒh]”hŒ umode_t mode”…”�”}”(hjvÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjrÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MhjnÒubjæ)�”}”(hhh]”hÌ)�”}”(hŒmode of the child directory”h]”hŒmode of the child directory”…”�”}”(hj�Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‰Òh´MhjŠÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjnÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‰Òh´MhjÀÑubjÄ)�”}”(hŒ]``struct delegated_inode *delegated_inode`` returns parent inode, if the inode is delegated. ”h]”(jÊ)�”}”(hŒ+``struct delegated_inode *delegated_inode``”h]”jÐ)�”}”(hj­Òh]”hŒ'struct delegated_inode *delegated_inode”…”�”}”(hj¯Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj«Òubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mhj§Òubjæ)�”}”(hhh]”hÌ)�”}”(hŒ0returns parent inode, if the inode is delegated.”h]”hŒ0returns parent inode, if the inode is delegated.”…”�”}”(hjÆÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÂÒh´MhjÃÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj§Òubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÂÒh´MhjÀÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj¤ÑubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjèÒh]”hŒ Description”…”�”}”(hjêÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjæÒubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M hj¤ÑubhÌ)�”}”(hŒCreate a directory.”h]”hŒCreate a directory.”…”�”}”(hjþÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mhj¤ÑubhÌ)�”}”(hXLIf the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through **idmap**. This function will then take care to map the inode according to **idmap** before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass **nop_mnt_idmap**.”h]”(hŒgIf the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through ”…”�”}”(hj Óh²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj ÓubhŒB. This function will then take care to map the inode according to ”…”�”}”(hj Óh²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hj'Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj ÓubhŒ before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass ”…”�”}”(hj Óh²hh³Nh´Nubj©)�”}”(hŒ**nop_mnt_idmap**”h]”hŒ nop_mnt_idmap”…”�”}”(hj9Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj ÓubhŒ.”…”�”}”(hj Óh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M hj¤ÑubhÌ)�”}”(hŒÓIn the event that the filesystem does not use the ***dentry** but leaves it negative or unhashes it and possibly splices a different one returning it, the original dentry is dput() and the alternate is returned.”h]”(hŒ2In the event that the filesystem does not use the ”…”�”}”(hjRÓh²hh³Nh´Nubj©)�”}”(hŒ ***dentry**”h]”hŒ*dentry”…”�”}”(hjZÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjRÓubhŒ– but leaves it negative or unhashes it and possibly splices a different one returning it, the original dentry is dput() and the alternate is returned.”…”�”}”(hjRÓh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mhj¤ÑubhÌ)�”}”(hŒFIn case of an error the dentry is dput() and an ERR_PTR() is returned.”h]”hŒFIn case of an error the dentry is dput() and an ERR_PTR() is returned.”…”�”}”(hjsÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mhj¤Ñubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_rmdir (C function)”Œ c.vfs_rmdir”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ€int vfs_rmdir (const struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, struct delegated_inode *delegated_inode)”h]”j)�”}”(hŒint vfs_rmdir(const struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, struct delegated_inode *delegated_inode)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj¢Óh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjžÓh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mtubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±Óh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjžÓh²hh³j°Óh´MtubjC)�”}”(hŒ vfs_rmdir”h]”jI)�”}”(hŒ vfs_rmdir”h]”hŒ vfs_rmdir”…”�”}”(hjÃÓh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¿Óubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjžÓh²hh³j°Óh´Mtubj=)�”}”(hŒr(const struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, struct delegated_inode *delegated_inode)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjßÓh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÛÓubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìÓh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÛÓubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjúÓh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÛÓubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÛÓubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÔubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÔŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÅÓsbŒ c.vfs_rmdir”†”asbuh1hhjÛÓubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8Ôh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÛÓubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjFÔh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÛÓubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hjSÔh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÛÓubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj×ÓubjC)�”}”(hŒstruct inode *dir”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjlÔh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjhÔubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyÔh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjhÔubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjŠÔh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‡Ôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jŒÔŒmodname”NŒ classname”Njj )�”}”j ]”j4ÔŒ c.vfs_rmdir”†”asbuh1hhjhÔubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨Ôh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjhÔubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¶Ôh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjhÔubjI)�”}”(hŒdir”h]”hŒdir”…”�”}”(hjÃÔh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjhÔubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj×ÓubjC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÜÔh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjØÔubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéÔh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjØÔubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjúÔh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj÷Ôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jüÔŒmodname”NŒ classname”Njj )�”}”j ]”j4ÔŒ c.vfs_rmdir”†”asbuh1hhjØÔubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjØÔubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj&Õh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjØÔubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj3Õh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjØÔubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj×ÓubjC)�”}”(hŒ'struct delegated_inode *delegated_inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjLÕh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjHÕubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYÕh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjHÕubh)�”}”(hhh]”jI)�”}”(hŒdelegated_inode”h]”hŒdelegated_inode”…”�”}”(hjjÕh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjgÕubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jlÕŒmodname”NŒ classname”Njj )�”}”j ]”j4ÔŒ c.vfs_rmdir”†”asbuh1hhjHÕubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆÕh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjHÕubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj–Õh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjHÕubjI)�”}”(hŒdelegated_inode”h]”hŒdelegated_inode”…”�”}”(hj£Õh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjHÕubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj×Óubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjžÓh²hh³j°Óh´Mtubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjšÓh²hh³j°Óh´Mtubah}”(h]”j•Óah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j°Óh´Mthj—Óh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒremove directory”h]”hŒremove directory”…”�”}”(hjÍÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MthjÊÕh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj—Óh²hh³j°Óh´Mtubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jåÕjšjåÕj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX�**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ``struct inode *dir`` inode of the parent directory ``struct dentry *dentry`` dentry of the child directory ``struct delegated_inode *delegated_inode`` returns parent inode, if it's delegated. **Description** Remove a directory. If the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through **idmap**. This function will then take care to map the inode according to **idmap** before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass **nop_mnt_idmap**.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjïÕh]”hŒ Parameters”…”�”}”(hjñÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjíÕubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MxhjéÕubj¿)�”}”(hhh]”(jÄ)�”}”(hŒN``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjÖh]”hŒconst struct mnt_idmap *idmap”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj Öubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MuhjÖubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+idmap of the mount the inode was found from”h]”hŒ+idmap of the mount the inode was found from”…”�”}”(hj'Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j#Öh´Muhj$Öubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j#Öh´MuhjÖubjÄ)�”}”(hŒ4``struct inode *dir`` inode of the parent directory ”h]”(jÊ)�”}”(hŒ``struct inode *dir``”h]”jÐ)�”}”(hjGÖh]”hŒstruct inode *dir”…”�”}”(hjIÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjEÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MvhjAÖubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode of the parent directory”h]”hŒinode of the parent directory”…”�”}”(hj`Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j\Öh´Mvhj]Öubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjAÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j\Öh´MvhjÖubjÄ)�”}”(hŒ8``struct dentry *dentry`` dentry of the child directory ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hj€Öh]”hŒstruct dentry *dentry”…”�”}”(hj‚Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj~Öubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MwhjzÖubjæ)�”}”(hhh]”hÌ)�”}”(hŒdentry of the child directory”h]”hŒdentry of the child directory”…”�”}”(hj™Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j•Öh´Mwhj–Öubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjzÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j•Öh´MwhjÖubjÄ)�”}”(hŒU``struct delegated_inode *delegated_inode`` returns parent inode, if it's delegated. ”h]”(jÊ)�”}”(hŒ+``struct delegated_inode *delegated_inode``”h]”jÐ)�”}”(hj¹Öh]”hŒ'struct delegated_inode *delegated_inode”…”�”}”(hj»Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj·Öubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mxhj³Öubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(returns parent inode, if it's delegated.”h]”hŒ*returns parent inode, if it’s delegated.”…”�”}”(hjÒÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÎÖh´MxhjÏÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj³Öubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÎÖh´MxhjÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjéÕubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjôÖh]”hŒ Description”…”�”}”(hjöÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjòÖubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MzhjéÕubhÌ)�”}”(hŒRemove a directory.”h]”hŒRemove a directory.”…”�”}”(hj ×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MyhjéÕubhÌ)�”}”(hXLIf the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through **idmap**. This function will then take care to map the inode according to **idmap** before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass **nop_mnt_idmap**.”h]”(hŒgIf the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through ”…”�”}”(hj×h²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hj!×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj×ubhŒB. This function will then take care to map the inode according to ”…”�”}”(hj×h²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hj3×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj×ubhŒ before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass ”…”�”•}”(hj×h²hh³Nh´Nubj©)�”}”(hŒ**nop_mnt_idmap**”h]”hŒ nop_mnt_idmap”…”�”}”(hjE×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj×ubhŒ.”…”�”}”(hj×h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M{hjéÕubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_unlink (C function)”Œ c.vfs_unlink”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ�int vfs_unlink (const struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, struct delegated_inode *delegated_inode)”h]”j)�”}”(hŒ€int vfs_unlink(const struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, struct delegated_inode *delegated_inode)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj~×h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjz×h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mñubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�×h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjz×h²hh³jŒ×h´MñubjC)�”}”(hŒ vfs_unlink”h]”jI)�”}”(hŒ vfs_unlink”h]”hŒ vfs_unlink”…”�”}”(hjŸ×h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj›×ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjz×h²hh³jŒ×h´Mñubj=)�”}”(hŒr(const struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, struct delegated_inode *delegated_inode)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj»×h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj·×ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈ×h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj·×ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÖ×h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj·×ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjã×h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj·×ubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hjô×h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjñ×ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jö׌modname”NŒ classname”Njj )�”}”j ]”j)�”}”jj¡×sbŒ c.vfs_unlink”†”asbuh1hhj·×ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj·×ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj"Øh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj·×ubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hj/Øh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj·×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj³×ubjC)�”}”(hŒstruct inode *dir”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjHØh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjDØubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUØh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjDØubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjfØh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjcØubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jhØŒmodname”NŒ classname”Njj )�”}”j ]”jØŒ c.vfs_unlink”†”asbuh1hhjDØubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„Øh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjDØubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj’Øh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjDØubjI)�”}”(hŒdir”h]”hŒdir”…”�”}”(hjŸØh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjDØubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj³×ubjC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¸Øh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj´Øubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅØh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj´Øubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjÖØh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÓØubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jØØŒmodname”NŒ classname”Njj )�”}”j ]”jØŒ c.vfs_unlink”†”asbuh1hhj´Øubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôØh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj´Øubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj´ØubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj´Øubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj³×ubjC)�”}”(hŒ'struct delegated_inode *delegated_inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj(Ùh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj$Ùubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5Ùh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj$Ùubh)�”}”(hhh]”jI)�”}”(hŒdelegated_inode”h]”hŒdelegated_inode”…”�”}”(hjFÙh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjCÙubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jHÙŒmodname”NŒ classname”Njj )�”}”j ]”jØŒ c.vfs_unlink”†”asbuh1hhj$Ùubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdÙh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj$Ùubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjrÙh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj$ÙubjI)�”}”(hŒdelegated_inode”h]”hŒdelegated_inode”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj$Ùubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj³×ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjz×h²hh³jŒ×h´Mñubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjv×h²hh³jŒ×h´Mñubah}”(h]”jq×ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jŒ×h´Mñhjs×h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒunlink a filesystem object”h]”hŒunlink a filesystem object”…”�”}”(hj©Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mñhj¦Ùh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjs×h²hh³jŒ×h´Mñubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÁÙjšjÁÙj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXf**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ``struct inode *dir`` parent directory ``struct dentry *dentry`` victim ``struct delegated_inode *delegated_inode`` returns victim inode, if the inode is delegated. **Description** The caller must hold dir->i_rwsem exclusively. If vfs_unlink discovers a delegation, it will return -EWOULDBLOCK and return a reference to the inode in delegated_inode. The caller should then break the delegation on that inode and retry. Because breaking a delegation may take a long time, the caller should drop dir->i_rwsem before doing so. Alternatively, a caller may pass NULL for delegated_inode. This may be appropriate for callers that expect the underlying filesystem not to be NFS exported. If the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through **idmap**. This function will then take care to map the inode according to **idmap** before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass **nop_mnt_idmap**.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjËÙh]”hŒ Parameters”…”�”}”(hjÍÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÉÙubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MõhjÅÙubj¿)�”}”(hhh]”(jÄ)�”}”(hŒN``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjêÙh]”hŒconst struct mnt_idmap *idmap”…”�”}”(hjìÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjèÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MòhjäÙubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+idmap of the mount the inode was found from”h]”hŒ+idmap of the mount the inode was found from”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÿÙh´MòhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjäÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÿÙh´MòhjáÙubjÄ)�”}”(hŒ'``struct inode *dir`` parent directory ”h]”(jÊ)�”}”(hŒ``struct inode *dir``”h]”jÐ)�”}”(hj#Úh]”hŒstruct inode *dir”…”�”}”(hj%Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj!Úubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MóhjÚubjæ)�”}”(hhh]”hÌ)�”}”(hŒparent directory”h]”hŒparent directory”…”�”}”(hj<Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j8Úh´Móhj9Úubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j8Úh´MóhjáÙubjÄ)�”}”(hŒ!``struct dentry *dentry`` victim ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hj\Úh]”hŒstruct dentry *dentry”…”�”}”(hj^Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjZÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MôhjVÚubjæ)�”}”(hhh]”hÌ)�”}”(hŒvictim”h]”hŒvictim”…”�”}”(hjuÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jqÚh´MôhjrÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjVÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jqÚh´MôhjáÙubjÄ)�”}”(hŒ]``struct delegated_inode *delegated_inode`` returns victim inode, if the inode is delegated. ”h]”(jÊ)�”}”(hŒ+``struct delegated_inode *delegated_inode``”h]”jÐ)�”}”(hj•Úh]”hŒ'struct delegated_inode *delegated_inode”…”�”}”(hj—Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj“Úubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mõhj�Úubjæ)�”}”(hhh]”hÌ)�”}”(hŒ0returns victim inode, if the inode is delegated.”h]”hŒ0returns victim inode, if the inode is delegated.”…”�”}”(hj®Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jªÚh´Mõhj«Úubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj�Úubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jªÚh´MõhjáÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÅÙubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÐÚh]”hŒ Description”…”�”}”(hjÒÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÎÚubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M÷hjÅÙubhÌ)�”}”(hŒ.The caller must hold dir->i_rwsem exclusively.”h]”hŒ.The caller must hold dir->i_rwsem exclusively.”…”�”}”(hjæÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MöhjÅÙubhÌ)�”}”(hX)If vfs_unlink discovers a delegation, it will return -EWOULDBLOCK and return a reference to the inode in delegated_inode. The caller should then break the delegation on that inode and retry. Because breaking a delegation may take a long time, the caller should drop dir->i_rwsem before doing so.”h]”hX)If vfs_unlink discovers a delegation, it will return -EWOULDBLOCK and return a reference to the inode in delegated_inode. The caller should then break the delegation on that inode and retry. Because breaking a delegation may take a long time, the caller should drop dir->i_rwsem before doing so.”…”�”}”(hjõÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MøhjÅÙubhÌ)�”}”(hŒ�Alternatively, a caller may pass NULL for delegated_inode. This may be appropriate for callers that expect the underlying filesystem not to be NFS exported.”h]”hŒ�Alternatively, a caller may pass NULL for delegated_inode. This may be appropriate for callers that expect the underlying filesystem not to be NFS exported.”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MþhjÅÙubhÌ)�”}”(hXLIf the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through **idmap**. This function will then take care to map the inode according to **idmap** before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass **nop_mnt_idmap**.”h]”(hŒgIf the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through ”…”�”}”(hjÛh²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÛubhŒB. This function will then take care to map the inode according to ”…”�”}”(hjÛh²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hj-Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÛubhŒ before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass ”…”�”}”(hjÛh²hh³Nh´Nubj©)�”}”(hŒ**nop_mnt_idmap**”h]”hŒ nop_mnt_idmap”…”�”}”(hj?Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÛubhŒ.”…”�”}”(hjÛh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MhjÅÙubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_symlink (C function)”Œ c.vfs_symlink”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ—int vfs_symlink (const struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, const char *oldname, struct delegated_inode *delegated_inode)”h]”j)�”}”(hŒ–int vfs_symlink(const struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, const char *oldname, struct delegated_inode *delegated_inode)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjxÛh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjtÛh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡Ûh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjtÛh²hh³j†Ûh´M�ubjC)�”}”(hŒ vfs_symlink”h]”jI)�”}”(hŒ vfs_symlink”h]”hŒ vfs_symlink”…”�”}”(hj™Ûh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj•Ûubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjtÛh²hh³j†Ûh´M�ubj=)�”}”(hŒ‡(const struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, const char *oldname, struct delegated_inode *delegated_inode)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjµÛh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj±Ûubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂÛh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj±Ûubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÐÛh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj±Ûubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝÛh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj±Ûubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hjîÛh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjëÛubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jðÛŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj›ÛsbŒ c.vfs_symlink”†”asbuh1hhj±Ûubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj±Ûubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj±ÛubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hj)Üh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj±Ûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj­ÛubjC)�”}”(hŒstruct inode *dir”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjBÜh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj>Üubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOÜh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj>Üubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj`Üh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj]Üubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jbÜŒmodname”NŒ classname”Njj )�”}”j ]”j ÜŒ c.vfs_symlink”†”asbuh1hhj>Üubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~Üh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj>Üubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjŒÜh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj>ÜubjI)�”}”(hŒdir”h]”hŒdir”…”�”}”(hj™Üh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj>Üubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj­ÛubjC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj²Üh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj®Üubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿Üh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj®Üubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjÐÜh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÍÜubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÒÜŒmodname”NŒ classname”Njj )�”}”j ]”j ÜŒ c.vfs_symlink”†”asbuh1hhj®Üubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîÜh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj®Üubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjüÜh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj®ÜubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj Ýh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj®Üubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj­ÛubjC)�”}”(hŒconst char *oldname”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj"Ýh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÝubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/Ýh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÝubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj=Ýh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÝubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKÝh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÝubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjYÝh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÝubjI)�”}”(hŒoldname”h]”hŒoldname”…”�”}”(hjfÝh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÝubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj­ÛubjC)�”}”(hŒ'struct delegated_inode *delegated_inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj{Ýubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒÝh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj{Ýubh)�”}”(hhh]”jI)�”}”(hŒdelegated_inode”h]”hŒdelegated_inode”…”�”}”(hj�Ýh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjšÝubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jŸÝŒmodname”NŒ classname”Njj )�”}”j ]”j ÜŒ c.vfs_symlink”†”asbuh1hhj{Ýubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»Ýh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj{Ýubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÉÝh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj{ÝubjI)�”}”(hŒdelegated_inode”h]”hŒdelegated_inode”…”�”}”(hjÖÝh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj{Ýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj­Ûubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjtÛh²hh³j†Ûh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjpÛh²hh³j†Ûh´M�ubah}”(h]”jkÛah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j†Ûh´M�hjmÛh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒcreate symlink”h]”hŒcreate symlink”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M�hjýÝh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjmÛh²hh³j†Ûh´M�ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÞjšjÞj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXÝ**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ``struct inode *dir`` inode of the parent directory ``struct dentry *dentry`` dentry of the child symlink file ``const char *oldname`` name of the file to link to ``struct delegated_inode *delegated_inode`` returns victim inode, if the inode is delegated. **Description** Create a symlink. If the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through **idmap**. This function will then take care to map the inode according to **idmap** before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass **nop_mnt_idmap**.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj"Þh]”hŒ Parameters”…”�”}”(hj$Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj Þubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M”hjÞubj¿)�”}”(hhh]”(jÄ)�”}”(hŒN``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjAÞh]”hŒconst struct mnt_idmap *idmap”…”�”}”(hjCÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj?Þubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M‘hj;Þubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+idmap of the mount the inode was found from”h]”hŒ+idmap of the mount the inode was found from”…”�”}”(hjZÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jVÞh´M‘hjWÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj;Þubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jVÞh´M‘hj8ÞubjÄ)�”}”(hŒ4``struct inode *dir`` inode of the parent directory ”h]”(jÊ)�”}”(hŒ``struct inode *dir``”h]”jÐ)�”}”(hjzÞh]”hŒstruct inode *dir”…”�”}”(hj|Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjxÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M’hjtÞubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode of the parent directory”h]”hŒinode of the parent directory”…”�”}”(hj“Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�Þh´M’hj�Þubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjtÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j�Þh´M’hj8ÞubjÄ)�”}”(hŒ;``struct dentry *dentry`` dentry of the child symlink file ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hj³Þh]”hŒstruct dentry *dentry”…”�”}”(hjµÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj±Þubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M“hj­Þubjæ)�”}”(hhh]”hÌ)�”}”(hŒ dentry of the child symlink file”h]”hŒ dentry of the child symlink file”…”�”}”(hjÌÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÈÞh´M“hjÉÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj­Þubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÈÞh´M“hj8ÞubjÄ)�”}”(hŒ4``const char *oldname`` name of the file to link to ”h]”(jÊ)�”}”(hŒ``const char *oldname``”h]”jÐ)�”}”(hjìÞh]”hŒconst char *oldname”…”�”}”(hjîÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjêÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M”hjæÞubjæ)�”}”(hhh]”hÌ)�”}”(hŒname of the file to link to”h]”hŒname of the file to link to”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jßh´M”hjßubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjæÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jßh´M”hj8ÞubjÄ)�”}”(hŒ]``struct delegated_inode *delegated_inode`` returns victim inode, if the inode is delegated. ”h]”(jÊ)�”}”(hŒ+``struct delegated_inode *delegated_inode``”h]”jÐ)�”}”(hj%ßh]”hŒ'struct delegated_inode *delegated_inode”…”�”}”(hj'ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj#ßubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M•hjßubjæ)�”}”(hhh]”hÌ)�”}”(hŒ0returns victim inode, if the inode is delegated.”h]”hŒ0returns victim inode, if the inode is delegated.”…”�”}”(hj>ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j:ßh´M•hj;ßubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j:ßh´M•hj8Þubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÞubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj`ßh]”hŒ Description”…”�”}”(hjbßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj^ßubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M—hjÞubhÌ)�”}”(hŒCreate a symlink.”h]”hŒCreate a symlink.”…”�”}”(hjvßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M–hjÞubhÌ)�”}”(hXLIf the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through **idmap**. This function will then take care to map the inode according to **idmap** before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass **nop_mnt_idmap**.”h]”(hŒgIf the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through ”…”�”}”(hj…ßh²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hj�ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj…ßubhŒB. This function will then take care to map the inode according to ”…”�”}”(hj…ßh²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hjŸßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj…ßubhŒ before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass ”…”�”}”(hj…ßh²hh³Nh´Nubj©)�”}”(hŒ**nop_mnt_idmap**”h]”hŒ nop_mnt_idmap”…”�”}”(hj±ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj…ßubhŒ.”…”�”}”(hj…ßh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M˜hjÞubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_link (C function)”Œ c.vfs_link”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒžint vfs_link (struct dentry *old_dentry, const struct mnt_idmap *idmap, struct inode *dir, struct dentry *new_dentry, struct delegated_inode *delegated_inode)”h]”j)�”}”(hŒ�int vfs_link(struct dentry *old_dentry, const struct mnt_idmap *idmap, struct inode *dir, struct dentry *new_dentry, struct delegated_inode *delegated_inode)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjêßh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjæßh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mìubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùßh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjæßh²hh³jøßh´MìubjC)�”}”(hŒvfs_link”h]”jI)�”}”(hŒvfs_link”h]”hŒvfs_link”…”�”}”(hj àh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjàubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjæßh²hh³jøßh´Mìubj=)�”}”(hŒ‘(struct dentry *old_dentry, const struct mnt_idmap *idmap, struct inode *dir, struct dentry *new_dentry, struct delegated_inode *delegated_inode)”h]”(jC)�”}”(hŒstruct dentry *old_dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj'àh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj#àubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4àh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj#àubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjEàh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjBàubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jGàŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj àsbŒ c.vfs_link”†”asbuh1hhj#àubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeàh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj#àubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjsàh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj#àubjI)�”}”(hŒ old_dentry”h]”hŒ old_dentry”…”�”}”(hj€àh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj#àubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjàubjC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj™àh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj•àubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦àh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj•àubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj´àh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj•àubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁàh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj•àubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hjÒàh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÏàubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÔàŒmodname”NŒ classname”Njj )�”}”j ]”jaàŒ c.vfs_link”†”asbuh1hhj•àubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðàh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj•àubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjþàh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj•àubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hj áh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj•àubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjàubjC)�”}”(hŒstruct inode *dir”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj$áh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj áubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1áh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj áubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjBáh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj?áubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jDáŒmodname”NŒ classname”Njj )�”}”j ]”jaàŒ c.vfs_link”†”asbuh1hhj áubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`áh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj áubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjnáh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj áubjI)�”}”(hŒdir”h]”hŒdir”…”�”}”(hj{áh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj áubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjàubjC)�”}”(hŒstruct dentry *new_dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj”áh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj�áubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡áh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�áubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj²áh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¯áubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j´áŒmodname”NŒ classname”Njj )�”}”j ]”jaàŒ c.vfs_link”†”asbuh1hhj�áubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐáh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�áubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÞáh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj�áubjI)�”}”(hŒ new_dentry”h]”hŒ new_dentry”…”�”}”(hjëáh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�áubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjàubjC)�”}”(hŒ'struct delegated_inode *delegated_inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjâubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjâubh)�”}”(hhh]”jI)�”}”(hŒdelegated_inode”h]”hŒdelegated_inode”…”�”}”(hj"âh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjâubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j$âŒmodname”NŒ classname”Njj )�”}”j ]”jaàŒ c.vfs_link”†”asbuh1hhjâubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@âh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjâubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjNâh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjâubjI)�”}”(hŒdelegated_inode”h]”hŒdelegated_inode”…”�”}”(hj[âh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjâubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjàubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjæßh²hh³jøßh´Mìubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjâßh²hh³jøßh´Mìubah}”(h]”jÝßah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jøßh´Mìhjßßh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒcreate a new link”h]”hŒcreate a new link”…”�”}”(hj…âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mìhj‚âh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjßßh²hh³jøßh´Mìubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j�âjšj�âj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXª**Parameters** ``struct dentry *old_dentry`` object to be linked ``const struct mnt_idmap *idmap`` idmap of the mount ``struct inode *dir`` new parent ``struct dentry *new_dentry`` where to create the new link ``struct delegated_inode *delegated_inode`` returns inode needing a delegation break **Description** The caller must hold dir->i_rwsem exclusively. If vfs_link discovers a delegation on the to-be-linked file in need of breaking, it will return -EWOULDBLOCK and return a reference to the inode in delegated_inode. The caller should then break the delegation and retry. Because breaking a delegation may take a long time, the caller should drop the i_rwsem before doing so. Alternatively, a caller may pass NULL for delegated_inode. This may be appropriate for callers that expect the underlying filesystem not to be NFS exported. If the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through **idmap**. This function will then take care to map the inode according to **idmap** before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass **nop_mnt_idmap**.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj§âh]”hŒ Parameters”…”�”}”(hj©âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¥âubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mðhj¡âubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ2``struct dentry *old_dentry`` object to be linked ”h]”(jÊ)�”}”(hŒ``struct dentry *old_dentry``”h]”jÐ)�”}”(hjÆâh]”hŒstruct dentry *old_dentry”…”�”}”(hjÈâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÄâubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MíhjÀâubjæ)�”}”(hhh]”hÌ)�”}”(hŒobject to be linked”h]”hŒobject to be linked”…”�”}”(hjßâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÛâh´MíhjÜâubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÀâubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÛâh´Míhj½âubjÄ)�”}”(hŒ5``const struct mnt_idmap *idmap`` idmap of the mount ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjÿâh]”hŒconst struct mnt_idmap *idmap”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjýâubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mîhjùâubjæ)�”}”(hhh]”hÌ)�”}”(hŒidmap of the mount”h]”hŒidmap of the mount”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jãh´Mîhjãubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjùâubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jãh´Mîhj½âubjÄ)�”}”(hŒ!``struct inode *dir`` new parent ”h]”(jÊ)�”}”(hŒ``struct inode *dir``”h]”jÐ)�”}”(hj8ãh]”hŒstruct inode *dir”…”�”}”(hj:ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj6ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mïhj2ãubjæ)�”}”(hhh]”hÌ)�”}”(hŒ new parent”h]”hŒ new parent”…”�”}”(hjQãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jMãh´MïhjNãubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj2ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jMãh´Mïhj½âubjÄ)�”}”(hŒ;``struct dentry *new_dentry`` where to create the new link ”h]”(jÊ)�”}”(hŒ``struct dentry *new_dentry``”h]”jÐ)�”}”(hjqãh]”hŒstruct dentry *new_dentry”…”�”}”(hjsãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjoãubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mðhjkãubjæ)�”}”(hhh]”hÌ)�”}”(hŒwhere to create the new link”h]”hŒwhere to create the new link”…”�”}”(hjŠãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j†ãh´Mðhj‡ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjkãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j†ãh´Mðhj½âubjÄ)�”}”(hŒU``struct delegated_inode *delegated_inode`` returns inode needing a delegation break ”h]”(jÊ)�”}”(hŒ+``struct delegated_inode *delegated_inode``”h]”jÐ)�”}”(hjªãh]”hŒ'struct delegated_inode *delegated_inode”…”�”}”(hj¬ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¨ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mñhj¤ãubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(returns inode needing a delegation break”h]”hŒ(returns inode needing a delegation break”…”�”}”(hjÃãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¿ãh´MñhjÀãubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¤ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¿ãh´Mñhj½âubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj¡âubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjåãh]”hŒ Description”…”�”}”(hjçãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjããubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Móhj¡âubhÌ)�”}”(hŒ.The caller must hold dir->i_rwsem exclusively.”h]”hŒ.The caller must hold dir->i_rwsem exclusively.”…”�”}”(hjûãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mòhj¡âubhÌ)�”}”(hXEIf vfs_link discovers a delegation on the to-be-linked file in need of breaking, it will return -EWOULDBLOCK and return a reference to the inode in delegated_inode. The caller should then break the delegation and retry. Because breaking a delegation may take a long time, the caller should drop the i_rwsem before doing so.”h]”hXEIf vfs_link discovers a delegation on the to-be-linked file in need of breaking, it will return -EWOULDBLOCK and return a reference to the inode in delegated_inode. The caller should then break the delegation and retry. Because breaking a delegation may take a long time, the caller should drop the i_rwsem before doing so.”…”�”}”(hj äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Môhj¡âubhÌ)�”}”(hŒ�Alternatively, a caller may pass NULL for delegated_inode. This may be appropriate for callers that expect the underlying filesystem not to be NFS exported.”h]”hŒ�Alternatively, a caller may pass NULL for delegated_inode. This may be appropriate for callers that expect the underlying filesystem not to be NFS exported.”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Múhj¡âubhÌ)�”}”(hXLIf the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through **idmap**. This function will then take care to map the inode according to **idmap** before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass **nop_mnt_idmap**.”h]”(hŒgIf the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through ”…”�”}”(hj(äh²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hj0äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj(äubhŒB. This function will then take care to map the inode according to ”…”�”}”(hj(äh²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hjBäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj(äubhŒ before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass ”…”�”}”(hj(äh²hh³Nh´Nubj©)�”}”(hŒ**nop_mnt_idmap**”h]”hŒ nop_mnt_idmap”…”�”}”(hjTäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj(äubhŒ.”…”�”}”(hj(äh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mþhj¡âubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_rename (C function)”Œ c.vfs_rename”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ&int vfs_rename (struct renamedata *rd)”h]”j)�”}”(hŒ%int vfs_rename(struct renamedata *rd)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj�äh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj‰äh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœäh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‰äh²hh³j›äh´M ubjC)�”}”(hŒ vfs_rename”h]”jI)�”}”(hŒ vfs_rename”h]”hŒ vfs_rename”…”�”}”(hj®äh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjªäubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj‰äh²hh³j›äh´M ubj=)�”}”(hŒ(struct renamedata *rd)”h]”jC)�”}”(hŒstruct renamedata *rd”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÊäh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÆäubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×äh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÆäubh)�”}”(hhh]”jI)�”}”(hŒ renamedata”h]”hŒ renamedata”…”�”}”(hjèäh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjåäubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jêäŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj°äsbŒ c.vfs_rename”†”asbuh1hhjÆäubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÆäubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÆäubjI)�”}”(hŒrd”h]”hŒrd”…”�”}”(hj#åh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÆäubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÂäubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj‰äh²hh³j›äh´M ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj…äh²hh³j›äh´M ubah}”(h]”j€äah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j›äh´M hj‚äh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒrename a filesystem object”h]”hŒrename a filesystem object”…”�”}”(hjMåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M hjJåh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj‚äh²hh³j›äh´M ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jeåjšjeåj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXr **Parameters** ``struct renamedata *rd`` pointer to :c:type:`struct renamedata ` info **Description** The caller must hold multiple mutexes--see lock_rename()). If vfs_rename discovers a delegation in need of breaking at either the source or destination, it will return -EWOULDBLOCK and return a reference to the inode in delegated_inode. The caller should then break the delegation and retry. Because breaking a delegation may take a long time, the caller should drop all locks before doing so. Alternatively, a caller may pass NULL for delegated_inode. This may be appropriate for callers that expect the underlying filesystem not to be NFS exported. The worst of all namespace operations - renaming directory. "Perverted" doesn't even start to describe it. Somebody in UCB had a heck of a trip... Problems: a) we can get into loop creation. b) race potential - two innocent renames can create a loop together. That's where 4.4BSD screws up. Current fix: serialization on sb->s_vfs_rename_mutex. We might be more accurate, but that's another story. c) we may have to lock up to _four_ objects - parents and victim (if it exists), and source (if it's a non-directory or a subdirectory that moves to different parent). And that - after we got ->i_rwsem on parents (until then we don't know whether the target exists). Solution: try to be smart with locking order for inodes. We rely on the fact that tree topology may change only under ->s_vfs_rename_mutex _and_ that parent of the object we move will be locked. Thus we can rank directories by the tree (ancestors first) and rank all non-directories after them. That works since everybody except rename does "lock parent, lookup, lock child" and rename is under ->s_vfs_rename_mutex. HOWEVER, it relies on the assumption that any object with ->lookup() has no more than 1 dentry. If "hybrid" objects will ever appear, we'd better make sure that there's no link(2) for them. d) conversion from fhandle to dentry may come in the wrong moment - when we are removing the target. Solution: we will have to grab ->i_rwsem in the fhandle_to_dentry code. [FIXME - current nfsfh.c relies on ->i_rwsem on parents, which works but leads to some truly excessive locking].”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjoåh]”hŒ Parameters”…”�”}”(hjqåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjmåubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M¤hjiåubj¿)�”}”(hhh]”jÄ)�”}”(hŒS``struct renamedata *rd`` pointer to :c:type:`struct renamedata ` info ”h]”(jÊ)�”}”(hŒ``struct renamedata *rd``”h]”jÐ)�”}”(hjŽåh]”hŒstruct renamedata *rd”…”�”}”(hj�åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjŒåubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M¡hjˆåubjæ)�”}”(hhh]”hÌ)�”}”(hŒ8pointer to :c:type:`struct renamedata ` info”h]”(hŒ pointer to ”…”�”}”(hj§åh²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct renamedata `”h]”jÐ)�”}”(hj±åh]”hŒstruct renamedata”…”�”}”(hj³åh²hh³Nh´Nubah}”(h]”h ]”(jÌj“Œc-type”eh"]”h$]”h&]”uh1jÏhj¯åubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jØŒ refdomain”j“Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jjÞjጠrenamedata”uh1hh³j£åh´M¡hj§åubhŒ info”…”�”}”(hj§åh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j£åh´M¡hj¤åubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjˆåubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j£åh´M¡hj…åubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjiåubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjìåh]”hŒ Description”…”�”}”(hjîåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjêåubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M£hjiåubhÌ)�”}”(hŒ:The caller must hold multiple mutexes--see lock_rename()).”h]”hŒ:The caller must hold multiple mutexes--see lock_rename()).”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M¢hjiåubhÌ)�”}”(hXPIf vfs_rename discovers a delegation in need of breaking at either the source or destination, it will return -EWOULDBLOCK and return a reference to the inode in delegated_inode. The caller should then break the delegation and retry. Because breaking a delegation may take a long time, the caller should drop all locks before doing so.”h]”hXPIf vfs_rename discovers a delegation in need of breaking at either the source or destination, it will return -EWOULDBLOCK and return a reference to the inode in delegated_inode. The caller should then break the delegation and retry. Because breaking a delegation may take a long time, the caller should drop all locks before doing so.”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M¤hjiåubhÌ)�”}”(hŒ�Alternatively, a caller may pass NULL for delegated_inode. This may be appropriate for callers that expect the underlying filesystem not to be NFS exported.”h]”hŒ�Alternatively, a caller may pass NULL for delegated_inode. This may be appropriate for callers that expect the underlying filesystem not to be NFS exported.”…”�”}”(hj æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M«hjiåubhÌ)�”}”(hŒœThe worst of all namespace operations - renaming directory. "Perverted" doesn't even start to describe it. Somebody in UCB had a heck of a trip... Problems:”h]”hŒ¢The worst of all namespace operations - renaming directory. “Pervertedâ€� doesn’t even start to describe it. Somebody in UCB had a heck of a trip... Problems:”…”�”}”(hj/æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M¯hjiåubjÁ™)�”}”(hX¸a) we can get into loop creation. b) race potential - two innocent renames can create a loop together. That's where 4.4BSD screws up. Current fix: serialization on sb->s_vfs_rename_mutex. We might be more accurate, but that's another story. c) we may have to lock up to _four_ objects - parents and victim (if it exists), and source (if it's a non-directory or a subdirectory that moves to different parent). And that - after we got ->i_rwsem on parents (until then we don't know whether the target exists). Solution: try to be smart with locking order for inodes. We rely on the fact that tree topology may change only under ->s_vfs_rename_mutex _and_ that parent of the object we move will be locked. Thus we can rank directories by the tree (ancestors first) and rank all non-directories after them. That works since everybody except rename does "lock parent, lookup, lock child" and rename is under ->s_vfs_rename_mutex. HOWEVER, it relies on the assumption that any object with ->lookup() has no more than 1 dentry. If "hybrid" objects will ever appear, we'd better make sure that there's no link(2) for them. d) conversion from fhandle to dentry may come in the wrong moment - when we are removing the target. Solution: we will have to grab ->i_rwsem in the fhandle_to_dentry code. [FIXME - current nfsfh.c relies on ->i_rwsem on parents, which works but leads to some truly excessive locking].”h]”j9W)�”}”(hhh]”(j–E)�”}”(hŒwe can get into loop creation.”h]”hÌ)�”}”(hjGæh]”hŒwe can get into loop creation.”…”�”}”(hjIæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M³hjEæubah}”(h]”h ]”h"]”h$]”h&]”uh1j•EhjBæubj–E)�”}”(hŒËrace potential - two innocent renames can create a loop together. That's where 4.4BSD screws up. Current fix: serialization on sb->s_vfs_rename_mutex. We might be more accurate, but that's another story.”h]”hÌ)�”}”(hŒËrace potential - two innocent renames can create a loop together. That's where 4.4BSD screws up. Current fix: serialization on sb->s_vfs_rename_mutex. We might be more accurate, but that's another story.”h]”hŒÏrace potential - two innocent renames can create a loop together. That’s where 4.4BSD screws up. Current fix: serialization on sb->s_vfs_rename_mutex. We might be more accurate, but that’s another story.”…”�”}”(hjaæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M´hj]æubah}”(h]”h ]”h"]”h$]”h&]”uh1j•EhjBæubj–E)�”}”(hXjwe may have to lock up to _four_ objects - parents and victim (if it exists), and source (if it's a non-directory or a subdirectory that moves to different parent). And that - after we got ->i_rwsem on parents (until then we don't know whether the target exists). Solution: try to be smart with locking order for inodes. We rely on the fact that tree topology may change only under ->s_vfs_rename_mutex _and_ that parent of the object we move will be locked. Thus we can rank directories by the tree (ancestors first) and rank all non-directories after them. That works since everybody except rename does "lock parent, lookup, lock child" and rename is under ->s_vfs_rename_mutex. HOWEVER, it relies on the assumption that any object with ->lookup() has no more than 1 dentry. If "hybrid" objects will ever appear, we'd better make sure that there's no link(2) for them.”h]”hÌ)�”}”(hXjwe may have to lock up to _four_ objects - parents and victim (if it exists), and source (if it's a non-directory or a subdirectory that moves to different parent). And that - after we got ->i_rwsem on parents (until then we don't know whether the target exists). Solution: try to be smart with locking order for inodes. We rely on the fact that tree topology may change only under ->s_vfs_rename_mutex _and_ that parent of the object we move will be locked. Thus we can rank directories by the tree (ancestors first) and rank all non-directories after them. That works since everybody except rename does "lock parent, lookup, lock child" and rename is under ->s_vfs_rename_mutex. HOWEVER, it relies on the assumption that any object with ->lookup() has no more than 1 dentry. If "hybrid" objects will ever appear, we'd better make sure that there's no link(2) for them.”h]”hXzwe may have to lock up to _four_ objects - parents and victim (if it exists), and source (if it’s a non-directory or a subdirectory that moves to different parent). And that - after we got ->i_rwsem on parents (until then we don’t know whether the target exists). Solution: try to be smart with locking order for inodes. We rely on the fact that tree topology may change only under ->s_vfs_rename_mutex _and_ that parent of the object we move will be locked. Thus we can rank directories by the tree (ancestors first) and rank all non-directories after them. That works since everybody except rename does “lock parent, lookup, lock childâ€� and rename is under ->s_vfs_rename_mutex. HOWEVER, it relies on the assumption that any object with ->lookup() has no more than 1 dentry. If “hybridâ€� objects will ever appear, we’d better make sure that there’s no link(2) for them.”…”�”}”(hjzæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M¸hjvæubah}”(h]”h ]”h"]”h$]”h&]”uh1j•EhjBæubj–E)�”}”(hXconversion from fhandle to dentry may come in the wrong moment - when we are removing the target. Solution: we will have to grab ->i_rwsem in the fhandle_to_dentry code. [FIXME - current nfsfh.c relies on ->i_rwsem on parents, which works but leads to some truly excessive locking].”h]”hÌ)�”}”(hXconversion from fhandle to dentry may come in the wrong moment - when we are removing the target. Solution: we will have to grab ->i_rwsem in the fhandle_to_dentry code. [FIXME - current nfsfh.c relies on ->i_rwsem on parents, which works but leads to some truly excessive locking].”h]”hXconversion from fhandle to dentry may come in the wrong moment - when we are removing the target. Solution: we will have to grab ->i_rwsem in the fhandle_to_dentry code. [FIXME - current nfsfh.c relies on ->i_rwsem on parents, which works but leads to some truly excessive locking].”…”�”}”(hj“æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÆhj�æubah}”(h]”h ]”h"]”h$]”h&]”uh1j•EhjBæubeh}”(h]”h ]”h"]”h$]”h&]”juWŒ loweralpha”jwWhjxWjó¥uh1j8Whj>æubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀ™h³jVæh´M³hjiåubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_readlink (C function)”Œc.vfs_readlink”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒIint vfs_readlink (struct dentry *dentry, char __user *buffer, int buflen)”h]”j)�”}”(hŒHint vfs_readlink(struct dentry *dentry, char __user *buffer, int buflen)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjÕæh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÑæh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäæh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÑæh²hh³jãæh´MubjC)�”}”(hŒ vfs_readlink”h]”jI)�”}”(hŒ vfs_readlink”h]”hŒ vfs_readlink”…”�”}”(hjöæh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjòæubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÑæh²hh³jãæh´Mubj=)�”}”(hŒ8(struct dentry *dentry, char __user *buffer, int buflen)”h]”(jC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjçubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjçubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj0çh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj-çubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j2çŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjøæsbŒc.vfs_readlink”†”asbuh1hhjçubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPçh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjçubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj^çh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjçubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjkçh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjçubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj çubjC)�”}”(hŒchar __user *buffer”h]”(j�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj„çh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj€çubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’çh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj€çubhŒ__user”…”�”}”(hj€çh²hh³Nh´Nubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤çh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj€çubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj²çh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj€çubjI)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hj¿çh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj€çubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj çubjC)�”}”(hŒ int buflen”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjØçh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÔçubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæçh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÔçubjI)�”}”(hŒbuflen”h]”hŒbuflen”…”�”}”(hjôçh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÔçubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj çubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÑæh²hh³jãæh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÍæh²hh³jãæh´Mubah}”(h]”jÈæah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jãæh´MhjÊæh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ'copy symlink body into userspace buffer”h]”hŒ'copy symlink body into userspace buffer”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mhjèh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÊæh²hh³jãæh´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j6èjšj6èj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX **Parameters** ``struct dentry *dentry`` dentry on which to get symbolic link ``char __user *buffer`` user memory pointer ``int buflen`` size of buffer **Description** Does not touch atime. That's up to the caller if necessary Does not call security hook.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj@èh]”hŒ Parameters”…”�”}”(hjBèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj>èubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mhj:èubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ?``struct dentry *dentry`` dentry on which to get symbolic link ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hj_èh]”hŒstruct dentry *dentry”…”�”}”(hjaèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj]èubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MhjYèubjæ)�”}”(hhh]”hÌ)�”}”(hŒ$dentry on which to get symbolic link”h]”hŒ$dentry on which to get symbolic link”…”�”}”(hjxèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jtèh´Mhjuèubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjYèubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jtèh´MhjVèubjÄ)�”}”(hŒ,``char __user *buffer`` user memory pointer ”h]”(jÊ)�”}”(hŒ``char __user *buffer``”h]”jÐ)�”}”(hj˜èh]”hŒchar __user *buffer”…”�”}”(hjšèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj–èubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mhj’èubjæ)�”}”(hhh]”hÌ)�”}”(hŒuser memory pointer”h]”hŒuser memory pointer”…”�”}”(hj±èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j­èh´Mhj®èubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj’èubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j­èh´MhjVèubjÄ)�”}”(hŒ``int buflen`` size of buffer ”h]”(jÊ)�”}”(hŒ``int buflen``”h]”jÐ)�”}”(hjÑèh]”hŒ int buflen”…”�”}”(hjÓèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÏèubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MhjËèubjæ)�”}”(hhh]”hÌ)�”}”(hŒsize of buffer”h]”hŒsize of buffer”…”�”}”(hjêèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jæèh´Mhjçèubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjËèubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jæèh´MhjVèubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj:èubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj éh]”hŒ Description”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj éubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M hj:èubhÌ)�”}”(hŒ;Does not touch atime. That's up to the caller if necessary”h]”hŒ=Does not touch atime. That’s up to the caller if necessary”…”�”}”(hj"éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mhj:èubhÌ)�”}”(hŒDoes not call security hook.”h]”hŒDoes not call security hook.”…”�”}”(hj1éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M hj:èubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_get_link (C function)”Œc.vfs_get_link”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒLconst char * vfs_get_link (struct dentry *dentry, struct delayed_call *done)”h]”j)�”}”(hŒJconst char *vfs_get_link(struct dentry *dentry, struct delayed_call *done)”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj`éh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj\éh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M0ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnéh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj\éh²hh³jméh´M0ubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj|éh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj\éh²hh³jméh´M0ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠéh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj\éh²hh³jméh´M0ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj˜éh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj\éh²hh³jméh´M0ubjC)�”}”(hŒ vfs_get_link”h]”jI)�”}”(hŒ vfs_get_link”h]”hŒ vfs_get_link”…”�”}”(hj©éh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¥éubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj\éh²hh³jméh´M0ubj=)�”}”(hŒ2(struct dentry *dentry, struct delayed_call *done)”h]”(jC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÅéh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÁéubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒéh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÁéubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjãéh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjàéubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jåéŒmodname”NŒ classname”Njj )�”}”j ]”j)�”•†}”jj«ésbŒc.vfs_get_link”†”asbuh1hhjÁéubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÁéubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÁéubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÁéubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj½éubjC)�”}”(hŒstruct delayed_call *done”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj7êh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj3êubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDêh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj3êubh)�”}”(hhh]”jI)�”}”(hŒ delayed_call”h]”hŒ delayed_call”…”�”}”(hjUêh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjRêubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jWêŒmodname”NŒ classname”Njj )�”}”j ]”jÿéŒc.vfs_get_link”†”asbuh1hhj3êubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsêh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj3êubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj�êh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj3êubjI)�”}”(hŒdone”h]”hŒdone”…”�”}”(hjŽêh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj3êubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj½éubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj\éh²hh³jméh´M0ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjXéh²hh³jméh´M0ubah}”(h]”jSéah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jméh´M0hjUéh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒget symlink body”h]”hŒget symlink body”…”�”}”(hj¸êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M0hjµêh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjUéh²hh³jméh´M0ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÐêjšjÐêj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXi**Parameters** ``struct dentry *dentry`` dentry on which to get symbolic link ``struct delayed_call *done`` caller needs to free returned data with this **Description** Calls security hook and i_op->get_link() on the supplied inode. It does not touch atime. That's up to the caller if necessary. Does not work on "special" symlinks like /proc/$$/fd/N”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÚêh]”hŒ Parameters”…”�”}”(hjÜêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjØêubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M4hjÔêubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ?``struct dentry *dentry`` dentry on which to get symbolic link ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hjùêh]”hŒstruct dentry *dentry”…”�”}”(hjûêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj÷êubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M1hjóêubjæ)�”}”(hhh]”hÌ)�”}”(hŒ$dentry on which to get symbolic link”h]”hŒ$dentry on which to get symbolic link”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jëh´M1hjëubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjóêubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jëh´M1hjðêubjÄ)�”}”(hŒK``struct delayed_call *done`` caller needs to free returned data with this ”h]”(jÊ)�”}”(hŒ``struct delayed_call *done``”h]”jÐ)�”}”(hj2ëh]”hŒstruct delayed_call *done”…”�”}”(hj4ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj0ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M2hj,ëubjæ)�”}”(hhh]”hÌ)�”}”(hŒ,caller needs to free returned data with this”h]”hŒ,caller needs to free returned data with this”…”�”}”(hjKëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jGëh´M2hjHëubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj,ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jGëh´M2hjðêubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÔêubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjmëh]”hŒ Description”…”�”}”(hjoëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjkëubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M4hjÔêubhÌ)�”}”(hŒ?Calls security hook and i_op->get_link() on the supplied inode.”h]”hŒ?Calls security hook and i_op->get_link() on the supplied inode.”…”�”}”(hjƒëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M3hjÔêubhÌ)�”}”(hŒ?It does not touch atime. That's up to the caller if necessary.”h]”hŒAIt does not touch atime. That’s up to the caller if necessary.”…”�”}”(hj’ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M5hjÔêubhÌ)�”}”(hŒ6Does not work on "special" symlinks like /proc/$$/fd/N”h]”hŒ:Does not work on “specialâ€� symlinks like /proc/$$/fd/N”…”�”}”(hj¡ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M7hjÔêubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œpage_get_link (C function)”Œc.page_get_link”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒfconst char * page_get_link (struct dentry *dentry, struct inode *inode, struct delayed_call *callback)”h]”j)�”}”(hŒdconst char *page_get_link(struct dentry *dentry, struct inode *inode, struct delayed_call *callback)”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjÐëh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÌëh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Miubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞëh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÌëh²hh³jÝëh´Miubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjìëh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÌëh²hh³jÝëh´Miubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúëh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÌëh²hh³jÝëh´Miubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÌëh²hh³jÝëh´MiubjC)�”}”(hŒ page_get_link”h]”jI)�”}”(hŒ page_get_link”h]”hŒ page_get_link”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjìubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÌëh²hh³jÝëh´Miubj=)�”}”(hŒK(struct dentry *dentry, struct inode *inode, struct delayed_call *callback)”h]”(jC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj5ìh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj1ìubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBìh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj1ìubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjSìh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjPìubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jUìŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjìsbŒc.page_get_link”†”asbuh1hhj1ìubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsìh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj1ìubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj�ìh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj1ìubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjŽìh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj1ìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj-ìubjC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj§ìh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj£ìubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´ìh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj£ìubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjÅìh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÂìubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÇìŒmodname”NŒ classname”Njj )�”}”j ]”joìŒc.page_get_link”†”asbuh1hhj£ìubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãìh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj£ìubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjñìh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj£ìubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjþìh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj£ìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj-ìubjC)�”}”(hŒstruct delayed_call *callback”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjíubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$íh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjíubh)�”}”(hhh]”jI)�”}”(hŒ delayed_call”h]”hŒ delayed_call”…”�”}”(hj5íh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj2íubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j7íŒmodname”NŒ classname”Njj )�”}”j ]”joìŒc.page_get_link”†”asbuh1hhjíubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSíh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjíubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjaíh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjíubjI)�”}”(hŒcallback”h]”hŒcallback”…”�”}”(hjníh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjíubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj-ìubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÌëh²hh³jÝëh´Miubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÈëh²hh³jÝëh´Miubah}”(h]”jÃëah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÝëh´MihjÅëh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ2An implementation of the get_link inode_operation.”h]”hŒ2An implementation of the get_link inode_operation.”…”�”}”(hj˜íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mihj•íh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÅëh²hh³jÝëh´Miubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j°íjšj°íj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXª**Parameters** ``struct dentry *dentry`` The directory entry which is the symlink. ``struct inode *inode`` The inode for the symlink. ``struct delayed_call *callback`` Used to drop the reference to the symlink. **Description** Filesystems which store their symlinks in the page cache should use this to implement the get_link() member of their inode_operations. **Return** A pointer to the NUL-terminated symlink.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjºíh]”hŒ Parameters”…”�”}”(hj¼íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¸íubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mmhj´íubj¿)�”}”(hhh]”(jÄ)�”}”(hŒD``struct dentry *dentry`` The directory entry which is the symlink. ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hjÙíh]”hŒstruct dentry *dentry”…”�”}”(hjÛíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj×íubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MjhjÓíubjæ)�”}”(hhh]”hÌ)�”}”(hŒ)The directory entry which is the symlink.”h]”hŒ)The directory entry which is the symlink.”…”�”}”(hjòíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jîíh´Mjhjïíubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÓíubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jîíh´MjhjÐíubjÄ)�”}”(hŒ3``struct inode *inode`` The inode for the symlink. ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjîh]”hŒstruct inode *inode”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjîubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mkhj îubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe inode for the symlink.”h]”hŒThe inode for the symlink.”…”�”}”(hj+îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j'îh´Mkhj(îubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj îubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j'îh´MkhjÐíubjÄ)�”}”(hŒM``struct delayed_call *callback`` Used to drop the reference to the symlink. ”h]”(jÊ)�”}”(hŒ!``struct delayed_call *callback``”h]”jÐ)�”}”(hjKîh]”hŒstruct delayed_call *callback”…”�”}”(hjMîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjIîubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MlhjEîubjæ)�”}”(hhh]”hÌ)�”}”(hŒ*Used to drop the reference to the symlink.”h]”hŒ*Used to drop the reference to the symlink.”…”�”}”(hjdîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j`îh´Mlhjaîubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjEîubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j`îh´MlhjÐíubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj´íubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj†îh]”hŒ Description”…”�”}”(hjˆîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj„îubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mnhj´íubhÌ)�”}”(hŒ†Filesystems which store their symlinks in the page cache should use this to implement the get_link() member of their inode_operations.”h]”hŒ†Filesystems which store their symlinks in the page cache should use this to implement the get_link() member of their inode_operations.”…”�”}”(hjœîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mmhj´íubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj­îh]”hŒReturn”…”�”}”(hj¯îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj«îubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mphj´íubhÌ)�”}”(hŒ(A pointer to the NUL-terminated symlink.”h]”hŒ(A pointer to the NUL-terminated symlink.”…”�”}”(hjÃîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mqhj´íubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œpage_put_link (C function)”Œc.page_put_link”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒvoid page_put_link (void *arg)”h]”j)�”}”(hŒvoid page_put_link(void *arg)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjòîh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjîîh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjîîh²hh³jïh´MubjC)�”}”(hŒ page_put_link”h]”jI)�”}”(hŒ page_put_link”h]”hŒ page_put_link”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjïubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjîîh²hh³jïh´Mubj=)�”}”(hŒ (void *arg)”h]”jC)�”}”(hŒ void *arg”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj/ïh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj+ïubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=ïh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj+ïubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjKïh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj+ïubjI)�”}”(hŒarg”h]”hŒarg”…”�”}”(hjXïh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj+ïubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj'ïubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjîîh²hh³jïh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjêîh²hh³jïh´Mubah}”(h]”jåîah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jïh´Mhjçîh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ"Drop the reference to the symlink.”h]”hŒ"Drop the reference to the symlink.”…”�”}”(hj‚ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mhjïh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjçîh²hh³jïh´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jšïjšjšïj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX>**Parameters** ``void *arg`` The folio which contains the symlink. **Description** This is used internally by page_get_link(). It is exported for use by filesystems which need to implement a variant of page_get_link() themselves. Despite the apparent symmetry, filesystems which use page_get_link() do not need to call page_put_link(). The argument, while it has a void pointer type, must be a pointer to the folio which was retrieved from the page cache. The delayed_call infrastructure is used to drop the reference count once the caller is done with the symlink.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj¤ïh]”hŒ Parameters”…”�”}”(hj¦ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¢ïubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mƒhjžïubj¿)�”}”(hhh]”jÄ)�”}”(hŒ4``void *arg`` The folio which contains the symlink. ”h]”(jÊ)�”}”(hŒ ``void *arg``”h]”jÐ)�”}”(hjÃïh]”hŒ void *arg”…”�”}”(hjÅïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÁïubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M€hj½ïubjæ)�”}”(hhh]”hÌ)�”}”(hŒ%The folio which contains the symlink.”h]”hŒ%The folio which contains the symlink.”…”�”}”(hjÜïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jØïh´M€hjÙïubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj½ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jØïh´M€hjºïubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjžïubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjþïh]”hŒ Description”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjüïubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M‚hjžïubhÌ)�”}”(hŒþThis is used internally by page_get_link(). It is exported for use by filesystems which need to implement a variant of page_get_link() themselves. Despite the apparent symmetry, filesystems which use page_get_link() do not need to call page_put_link().”h]”hŒþThis is used internally by page_get_link(). It is exported for use by filesystems which need to implement a variant of page_get_link() themselves. Despite the apparent symmetry, filesystems which use page_get_link() do not need to call page_put_link().”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M�hjžïubhÌ)�”}”(hŒæThe argument, while it has a void pointer type, must be a pointer to the folio which was retrieved from the page cache. The delayed_call infrastructure is used to drop the reference count once the caller is done with the symlink.”h]”hŒæThe argument, while it has a void pointer type, must be a pointer to the folio which was retrieved from the page cache. The delayed_call infrastructure is used to drop the reference count once the caller is done with the symlink.”…”�”}”(hj#ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M†hjžïubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œfinish_open (C function)”Œ c.finish_open”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒfint finish_open (struct file *file, struct dentry *dentry, int (*open)(struct inode *, struct file *))”h]”j)�”}”(hŒcint finish_open(struct file *file, struct dentry *dentry, int (*open)(struct inode*, struct file*))”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjRðh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjNðh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaðh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjNðh²hh³j`ðh´MubjC)�”}”(hŒ finish_open”h]”jI)�”}”(hŒ finish_open”h]”hŒ finish_open”…”�”}”(hjsðh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjoðubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjNðh²hh³j`ðh´Mubj=)�”}”(hŒT(struct file *file, struct dentry *dentry, int (*open)(struct inode*, struct file*))”h]”(jC)�”}”(hŒstruct file *file”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj�ðh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj‹ðubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœðh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‹ðubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj­ðh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjªðubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¯ðŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjuðsbŒ c.finish_open”†”asbuh1hhj‹ðubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍðh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‹ðubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÛðh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj‹ðubjI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjèðh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‹ðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj‡ðubjC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjýðubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjýðubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjñubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j!ñŒmodname”NŒ classname”Njj )�”}”j ]”jÉðŒ c.finish_open”†”asbuh1hhjýðubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=ñh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjýðubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjKñh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjýðubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjXñh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjýðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj‡ðubjC)�”}”(hŒ(int (*open)(struct inode*, struct file*)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjqñh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjmñubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjmñubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hj�ñh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjmñubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjšñh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjmñubjI)�”}”(hŒopen”h]”hŒopen”…”�”}”(hj§ñh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjmñubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hjµñh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjmñubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hjÂñh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjmñubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÏñh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjmñubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜñh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjmñubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjíñh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjêñubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jïñŒmodname”NŒ classname”Njj )�”}”j ]”jÉðŒ c.finish_open”†”asbuh1hhjmñubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj òh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjmñubj¯)�”}”(hjW¦h]”hŒ,”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjmñubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%òh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjmñubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj3òh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjmñubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@òh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjmñubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjQòh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjNòubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jSòŒmodname”NŒ classname”Njj )�”}”j ]”jÉðŒ c.finish_open”†”asbuh1hhjmñubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjoòh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjmñubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hj|òh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjmñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj‡ðubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjNðh²hh³j`ðh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjJðh²hh³j`ðh´Mubah}”(h]”jEðah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j`ðh´MhjGðh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒfinish opening a file”h]”hŒfinish opening a file”…”�”}”(hj¥òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´Mhj¢òh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjGðh²hh³j`ðh´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j½òjšj½òj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXT**Parameters** ``struct file *file`` file pointer ``struct dentry *dentry`` pointer to dentry ``int (*open)(struct inode *, struct file *)`` open callback **Description** This can be used to finish opening a file passed to i_op->atomic_open(). If the open callback is set to NULL, then the standard f_op->open() filesystem callback is substituted. NB: the dentry reference is _not_ consumed. If, for example, the dentry is the return value of d_splice_alias(), then the caller needs to perform dput() on it after finish_open(). Returns zero on success or -errno if the open failed.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÇòh]”hŒ Parameters”…”�”}”(hjÉòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÅòubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´MhjÁòubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ#``struct file *file`` file pointer ”h]”(jÊ)�”}”(hŒ``struct file *file``”h]”jÐ)�”}”(hjæòh]”hŒstruct file *file”…”�”}”(hjèòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjäòubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´Mhjàòubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file pointer”h]”hŒ file pointer”…”�”}”(hjÿòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jûòh´Mhjüòubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjàòubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jûòh´MhjÝòubjÄ)�”}”(hŒ,``struct dentry *dentry`` pointer to dentry ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hjóh]”hŒstruct dentry *dentry”…”�”}”(hj!óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjóubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´Mhjóubjæ)�”}”(hhh]”hÌ)�”}”(hŒpointer to dentry”h]”hŒpointer to dentry”…”�”}”(hj8óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j4óh´Mhj5óubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjóubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j4óh´MhjÝòubjÄ)�”}”(hŒ=``int (*open)(struct inode *, struct file *)`` open callback ”h]”(jÊ)�”}”(hŒ.``int (*open)(struct inode *, struct file *)``”h]”jÐ)�”}”(hjXóh]”hŒ*int (*open)(struct inode *, struct file *)”…”�”}”(hjZóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjVóubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´MhjRóubjæ)�”}”(hhh]”hÌ)�”}”(hŒ open callback”h]”hŒ open callback”…”�”}”(hjqóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jmóh´Mhjnóubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjRóubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jmóh´MhjÝòubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÁòubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj“óh]”hŒ Description”…”�”}”(hj•óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‘óubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´MhjÁòubhÌ)�”}”(hŒHThis can be used to finish opening a file passed to i_op->atomic_open().”h]”hŒHThis can be used to finish opening a file passed to i_op->atomic_open().”…”�”}”(hj©óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´MhjÁòubhÌ)�”}”(hŒgIf the open callback is set to NULL, then the standard f_op->open() filesystem callback is substituted.”h]”hŒgIf the open callback is set to NULL, then the standard f_op->open() filesystem callback is substituted.”…”�”}”(hj¸óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´MhjÁòubhÌ)�”}”(hŒ´NB: the dentry reference is _not_ consumed. If, for example, the dentry is the return value of d_splice_alias(), then the caller needs to perform dput() on it after finish_open().”h]”hŒ´NB: the dentry reference is _not_ consumed. If, for example, the dentry is the return value of d_splice_alias(), then the caller needs to perform dput() on it after finish_open().”…”�”}”(hjÇóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´MhjÁòubhÌ)�”}”(hŒ5Returns zero on success or -errno if the open failed.”h]”hŒ5Returns zero on success or -errno if the open failed.”…”�”}”(hjÖóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´MhjÁòubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œfinish_no_open (C function)”Œc.finish_no_open”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ=int finish_no_open (struct file *file, struct dentry *dentry)”h]”j)�”}”(hŒah"]”h$]”h&]”uh1j1hjôh²hh³jôh´M,ubjC)�”}”(hŒfinish_no_open”h]”jI)�”}”(hŒfinish_no_open”h]”hŒfinish_no_open”…”�”}”(hj&ôh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj"ôubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjôh²hh³jôh´M,ubj=)�”}”(hŒ*(struct file *file, struct dentry *dentry)”h]”(jC)�”}”(hŒstruct file *file”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjBôh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj>ôubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOôh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj>ôubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj`ôh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj]ôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jbôŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj(ôsbŒc.finish_no_open”†”asbuh1hhj>ôubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€ôh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj>ôubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjŽôh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj>ôubjI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj›ôh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj>ôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj:ôubjC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj´ôh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj°ôubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁôh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj°ôubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjÒôh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÏôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÔôŒmodname”NŒ classname”Njj )�”}”j ]”j|ôŒc.finish_no_open”†”asbuh1hhj°ôubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðôh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj°ôubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjþôh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj°ôubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj õh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj°ôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj:ôubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjôh²hh³jôh´M,ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjýóh²hh³jôh´M,ubah}”(h]”jøóah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jôh´M,hjúóh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ/finish ->atomic_open() without opening the file”h]”hŒ/finish ->atomic_open() without opening the file”…”�”}”(hj5õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´M,hj2õh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjúóh²hh³jôh´M,ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jMõjšjMõj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXº**Parameters** ``struct file *file`` file pointer ``struct dentry *dentry`` dentry, ERR_PTR(-E...) or NULL (as returned from ->lookup()) **Description** This can be used to set the result of a lookup in ->atomic_open(). NB: unlike finish_open() this function does consume the dentry reference and the caller need not dput() it. Returns 0 or -E..., which must be the return value of ->atomic_open() after having called this function.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjWõh]”hŒ Parameters”…”�”}”(hjYõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjUõubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´M0hjQõubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ#``struct file *file`` file pointer ”h]”(jÊ)�”}”(hŒ``struct file *file``”h]”jÐ)�”}”(hjvõh]”hŒstruct file *file”…”�”}”(hjxõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjtõubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´M.hjpõubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file pointer”h]”hŒ file pointer”…”�”}”(hj�õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‹õh´M.hjŒõubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjpõubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‹õh´M.hjmõubjÄ)�”}”(hŒW``struct dentry *dentry`` dentry, ERR_PTR(-E...) or NULL (as returned from ->lookup()) ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hj¯õh]”hŒstruct dentry *dentry”…”�”}”(hj±õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj­õubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´M/hj©õubjæ)�”}”(hhh]”hÌ)�”}”(hŒlookup())”h]”hŒlookup())”…”�”}”(hjÈõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÄõh´M/hjÅõubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj©õubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÄõh´M/hjmõubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjQõubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjêõh]”hŒ Description”…”�”}”(hjìõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjèõubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´M1hjQõubhÌ)�”}”(hŒBThis can be used to set the result of a lookup in ->atomic_open().”h]”hŒBThis can be used to set the result of a lookup in ->atomic_open().”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´M0hjQõubhÌ)�”}”(hŒkNB: unlike finish_open() this function does consume the dentry reference and the caller need not dput() it.”h]”hŒkNB: unlike finish_open() this function does consume the dentry reference and the caller need not dput() it.”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´M2hjQõubhÌ)�”}”(hŒhReturns 0 or -E..., which must be the return value of ->atomic_open() after having called this function.”h]”hŒhReturns 0 or -E..., which must be the return value of ->atomic_open() after having called this function.”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´M5hjQõubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œkernel_file_open (C function)”Œc.kernel_file_open”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ\struct file * kernel_file_open (const struct path *path, int flags, const struct cred *cred)”h]”j)�”}”(hŒZstruct file *kernel_file_open(const struct path *path, int flags, const struct cred *cred)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjMöh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjIöh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´M™ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[öh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjIöh²hh³jZöh´M™ubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjlöh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjiöubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jnöŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒkernel_file_open”sbŒc.kernel_file_open”†”asbuh1hhjIöh²hh³jZöh´M™ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�öh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjIöh²hh³jZöh´M™ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj›öh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjIöh²hh³jZöh´M™ubjC)�”}”(hŒkernel_file_open”h]”jI)�”}”(hjŠöh]”hŒkernel_file_open”…”�”}”(hj¬öh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¨öubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjIöh²hh³jZöh´M™ubj=)�”}”(hŒ=(const struct path *path, int flags, const struct cred *cred)”h]”(jC)�”}”(hŒconst struct path *path”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjÇöh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÃöubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔöh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÃöubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjâöh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÃöubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïöh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÃöubh)�”}”(hhh]”jI)�”}”(hŒpath”h]”hŒpath”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjýöubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j÷Œmodname”NŒ classname”Njj )�”}”j ]”jˆöŒc.kernel_file_open”†”asbuh1hhjÃöubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÃöubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj,÷h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÃöubjI)�”}”(hŒpath”h]”hŒpath”…”�”}”(hj9÷h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÃöubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¿öubjC)�”}”(hŒ int flags”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjR÷h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjN÷ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`÷h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjN÷ubjI)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjn÷h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjN÷ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¿öubjC)�”}”(hŒconst struct cred *cred”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj‡÷h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjƒ÷ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”÷h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjƒ÷ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¢÷h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjƒ÷ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯÷h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjƒ÷ubh)�”}”(hhh]”jI)�”}”(hŒcred”h]”hŒcred”…”�”}”(hjÀ÷h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj½÷ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÂ÷Œmodname”NŒ classname”Njj )�”}”j ]”jˆöŒc.kernel_file_open”†”asbuh1hhjƒ÷ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞ÷h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjƒ÷ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjì÷h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjƒ÷ubjI)�”}”(hŒcred”h]”hŒcred”…”�”}”(hjù÷h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjƒ÷ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¿öubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjIöh²hh³jZöh´M™ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjEöh²hh³jZöh´M™ubah}”(h]”j@öah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jZöh´M™hjBöh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ#open a file for kernel internal use”h]”hŒ#open a file for kernel internal use”…”�”}”(hj#øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´M™hj øh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjBöh²hh³jZöh´M™ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j;øjšj;øj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX{**Parameters** ``const struct path *path`` path of the file to open ``int flags`` open flags ``const struct cred *cred`` credentials for open **Description** Open a file for use by in-kernel consumers. The file is not accounted against nr_files and must not be installed into the file descriptor table. **Return** Opened file on success, an error pointer on failure.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjEøh]”hŒ Parameters”…”�”}”(hjGøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjCøubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´M�hj?øubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ5``const struct path *path`` path of the file to open ”h]”(jÊ)�”}”(hŒ``const struct path *path``”h]”jÐ)�”}”(hjdøh]”hŒconst struct path *path”…”�”}”(hjføh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjbøubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´Mšhj^øubjæ)�”}”(hhh]”hÌ)�”}”(hŒpath of the file to open”h]”hŒpath of the file to open”…”�”}”(hj}øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jyøh´Mšhjzøubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj^øubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jyøh´Mšhj[øubjÄ)�”}”(hŒ``int flags`` open flags ”h]”(jÊ)�”}”(hŒ ``int flags``”h]”jÐ)�”}”(hj�øh]”hŒ int flags”…”�”}”(hjŸøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj›øubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´M›hj—øubjæ)�”}”(hhh]”hÌ)�”}”(hŒ open flags”h]”hŒ open flags”…”�”}”(hj¶øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j²øh´M›hj³øubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj—øubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j²øh´M›hj[øubjÄ)�”}”(hŒ1``const struct cred *cred`` credentials for open ”h]”(jÊ)�”}”(hŒ``const struct cred *cred``”h]”jÐ)�”}”(hjÖøh]”hŒconst struct cred *cred”…”�”}”(hjØøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÔøubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´MœhjÐøubjæ)�”}”(hhh]”hÌ)�”}”(hŒcredentials for open”h]”hŒcredentials for open”…”�”}”(hjïøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jëøh´Mœhjìøubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÐøubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jëøh´Mœhj[øubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj?øubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjùh]”hŒ Description”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjùubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´Mžhj?øubhÌ)�”}”(hŒ�Open a file for use by in-kernel consumers. The file is not accounted against nr_files and must not be installed into the file descriptor table.”h]”hŒ�Open a file for use by in-kernel consumers. The file is not accounted against nr_files and must not be installed into the file descriptor table.”…”�”}”(hj'ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´M�hj?øubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj8ùh]”hŒReturn”…”�”}”(hj:ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj6ùubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´M¡hj?øubhÌ)�”}”(hŒ4Opened file on success, an error pointer on failure.”h]”hŒ4Opened file on success, an error pointer on failure.”…”�”}”(hjNùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´M¢hj?øubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œfilp_open (C function)”Œ c.filp_open”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒGstruct file * filp_open (const char *filename, int flags, umode_t mode)”h]”j)�”}”(hŒEstruct file *filp_open(const char *filename, int flags, umode_t mode)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj}ùh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjyùh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´M|ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹ùh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjyùh²hh³jŠùh´M|ubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjœùh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj™ùubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jžùŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒ filp_open”sbŒ c.filp_open”†”asbuh1hhjyùh²hh³jŠùh´M|ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½ùh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjyùh²hh³jŠùh´M|ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjËùh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjyùh²hh³jŠùh´M|ubjC)�”}”(hŒ filp_open”h]”jI)�”}”(hjºùh]”hŒ filp_open”…”�”}”(hjÜùh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjØùubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjyùh²hh³jŠùh´M|ubj=)�”}”(hŒ/(const char *filename, int flags, umode_t mode)”h]”(jC)�”}”(hŒconst char *filename”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj÷ùh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjóùubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjóùubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjóùubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj úh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjóùubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj.úh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjóùubjI)�”}”(hŒfilename”h]”hŒfilename”…”�”}”(hj;úh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjóùubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjïùubjC)�”}”(hŒ int flags”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjTúh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjPúubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbúh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjPúubjI)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjpúh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjPúubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjïùubjC)�”}”(hŒ umode_t mode”h]”(h)�”}”(hhh]”jI)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hjŒúh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‰úubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jŽúŒmodname”NŒ classname”Njj )�”}”j ]”j¸ùŒ c.filp_open”†”asbuh1hhj…úubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªúh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj…úubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj¸úh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj…úubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjïùubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjyùh²hh³jŠùh´M|ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjuùh²hh³jŠùh´M|ubah}”(h]”jpùah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jŠùh´M|hjrùh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ!open file and return file pointer”h]”hŒ!open file and return file pointer”…”�”}”(hjâúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´M|hjßúh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjrùh²hh³jŠùh´M|ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™júújšjúúj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXr**Parameters** ``const char *filename`` path to open ``int flags`` open flags as per the open(2) second argument ``umode_t mode`` mode for the new file if O_CREAT is set, else ignored **Description** This is the helper to open a file from kernelspace if you really have to. But in generally you should not do this, so please move along, nothing to see here..”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjûh]”hŒ Parameters”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjûubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´M€hjþúubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ&``const char *filename`` path to open ”h]”(jÊ)�”}”(hŒ``const char *filename``”h]”jÐ)�”}”(hj#ûh]”hŒconst char *filename”…”�”}”(hj%ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj!ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´M~hjûubjæ)�”}”(hhh]”hÌ)�”}”(hŒ path to open”h]”hŒ path to open”…”�”}”(hj<ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j8ûh´M~hj9ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j8ûh´M~hjûubjÄ)�”}”(hŒ<``int flags`` open flags as per the open(2) second argument ”h]”(jÊ)�”}”(hŒ ``int flags``”h]”jÐ)�”}”(hj\ûh]”hŒ int flags”…”�”}”(hj^ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjZûubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´MhjVûubjæ)�”}”(hhh]”hÌ)�”}”(hŒ-open flags as per the open(2) second argument”h]”hŒ-open flags as per the open(2) second argument”…”�”}”(hjuûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jqûh´Mhjrûubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjVûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jqûh´MhjûubjÄ)�”}”(hŒG``umode_t mode`` mode for the new file if O_CREAT is set, else ignored ”h]”(jÊ)�”}”(hŒ``umode_t mode``”h]”jÐ)�”}”(hj•ûh]”hŒ umode_t mode”…”�”}”(hj—ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj“ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´M€hj�ûubjæ)�”}”(hhh]”hÌ)�”}”(hŒ5mode for the new file if O_CREAT is set, else ignored”h]”hŒ5mode for the new file if O_CREAT is set, else ignored”…”�”}”(hj®ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jªûh´M€hj«ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj�ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jªûh´M€hjûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjþúubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÐûh]”hŒ Description”…”�”}”(hjÒûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÎûubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´M‚hjþúubhÌ)�”}”(hŒŸThis is the helper to open a file from kernelspace if you really have to. But in generally you should not do this, so please move along, nothing to see here..”h]”hŒŸThis is the helper to open a file from kernelspace if you really have to. But in generally you should not do this, so please move along, nothing to see here..”…”�”}”(hjæûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´M�hjþúubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbio_reset (C function)”Œ c.bio_reset”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒJvoid bio_reset (struct bio *bio, struct block_device *bdev, blk_opf_t opf)”h]”j)�”}”(hŒIvoid bio_reset(struct bio *bio, struct block_device *bdev, blk_opf_t opf)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjüh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$üh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjüh²hh³j#üh´MubjC)�”}”(hŒ bio_reset”h]”jI)�”}”(hŒ bio_reset”h]”hŒ bio_reset”…”�”}”(hj6üh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj2üubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjüh²hh³j#üh´Mubj=)�”}”(hŒ;(struct bio *bio, struct block_device *bdev, blk_opf_t opf)”h]”(jC)�”}”(hŒstruct bio *bio”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjRüh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjNüubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_üh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjNüubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjpüh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjmüubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jrüŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj8üsbŒ c.bio_reset”†”asbuh1hhjNüubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�üh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjNüubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjžüh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjNüubjI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hj«üh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjNüubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjJüubjC)�”}”(hŒstruct block_device *bdev”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÄüh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÀüubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑüh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÀüubh)�”}”(hhh]”jI)�”}”(hŒ block_device”h]”hŒ block_device”…”�”}”(hjâüh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjßüubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jäüŒmodname”NŒ classname”Njj )�”}”j ]”jŒüŒ c.bio_reset”†”asbuh1hhjÀüubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÀüubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÀüubjI)�”}”(hŒbdev”h]”hŒbdev”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÀüubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjJüubjC)�”}”(hŒ blk_opf_t opf”h]”(h)�”}”(hhh]”jI)�”}”(hŒ blk_opf_t”h]”hŒ blk_opf_t”…”�”}”(hj7ýh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj4ýubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j9ýŒmodname”NŒ classname”Njj )�”}”j ]”jŒüŒ c.bio_reset”†”asbuh1hhj0ýubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUýh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj0ýubjI)�”}”(hŒopf”h]”hŒopf”…”�”}”(hjcýh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj0ýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjJüubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjüh²hh³j#üh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj üh²hh³j#üh´Mubah}”(h]”jüah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j#üh´Mhj üh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒreinitialize a bio”h]”hŒreinitialize a bio”…”�”}”(hj�ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MhjŠýh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj üh²hh³j#üh´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j¥ýjšj¥ýj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX¯**Parameters** ``struct bio *bio`` bio to reset ``struct block_device *bdev`` block device to use the bio for ``blk_opf_t opf`` operation and flags for bio **Description** After calling bio_reset(), **bio** will be in the same state as a freshly allocated bio returned bio bio_alloc_bioset() - the only fields that are preserved are the ones that are initialized by bio_alloc_bioset(). See comment in struct bio.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj¯ýh]”hŒ Parameters”…”�”}”(hj±ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj­ýubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M hj©ýubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ!``struct bio *bio`` bio to reset ”h]”(jÊ)�”}”(hŒ``struct bio *bio``”h]”jÐ)�”}”(hjÎýh]”hŒstruct bio *bio”…”�”}”(hjÐýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÌýubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MhjÈýubjæ)�”}”(hhh]”hÌ)�”}”(hŒ bio to reset”h]”hŒ bio to reset”…”�”}”(hjçýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jãýh´Mhjäýubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÈýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jãýh´MhjÅýubjÄ)�”}”(hŒ>``struct block_device *bdev`` block device to use the bio for ”h]”(jÊ)�”}”(hŒ``struct block_device *bdev``”h]”jÐ)�”}”(hjþh]”hŒstruct block_device *bdev”…”�”}”(hj þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M hjþubjæ)�”}”(hhh]”hÌ)�”}”(hŒblock device to use the bio for”h]”hŒblock device to use the bio for”…”�”}”(hj þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jþh´M hjþubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjþubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jþh´M hjÅýubjÄ)�”}”(hŒ.``blk_opf_t opf`` operation and flags for bio ”h]”(jÊ)�”}”(hŒ``blk_opf_t opf``”h]”jÐ)�”}”(hj@þh]”hŒ blk_opf_t opf”…”�”}”(hjBþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj>þubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M hj:þubjæ)�”}”(hhh]”hÌ)�”}”(hŒoperation and flags for bio”h]”hŒoperation and flags for bio”…”�”}”(hjYþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jUþh´M hjVþubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj:þubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jUþh´M hjÅýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj©ýubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj{þh]”hŒ Description”…”�”}”(hj}þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjyþubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M hj©ýubjÁ™)�”}”(hŒðAfter calling bio_reset(), **bio** will be in the same state as a freshly allocated bio returned bio bio_alloc_bioset() - the only fields that are preserved are the ones that are initialized by bio_alloc_bioset(). See comment in struct bio.”h]”hÌ)�”}”(hŒðAfter calling bio_reset(), **bio** will be in the same state as a freshly allocated bio returned bio bio_alloc_bioset() - the only fields that are preserved are the ones that are initialized by bio_alloc_bioset(). See comment in struct bio.”h]”(hŒAfter calling bio_reset(), ”…”�”}”(hj•þh²hh³Nh´Nubj©)�”}”(hŒ**bio**”h]”hŒbio”…”�”}”(hj�þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj•þubhŒÎ will be in the same state as a freshly allocated bio returned bio bio_alloc_bioset() - the only fields that are preserved are the ones that are initialized by bio_alloc_bioset(). See comment in struct bio.”…”�”}”(hj•þh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M hj‘þubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀ™h³jµþh´M hj©ýubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbio_reuse (C function)”Œ c.bio_reuse”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ/void bio_reuse (struct bio *bio, blk_opf_t opf)”h]”j)�”}”(hŒ.void bio_reuse(struct bio *bio, blk_opf_t opf)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÜþh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjØþh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M"ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëþh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjØþh²hh³jêþh´M"ubjC)�”}”(hŒ bio_reuse”h]”jI)�”}”(hŒ bio_reuse”h]”hŒ bio_reuse”…”�”}”(hjýþh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjùþubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjØþh²hh³jêþh´M"ubj=)�”}”(hŒ (struct bio *bio, blk_opf_t opf)”h]”(jC)�”}”(hŒstruct bio *bio”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÿubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&ÿh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÿubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hj7ÿh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj4ÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j9ÿŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÿþsbŒ c.bio_reuse”†”asbuh1hhjÿubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWÿh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÿubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjeÿh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÿubjI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjrÿh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÿubjC)�”}”(hŒ blk_opf_t opf”h]”(h)�”}”(hhh]”jI)�”}”(hŒ blk_opf_t”h]”hŒ blk_opf_t”…”�”}”(hjŽÿh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‹ÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j�ÿŒmodname”NŒ classname”Njj )�”}”j ]”jSÿŒ c.bio_reuse”†”asbuh1hhj‡ÿubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬ÿh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‡ÿubjI)�”}”(hŒopf”h]”hŒopf”…”�”}”(hjºÿh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‡ÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÿubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjØþh²hh³jêþh´M"ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÔþh²hh³jêþh´M"ubah}”(h]”jÏþah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jêþh´M"hjÑþh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ(reuse a bio with the payload left intact”h]”hŒ(reuse a bio with the payload left intact”…”�”}”(hjäÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M"hjáÿh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÑþh²hh³jêþh´M"ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jüÿjšjüÿj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXc**Parameters** ``struct bio *bio`` bio to reuse ``blk_opf_t opf`` operation and flags for the next I/O **Description** Allow reusing an existing bio for another operation with all set up fields including the payload, device and end_io handler left intact. Typically used when **bio** is first used to read data which is then written to another location without modification. **bio** must not be in-flight and owned by the caller. Can't be used for cloned bios. **Note** Can't be used when **bio** has integrity or blk-crypto contexts for now. Feel free to add that support when you need it, though.”•h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M&hjubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ!``struct bio *bio`` bio to reuse ”h]”(jÊ)�”}”(hŒ``struct bio *bio``”h]”jÐ)�”}”(hj%h]”hŒstruct bio *bio”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M#hjubjæ)�”}”(hhh]”hÌ)�”}”(hŒ bio to reuse”h]”hŒ bio to reuse”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j:h´M#hj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j:h´M#hjubjÄ)�”}”(hŒ7``blk_opf_t opf`` operation and flags for the next I/O ”h]”(jÊ)�”}”(hŒ``blk_opf_t opf``”h]”jÐ)�”}”(hj^h]”hŒ blk_opf_t opf”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M$hjXubjæ)�”}”(hhh]”hÌ)�”}”(hŒ$operation and flags for the next I/O”h]”hŒ$operation and flags for the next I/O”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jsh´M$hjtubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjXubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jsh´M$hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj™h]”hŒ Description”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M&hjubhÌ)�”}”(hŒˆAllow reusing an existing bio for another operation with all set up fields including the payload, device and end_io handler left intact.”h]”hŒˆAllow reusing an existing bio for another operation with all set up fields including the payload, device and end_io handler left intact.”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M%hjubhÌ)�”}”(hŒÎTypically used when **bio** is first used to read data which is then written to another location without modification. **bio** must not be in-flight and owned by the caller. Can't be used for cloned bios.”h]”(hŒTypically used when ”…”�”}”(hj¾h²hh³Nh´Nubj©)�”}”(hŒ**bio**”h]”hŒbio”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¾ubhŒ] is first used to read data which is then written to another location without modification. ”…”�”}”(hj¾h²hh³Nh´Nubj©)�”}”(hŒ**bio**”h]”hŒbio”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¾ubhŒQ must not be in-flight and owned by the caller. Can’t be used for cloned bios.”…”�”}”(hj¾h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M(hjubhÌ)�”}”(hŒ**Note**”h]”j©)�”}”(hjóh]”hŒNote”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjñubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M,hjubhÌ)�”}”(hŒ€Can't be used when **bio** has integrity or blk-crypto contexts for now. Feel free to add that support when you need it, though.”h]”(hŒCan’t be used when ”…”�”}”(hj h²hh³Nh´Nubj©)�”}”(hŒ**bio**”h]”hŒbio”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj ubhŒf has integrity or blk-crypto contexts for now. Feel free to add that support when you need it, though.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M-hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ bio_prepare_reissue (C function)”Œc.bio_prepare_reissue”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒEvoid bio_prepare_reissue (struct bio *bio, struct block_device *bdev)”h]”j)�”}”(hŒDvoid bio_prepare_reissue(struct bio *bio, struct block_device *bdev)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjFh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MDubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjFh²hh³jXh´MDubjC)�”}”(hŒbio_prepare_reissue”h]”jI)�”}”(hŒbio_prepare_reissue”h]”hŒbio_prepare_reissue”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjgubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjFh²hh³jXh´MDubj=)�”}”(hŒ,(struct bio *bio, struct block_device *bdev)”h]”(jC)�”}”(hŒstruct bio *bio”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjƒubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjƒubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¢ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j§Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjmsbŒc.bio_prepare_reissue”†”asbuh1hhjƒubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjƒubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjƒubjI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjƒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjubjC)�”}”(hŒstruct block_device *bdev”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjõubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjõubh)�”}”(hhh]”jI)�”}”(hŒ block_device”h]”hŒ block_device”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jŒmodname”NŒ classname”Njj )�”}”j ]”jÁŒc.bio_prepare_reissue”†”asbuh1hhjõubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjõubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjõubjI)�”}”(hŒbdev”h]”hŒbdev”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjõubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjFh²hh³jXh´MDubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjBh²hh³jXh´MDubah}”(h]”j=ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jXh´MDhj?h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ,prepare a bio for reuissing the original I/O”h]”hŒ,prepare a bio for reuissing the original I/O”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MDhjwh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj?h²hh³jXh´MDubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j’jšj’j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX**Parameters** ``struct bio *bio`` bio to reuse ``struct block_device *bdev`` block device to use the bio for **Description** Prepare **bio** to be resubmitted to retry the original operation. The caller must reset bio->bi_iter to the original state.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjœh]”hŒ Parameters”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjšubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MHhj–ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ!``struct bio *bio`` bio to reuse ”h]”(jÊ)�”}”(hŒ``struct bio *bio``”h]”jÐ)�”}”(hj»h]”hŒstruct bio *bio”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MEhjµubjæ)�”}”(hhh]”hÌ)�”}”(hŒ bio to reuse”h]”hŒ bio to reuse”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÐh´MEhjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjµubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÐh´MEhj²ubjÄ)�”}”(hŒ>``struct block_device *bdev`` block device to use the bio for ”h]”(jÊ)�”}”(hŒ``struct block_device *bdev``”h]”jÐ)�”}”(hjôh]”hŒstruct block_device *bdev”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjòubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MFhjîubjæ)�”}”(hhh]”hÌ)�”}”(hŒblock device to use the bio for”h]”hŒblock device to use the bio for”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j h´MFhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjîubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j h´MFhj²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj–ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj/h]”hŒ Description”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MHhj–ubhÌ)�”}”(hŒ|Prepare **bio** to be resubmitted to retry the original operation. The caller must reset bio->bi_iter to the original state.”h]”(hŒPrepare ”…”�”}”(hjEh²hh³Nh´Nubj©)�”}”(hŒ**bio**”h]”hŒbio”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjEubhŒm to be resubmitted to retry the original operation. The caller must reset bio->bi_iter to the original state.”…”�”}”(hjEh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MGhj–ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbio_chain (C function)”Œ c.bio_chain”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ4void bio_chain (struct bio *bio, struct bio *parent)”h]”j)�”}”(hŒ3void bio_chain(struct bio *bio, struct bio *parent)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj‚h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mkubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‚h²hh³j”h´MkubjC)�”}”(hŒ bio_chain”h]”jI)�”}”(hŒ bio_chain”h]”hŒ bio_chain”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj£ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj‚h²hh³j”h´Mkubj=)�”}”(hŒ%(struct bio *bio, struct bio *parent)”h]”(jC)�”}”(hŒstruct bio *bio”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¿ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¿ubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÞubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jãŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj©sbŒ c.bio_chain”†”asbuh1hhj¿ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¿ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¿ubjI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¿ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj»ubjC)�”}”(hŒstruct bio *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj1ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj1ubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjPubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jUŒmodname”NŒ classname”Njj )�”}”j ]”jýŒ c.bio_chain”†”asbuh1hhj1ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj1ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj1ubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj»ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj‚h²hh³j”h´Mkubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj~h²hh³j”h´Mkubah}”(h]”jyah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j”h´Mkhj{h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒchain bio completions”h]”hŒchain bio completions”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mkhj³h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj{h²hh³j”h´Mkubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÎjšjÎj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX‘**Parameters** ``struct bio *bio`` the target bio ``struct bio *parent`` the parent bio of **bio** **Description** The caller won't have a bi_end_io called when **bio** completes - instead, **parent**'s bi_end_io won't be called until both **parent** and **bio** have completed; the chained bio will also be freed when it completes. The caller must not set bi_private or bi_end_io in **bio**.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjØh]”hŒ Parameters”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MohjÒubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ#``struct bio *bio`` the target bio ”h]”(jÊ)�”}”(hŒ``struct bio *bio``”h]”jÐ)�”}”(hj÷h]”hŒstruct bio *bio”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjõubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mlhjñubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe target bio”h]”hŒthe target bio”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j h´Mlhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j h´MlhjîubjÄ)�”}”(hŒ1``struct bio *parent`` the parent bio of **bio** ”h]”(jÊ)�”}”(hŒ``struct bio *parent``”h]”jÐ)�”}”(hj0h]”hŒstruct bio *parent”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mmhj*ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe parent bio of **bio**”h]”(hŒthe parent bio of ”…”�”}”(hjIh²hh³Nh´Nubj©)�”}”(hŒ**bio**”h]”hŒbio”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjIubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jEh´MmhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jEh´Mmhjîubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÒubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjyh]”hŒ Description”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjwubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MohjÒubhÌ)�”}”(hŒÙThe caller won't have a bi_end_io called when **bio** completes - instead, **parent**'s bi_end_io won't be called until both **parent** and **bio** have completed; the chained bio will also be freed when it completes.”h]”(hŒ0The caller won’t have a bi_end_io called when ”…”�”}”(hj�h²hh³Nh´Nubj©)�”}”(hŒ**bio**”h]”hŒbio”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj�ubhŒ completes - instead, ”…”�”}”(hj�h²hh³Nh´Nubj©)�”}”(hŒ **parent**”h]”hŒparent”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj�ubhŒ,’s bi_end_io won’t be called until both ”…”�”}”(hj�h²hh³Nh´Nubj©)�”}”(hŒ **parent**”h]”hŒparent”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj�ubhŒ and ”…”�”}”(hj�h²hh³Nh´Nubj©)�”}”(hŒ**bio**”h]”hŒbio”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj�ubhŒF have completed; the chained bio will also be freed when it completes.”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MnhjÒubhÌ)�”}”(hŒ;The caller must not set bi_private or bi_end_io in **bio**.”h]”(hŒ3The caller must not set bi_private or bi_end_io in ”…”�”}”(hjæh²hh³Nh´Nubj©)�”}”(hŒ**bio**”h]”hŒbio”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjæubhŒ.”…”�”}”(hjæh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MrhjÒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbio_alloc_bioset (C function)”Œc.bio_alloc_bioset”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒstruct bio * bio_alloc_bioset (struct block_device *bdev, unsigned short nr_vecs, blk_opf_t opf, gfp_t gfp, struct bio_set *bs)”h]”j)�”}”(hŒ}struct bio *bio_alloc_bioset(struct block_device *bdev, unsigned short nr_vecs, blk_opf_t opf, gfp_t gfp, struct bio_set *bs)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj#h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj#h²hh³j4h´M ubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjCubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jHŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒbio_alloc_bioset”sbŒc.bio_alloc_bioset”†”asbuh1hhj#h²hh³j4h´M ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj#h²hh³j4h´M ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj#h²hh³j4h´M ubjC)�”}”(hŒbio_alloc_bioset”h]”jI)�”}”(hjdh]”hŒbio_alloc_bioset”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‚ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj#h²hh³j4h´M ubj=)�”}”(hŒa(struct block_device *bdev, unsigned short nr_vecs, blk_opf_t opf, gfp_t gfp, struct bio_set *bs)”h]”(jC)�”}”(hŒstruct block_device *bdev”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�ubh)�”}”(hhh]”jI)�”}”(hŒ block_device”h]”hŒ block_device”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¼ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÁŒmodname”NŒ classname”Njj )�”}”j ]”jbŒc.bio_alloc_bioset”†”asbuh1hhj�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj�ubjI)�”}”(hŒbdev”h]”hŒbdev”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj™ubjC)�”}”(hŒunsigned short nr_vecs”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ubj�)�”}”(hŒshort”h]”hŒshort”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ubjI)�”}”(hŒnr_vecs”h]”hŒnr_vecs”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj™ubjC)�”}”(hŒ blk_opf_t opf”h]”(h)�”}”(hhh]”jI)�”}”(hŒ blk_opf_t”h]”hŒ blk_opf_t”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjbubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jgŒmodname”NŒ classname”Njj )�”}”j ]”jbŒc.bio_alloc_bioset”†”asbuh1hhj^ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj^ubjI)�”}”(hŒopf”h]”hŒopf”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj™ubjC)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”jI)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjªubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¯Œmodname”NŒ classname”Njj )�”}”j ]”jbŒc.bio_alloc_bioset”†”asbuh1hhj¦ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¦ubjI)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj™ubjC)�”}”(hŒstruct bio_set *bs”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjîubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjîubh)�”}”(hhh]”jI)�”}”(hŒbio_set”h]”hŒbio_set”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jŒmodname”NŒ classname”Njj )�”}”j ]”jbŒc.bio_alloc_bioset”†”asbuh1hhjîubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjîubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjîubjI)�”}”(hŒbs”h]”hŒbs”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjîubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj™ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj#h²hh³j4h´M ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjh²hh³j4h´M ubah}”(h]”jah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j4h´M hjh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒallocate a bio for I/O”h]”hŒallocate a bio for I/O”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M hjph²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjh²hh³j4h´M ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j‹jšj‹j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX **Parameters** ``struct block_device *bdev`` block device to allocate the bio for (can be ``NULL``) ``unsigned short nr_vecs`` number of bvecs to pre-allocate ``blk_opf_t opf`` operation and flags for bio ``gfp_t gfp`` the GFP_* mask given to the slab allocator ``struct bio_set *bs`` the bio_set to allocate from. **Description** Allocate a bio from the mempools in **bs**. If ``__GFP_DIRECT_RECLAIM`` is set then bio_alloc will always be able to allocate a bio. This is due to the mempool guarantees. To make this work, callers must never allocate more than 1 bio at a time from the general pool. Callers that need to allocate more than 1 bio must always submit the previously allocated bio for IO before attempting to allocate a new one. Failure to do so can cause deadlocks under memory pressure. Note that when running under submit_bio_noacct() (i.e. any block driver), bios are not submitted until after you return - see the code in submit_bio_noacct() that converts recursion into iteration, to prevent stack overflows. This would normally mean allocating multiple bios under submit_bio_noacct() would be susceptible to deadlocks, but we have deadlock avoidance code that resubmits any blocked bios from a rescuer thread. However, we do not guarantee forward progress for allocations from other mempools. Doing multiple allocations from the same mempool under submit_bio_noacct() should be avoided - instead, use bio_set's front_pad for per bio allocations. **Return** Pointer to new bio on success, NULL on failure.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj•h]”hŒ Parameters”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mhj�ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒU``struct block_device *bdev`` block device to allocate the bio for (can be ``NULL``) ”h]”(jÊ)�”}”(hŒ``struct block_device *bdev``”h]”jÐ)�”}”(hj´h]”hŒstruct block_device *bdev”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M hj®ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ6block device to allocate the bio for (can be ``NULL``)”h]”(hŒ-block device to allocate the bio for (can be ”…”�”}”(hjÍh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÍubhŒ)”…”�”}”(hjÍh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÉh´M hjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÉh´M hj«ubjÄ)�”}”(hŒ;``unsigned short nr_vecs`` number of bvecs to pre-allocate ”h]”(jÊ)�”}”(hŒ``unsigned short nr_vecs``”h]”jÐ)�”}”(hjÿh]”hŒunsigned short nr_vecs”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjýubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M hjùubjæ)�”}”(hhh]”hÌ)�”}”(hŒnumber of bvecs to pre-allocate”h]”hŒnumber of bvecs to pre-allocate”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j h´M hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j h´M hj«ubjÄ)�”}”(hŒ.``blk_opf_t opf`` operation and flags for bio ”h]”(jÊ)�”}”(hŒ``blk_opf_t opf``”h]”jÐ)�”}”(hj8 h]”hŒ blk_opf_t opf”…”�”}”(hj: h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj6 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M hj2 ubjæ)�”}”(hhh]”hÌ)�”}”(hŒoperation and flags for bio”h]”hŒoperation and flags for bio”…”�”}”(hjQ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jM h´M hjN ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj2 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jM h´M hj«ubjÄ)�”}”(hŒ9``gfp_t gfp`` the GFP_* mask given to the slab allocator ”h]”(jÊ)�”}”(hŒ ``gfp_t gfp``”h]”jÐ)�”}”(hjq h]”hŒ gfp_t gfp”…”�”}”(hjs h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjo ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mhjk ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ*the GFP_* mask given to the slab allocator”h]”hŒ*the GFP_* mask given to the slab allocator”…”�”}”(hjŠ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j† h´Mhj‡ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjk ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j† h´Mhj«ubjÄ)�”}”(hŒ5``struct bio_set *bs`` the bio_set to allocate from. ”h]”(jÊ)�”}”(hŒ``struct bio_set *bs``”h]”jÐ)�”}”(hjª h]”hŒstruct bio_set *bs”…”�”}”(hj¬ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¨ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mhj¤ ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe bio_set to allocate from.”h]”hŒthe bio_set to allocate from.”…”�”}”(hjà h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¿ h´MhjÀ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¤ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¿ h´Mhj«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj�ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjå h]”hŒ Description”…”�”}”(hjç h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjã ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mhj�ubhÌ)�”}”(hŒ+Allocate a bio from the mempools in **bs**.”h]”(hŒ$Allocate a bio from the mempools in ”…”�”}”(hjû h²hh³Nh´Nubj©)�”}”(hŒ**bs**”h]”hŒbs”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjû ubhŒ.”…”�”}”(hjû h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mhj�ubhÌ)�”}”(hX«If ``__GFP_DIRECT_RECLAIM`` is set then bio_alloc will always be able to allocate a bio. This is due to the mempool guarantees. To make this work, callers must never allocate more than 1 bio at a time from the general pool. Callers that need to allocate more than 1 bio must always submit the previously allocated bio for IO before attempting to allocate a new one. Failure to do so can cause deadlocks under memory pressure.”h]”(hŒIf ”…”�”}”(hj h²hh³Nh´NubjÐ)�”}”(hŒ``__GFP_DIRECT_RECLAIM``”h]”hŒ__GFP_DIRECT_RECLAIM”…”�”}”(hj$ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj ubhX� is set then bio_alloc will always be able to allocate a bio. This is due to the mempool guarantees. To make this work, callers must never allocate more than 1 bio at a time from the general pool. Callers that need to allocate more than 1 bio must always submit the previously allocated bio for IO before attempting to allocate a new one. Failure to do so can cause deadlocks under memory pressure.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mhj�ubhÌ)�”}”(hŒáNote that when running under submit_bio_noacct() (i.e. any block driver), bios are not submitted until after you return - see the code in submit_bio_noacct() that converts recursion into iteration, to prevent stack overflows.”h]”hŒáNote that when running under submit_bio_noacct() (i.e. any block driver), bios are not submitted until after you return - see the code in submit_bio_noacct() that converts recursion into iteration, to prevent stack overflows.”…”�”}”(hj= h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mhj�ubhÌ)�”}”(hŒÉThis would normally mean allocating multiple bios under submit_bio_noacct() would be susceptible to deadlocks, but we have deadlock avoidance code that resubmits any blocked bios from a rescuer thread.”h]”hŒÉThis would normally mean allocating multiple bios under submit_bio_noacct() would be susceptible to deadlocks, but we have deadlock avoidance code that resubmits any blocked bios from a rescuer thread.”…”�”}”(hjL h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mhj�ubhÌ)�”}”(hŒëHowever, we do not guarantee forward progress for allocations from other mempools. Doing multiple allocations from the same mempool under submit_bio_noacct() should be avoided - instead, use bio_set's front_pad for per bio allocations.”h]”hŒíHowever, we do not guarantee forward progress for allocations from other mempools. Doing multiple allocations from the same mempool under submit_bio_noacct() should be avoided - instead, use bio_set’s front_pad for per bio allocations.”…”�”}”(hj[ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M#hj�ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjl h]”hŒReturn”…”�”}”(hjn h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M(hj�ubhÌ)�”}”(hŒ/Pointer to new bio on success, NULL on failure.”h]”hŒ/Pointer to new bio on success, NULL on failure.”…”�”}”(hj‚ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M)hj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbio_kmalloc (C function)”Œ c.bio_kmalloc”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒAstruct bio * bio_kmalloc (unsigned short nr_vecs, gfp_t gfp_mask)”h]”j)�”}”(hŒ?struct bio *bio_kmalloc(unsigned short nr_vecs, gfp_t gfp_mask)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj± h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj­ h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M€ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿ h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj­ h²hh³j¾ h´M€ubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjÐ h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÍ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÒ Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒ bio_kmalloc”sbŒ c.bio_kmalloc”†”asbuh1hhj­ h²hh³j¾ h´M€ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj­ h²hh³j¾ h´M€ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÿ h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj­ h²hh³j¾ h´M€ubjC)�”}”(hŒ bio_kmalloc”h]”jI)�”}”(hjî h]”hŒ bio_kmalloc”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj­ h²hh³j¾ h´M€ubj=)�”}”(hŒ((unsigned short nr_vecs, gfp_t gfp_mask)”h]”(jC)�”}”(hŒunsigned short nr_vecs”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj+ h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj' ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9 h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj' ubj�)�”}”(hŒshort”h]”hŒshort”…”�”}”(hjG h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj' ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj' ubjI)�”}”(hŒnr_vecs”h]”hŒnr_vecs”…”�”}”(hjc h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj' ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj# ubjC)�”}”(hŒgfp_t gfp_mask”h]”(h)�”}”(hhh]”jI)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj| ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j� Œmodname”NŒ classname”Njj )�”}”j ]”jì Œ c.bio_kmalloc”†”asbuh1hhjx ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjx ubjI)�”}”(hŒgfp_mask”h]”hŒgfp_mask”…”�”}”(hj« h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjx ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj# ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj­ h²hh³j¾ h´M€ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj© h²hh³j¾ h´M€ubah}”(h]”j¤ ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j¾ h´M€hj¦ h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ kmalloc a bio”h]”hŒ kmalloc a bio”…”�”}”(hjÕ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M€hjÒ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¦ h²hh³j¾ h´M€ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jí jšjí j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXÃ**Parameters** ``unsigned short nr_vecs`` number of bio_vecs to allocate ``gfp_t gfp_mask`` the GFP_* mask given to the slab allocator **Description** Use kmalloc to allocate a bio (including bvecs). The bio must be initialized using bio_init() before use. To free a bio returned from this function use kfree() after calling bio_uninit(). A bio returned from this function can be reused by calling bio_uninit() before calling bio_init() again. Note that unlike bio_alloc() or bio_alloc_bioset() allocations from this function are not backed by a mempool can fail. Do not use this function for allocations in the file system I/O path. **Return** Pointer to new bio on success, NULL on failure.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj÷ h]”hŒ Parameters”…”�”}”(hjù h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjõ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M„hjñ ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ:``unsigned short nr_vecs`` number of bio_vecs to allocate ”h]”(jÊ)�”}”(hŒ``unsigned short nr_vecs``”h]”jÐ)�”}”(hj h]”hŒunsigned short nr_vecs”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M�hj ubjæ)�”}”(hhh]”hÌ)�”}”(hŒnumber of bio_vecs to allocate”h]”hŒnumber of bio_vecs to allocate”…”�”}”(hj/ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j+ h´M�hj, ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j+ h´M�hj ubjÄ)�”}”(hŒ>``gfp_t gfp_mask`` the GFP_* mask given to the slab allocator ”h]”(jÊ)�”}”(hŒ``gfp_t gfp_mask``”h]”jÐ)�”}”(hjO h]”hŒgfp_t gfp_mask”…”�”}”(hjQ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjM ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M‚hjI ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ*the GFP_* mask given to the slab allocator”h]”hŒ*the GFP_* mask given to the slab allocator”…”�”}”(hjh h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jd h´M‚hje ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjI ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jd h´M‚hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjñ ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjŠ h]”hŒ Description”…”�”}”(hjŒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjˆ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M„hjñ ubhÌ)�”}”(hX'Use kmalloc to allocate a bio (including bvecs). The bio must be initialized using bio_init() before use. To free a bio returned from this function use kfree() after calling bio_uninit(). A bio returned from this function can be reused by calling bio_uninit() before calling bio_init() again.”h]”hX'Use kmalloc to allocate a bio (including bvecs). The bio must be initialized using bio_init() before use. To free a bio returned from this function use kfree() after calling bio_uninit(). A bio returned from this function can be reused by calling bio_uninit() before calling bio_init() again.”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mƒhjñ ubhÌ)�”}”(hŒ¾Note that unlike bio_alloc() or bio_alloc_bioset() allocations from this function are not backed by a mempool can fail. Do not use this function for allocations in the file system I/O path.”h]”hŒ¾Note that unlike bio_alloc() or bio_alloc_bioset() allocations from this function are not backed by a mempool can fail. Do not use this function for allocations in the file system I/O path.”…”�”}”(hj¯ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mˆhjñ ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjÀ h]”hŒReturn”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¾ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MŒhjñ ubhÌ)�”}”(hŒ/Pointer to new bio on success, NULL on failure.”h]”hŒ/Pointer to new bio on success, NULL on failure.”…”�”}”(hjÖ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M�hjñ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbio_put (C function)”Œ c.bio_put”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒvoid bio_put (struct bio *bio)”h]”j)�”}”(hŒvoid bio_put(struct bio *bio)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MWubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj h²hh³j h´MWubjC)�”}”(hŒbio_put”h]”jI)�”}”(hŒbio_put”h]”hŒbio_put”…”�”}”(hj& h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj" ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj h²hh³j h´MWubj=)�”}”(hŒ(struct bio *bio)”h]”jC)�”}”(hŒstruct bio *bio”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj> ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj> ubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hj` h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj] ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jb Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj( sbŒ c.bio_put”†”asbuh1hhj> ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€ h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj> ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj> ubjI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj> ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj: ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj h²hh³j h´MWubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjý h²hh³j h´MWubah}”(h]”jø ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j h´MWhjú h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒrelease a reference to a bio”h]”hŒrelease a reference to a bio”…”�”}”(hjÅ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MWhj h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjú h²hh³j h´MWubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÝ jšjÝ j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hŒï**Parameters** ``struct bio *bio`` bio to release reference to **Description** Put a reference to a :c:type:`struct bio `, either one you have gotten with bio_alloc, bio_get or bio_clone_*. The last put of a bio will free it.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjç h]”hŒ Parameters”…”�”}”(hjé h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjå ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M[hjá ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ0``struct bio *bio`` bio to release reference to ”h]”(jÊ)�”}”(hŒ``struct bio *bio``”h]”jÐ)�”}”(hjh]”hŒstruct bio *bio”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MXhjubjæ)�”}”(hhh]”hÌ)�”}”(hŒbio to release reference to”h]”hŒbio to release reference to”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´MXhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jh´MXhjý ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjá ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjAh]”hŒ Description”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MZhjá ubjÁ™)�”}”(hŒ—Put a reference to a :c:type:`struct bio `, either one you have gotten with bio_alloc, bio_get or bio_clone_*. The last put of a bio will free it.”h]”hÌ)�”}”(hŒ—Put a reference to a :c:type:`struct bio `, either one you have gotten with bio_alloc, bio_get or bio_clone_*. The last put of a bio will free it.”h]”(hŒPut a reference to a ”…”�”}”(hj[h²hh³Nh´Nubh)�”}”(hŒ:c:type:`struct bio `”h]”jÐ)�”}”(hjeh]”hŒ struct bio”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”(jÌj“Œc-type”eh"]”h$]”h&]”uh1jÏhjcubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jØŒ refdomain”j“Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jjÞjáŒbio”uh1hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MZhj[ubhŒh, either one you have gotten with bio_alloc, bio_get or bio_clone_*. The last put of a bio will free it.”…”�”}”(hj[h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‚h´MZhjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀ™h³j‚h´MZhjá ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbio_alloc_clone (C function)”Œc.bio_alloc_clone”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒlstruct bio * bio_alloc_clone (struct block_device *bdev, struct bio *bio_src, gfp_t gfp, struct bio_set *bs)”h]”j)�”}”(hŒjstruct bio *bio_alloc_clone(struct block_device *bdev, struct bio *bio_src, gfp_t gfp, struct bio_set *bs)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¯h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MŠubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¯h²hh³jÀh´MŠubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÏubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÔŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒbio_alloc_clone”sbŒc.bio_alloc_clone”†”asbuh1hhj¯h²hh³jÀh´MŠubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¯h²hh³jÀh´MŠubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¯h²hh³jÀh´MŠubjC)�”}”(hŒbio_alloc_clone”h]”jI)�”}”(hjðh]”hŒbio_alloc_clone”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj¯h²hh³jÀh´MŠubj=)�”}”(hŒO(struct block_device *bdev, struct bio *bio_src, gfp_t gfp, struct bio_set *bs)”h]”(jC)�”}”(hŒstruct block_device *bdev”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj)ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj)ubh)�”}”(hhh]”jI)�”}”(hŒ block_device”h]”hŒ block_device”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjHubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jMŒmodname”NŒ classname”Njj )�”}”j ]”jîŒc.bio_alloc_clone”†”asbuh1hhj)ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj)ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj)ubjI)�”}”(hŒbdev”h]”hŒbdev”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj%ubjC)�”}”(hŒstruct bio *bio_src”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj™ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj™ubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¸ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j½Œmodname”NŒ classname”Njj )�”}”j ]”jîŒc.bio_alloc_clone”†”asbuh1hhj™ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj™ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj™ubjI)�”}”(hŒbio_src”h]”hŒbio_src”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj%ubjC)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”jI)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jŒmodname”NŒ classname”Njj )�”}”j ]”jîŒc.bio_alloc_clone”†”asbuh1hhj ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ubjI)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj%ubjC)�”}”(hŒstruct bio_set *bs”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjQubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjQubh)�”}”(hhh]”jI)�”}”(hŒbio_set”h]”hŒbio_set”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjpubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”juŒmodname”NŒ classname”Njj )�”}”j ]”jîŒc.bio_alloc_clone”†”asbuh1hhjQubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjQubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjQubjI)�”}”(hŒbs”h]”hŒbs”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj%ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj¯h²hh³jÀh´MŠubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj«h²hh³jÀh´MŠubah}”(h]”j¦ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÀh´MŠhj¨h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ1clone a bio that shares the original bio's biovec”h]”hŒ3clone a bio that shares the original bio’s biovec”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MŠhjÓh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¨h²hh³jÀh´MŠubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jîjšjîj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX&**Parameters** ``struct block_device *bdev`` block_device to clone onto ``struct bio *bio_src`` bio to clone from ``gfp_t gfp`` allocation priority ``struct bio_set *bs`` bio_set to allocate from **Description** Allocate a new bio that is a clone of **bio_src**. This reuses the bio_vecs pointed to by **bio_src->bi_io_vec**, and clones the iterator pointing to the current position in it. The caller owns the returned bio, but not the bio_vecs, and must ensure the bio is freed before the memory pointed to by **bio_Src->bi_io_vecs**.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjøh]”hŒ Parameters”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjöubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MŽhjòubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ9``struct block_device *bdev`` block_device to clone onto ”h]”(jÊ)�”}”(hŒ``struct block_device *bdev``”h]”jÐ)�”}”(hjh]”hŒstruct block_device *bdev”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M‹hjubjæ)�”}”(hhh]”hÌ)�”}”(hŒblock_device to clone onto”h]”hŒblock_device to clone onto”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j,h´M‹hj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j,h´M‹hjubjÄ)�”}”(hŒ*``struct bio *bio_src`` bio to clone from ”h]”(jÊ)�”}”(hŒ``struct bio *bio_src``”h]”jÐ)�”}”(hjPh]”hŒstruct bio *bio_src”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MŒhjJubjæ)�”}”(hhh]”hÌ)�”}”(hŒbio to clone from”h]”hŒbio to clone from”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jeh´MŒhjfubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jeh´MŒhjubjÄ)�”}”(hŒ"``gfp_t gfp`` allocation priority ”h]”(jÊ)�”}”(hŒ ``gfp_t gfp``”h]”jÐ)�”}”(hj‰h]”hŒ gfp_t gfp”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M�hjƒubjæ)�”}”(hhh]”hÌ)�”}”(hŒallocation priority”h]”hŒallocation priority”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jžh´M�hjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jžh´M�hjubjÄ)�”}”(hŒ0``struct bio_set *bs`` bio_set to allocate from ”h]”(jÊ)�”}”(hŒ``struct bio_set *bs``”h]”jÐ)�”}”(hjÂh]”hŒstruct bio_set *bs”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MŽhj¼ubjæ)�”}”(hhh]”hÌ)�”}”(hŒbio_set to allocate from”h]”hŒbio_set to allocate from”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j×h´MŽhjØubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j×h´MŽhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjòubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjýh]”hŒ Description”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjûubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M�hjòubhÌ)�”}”(hXDAllocate a new bio that is a clone of **bio_src**. This reuses the bio_vecs pointed to by **bio_src->bi_io_vec**, and clones the iterator pointing to the current position in it. The caller owns the returned bio, but not the bio_vecs, and must ensure the bio is freed before the memory pointed to by **bio_Src->bi_io_vecs**.”h]”(hŒ&Allocate a new bio that is a clone of ”…”�”}”(hjh²hh³Nh´Nubj©)�”}”(hŒ **bio_src**”h]”hŒbio_src”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjubhŒ). This reuses the bio_vecs pointed to by ”…”�”}”(hjh²hh³Nh´Nubj©)�”}”(hŒ**bio_src->bi_io_vec**”h]”hŒbio_src->bi_io_vec”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjubhŒ¼, and clones the iterator pointing to the current position in it. The caller owns the returned bio, but not the bio_vecs, and must ensure the bio is freed before the memory pointed to by ”…”�”}”(hjh²hh³Nh´Nubj©)�”}”(hŒ**bio_Src->bi_io_vecs**”h]”hŒbio_Src->bi_io_vecs”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjubhŒ.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M�hjòubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbio_init_clone (C function)”Œc.bio_init_clone”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ_int bio_init_clone (struct block_device *bdev, struct bio *bio, struct bio *bio_src, gfp_t gfp)”h]”j)�”}”(hŒ^int bio_init_clone(struct block_device *bdev, struct bio *bio, struct bio *bio_src, gfp_t gfp)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjth²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M¨ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjth²hh³j†h´M¨ubjC)�”}”(hŒbio_init_clone”h]”jI)�”}”(hŒbio_init_clone”h]”hŒbio_init_clone”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj•ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjth²hh³j†h´M¨ubj=)�”}”(hŒL(struct block_device *bdev, struct bio *bio, struct bio *bio_src, gfp_t gfp)”h]”(jC)�”}”(hŒstruct block_device *bdev”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj±ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj±ubh)�”}”(hhh]”jI)�”}”(hŒ block_device”h]”hŒ block_device”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÐubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÕŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj›sbŒc.bio_init_clone”†”asbuh1hhj±ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj±ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj±ubjI)�”}”(hŒbdev”h]”hŒbdev”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj±ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj­ubjC)�”}”(hŒstruct bio *bio”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj#ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj#ubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjBubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jGŒmodname”NŒ classname”Njj )�”}”j ]”jïŒc.bio_init_clone”†”asbuh1hhj#ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj#ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj#ubjI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj­ubjC)�”}”(hŒstruct bio *bio_src”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj“ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj“ubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj²ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j·Œmodname”NŒ classname”Njj )�”}”j ]”jïŒc.bio_init_clone”†”asbuh1hhj“ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj“ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj“ubjI)�”}”(hŒbio_src”h]”hŒbio_src”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj­ubjC)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”jI)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j Œmodname”NŒ classname”Njj )�”}”j ]”jïŒc.bio_init_clone”†”asbuh1hhjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjubjI)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj­ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjth²hh³j†h´M¨ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjph²hh³j†h´M¨ubah}”(h]”jkah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j†h´M¨hjmh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ1clone a bio that shares the original bio's biovec”h]”hŒ3clone a bio that shares the original bio’s biovec”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M¨hj]h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjmh²hh³j†h´M¨ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jxjšjxj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXq**Parameters** ``struct block_device *bdev`` block_device to clone onto ``struct bio *bio`` bio to clone into ``struct bio *bio_src`` bio to clone from ``gfp_t gfp`` allocation priority **Description** Initialize a new bio in caller provided memory that is a clone of **bio_src**. The same bio_vecs reuse and bio lifetime rules as bio_alloc_clone() apply.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj‚h]”hŒ Parameters”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M¬hj|ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ9``struct block_device *bdev`` block_device to clone onto ”h]”(jÊ)�”}”(hŒ``struct block_device *bdev``”h]”jÐ)�”}”(hj¡h]”hŒstruct block_device *bdev”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M©hj›ubjæ)�”}”(hhh]”hÌ)�”}”(hŒblock_device to clone onto”h]”hŒblock_device to clone onto”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¶h´M©hj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¶h´M©hj˜ubjÄ)�”}”(hŒ&``struct bio *bio`` bio to clone into ”h]”(jÊ)�”}”(hŒ``struct bio *bio``”h]”jÐ)�”}”(hjÚh]”hŒstruct bio *bio”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjØubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MªhjÔubjæ)�”}”(hhh]”hÌ)�”}”(hŒbio to clone into”h]”hŒbio to clone into”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jïh´Mªhjðubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jïh´Mªhj˜ubjÄ)�”}”(hŒ*``struct bio *bio_src`` bio to clone from ”h]”(jÊ)�”}”(hŒ``struct bio *bio_src``”h]”jÐ)�”}”(hjh]”hŒstruct bio *bio_src”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M«hj ubjæ)�”}”(hhh]”hÌ)�”}”(hŒbio to clone from”h]”hŒbio to clone from”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j(h´M«hj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j(h´M«hj˜ubjÄ)�”}”(hŒ"``gfp_t gfp`` allocation priority ”h]”(jÊ)�”}”(hŒ ``gfp_t gfp``”h]”jÐ)�”}”(hjLh]”hŒ gfp_t gfp”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjJubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M¬hjFubjæ)�”}”(hhh]”hÌ)�”}”(hŒallocation priority”h]”hŒallocation priority”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jah´M¬hjbubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjFubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jah´M¬hj˜ubeh}”(h• ]”h ]”h"]”h$]”h&]”uh1j¾hj|ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj‡h]”hŒ Description”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M®hj|ubhÌ)�”}”(hŒ™Initialize a new bio in caller provided memory that is a clone of **bio_src**. The same bio_vecs reuse and bio lifetime rules as bio_alloc_clone() apply.”h]”(hŒBInitialize a new bio in caller provided memory that is a clone of ”…”�”}”(hj�h²hh³Nh´Nubj©)�”}”(hŒ **bio_src**”h]”hŒbio_src”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj�ubhŒL. The same bio_vecs reuse and bio lifetime rules as bio_alloc_clone() apply.”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M­hj|ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ__bio_add_page (C function)”Œc.__bio_add_page”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ\void __bio_add_page (struct bio *bio, struct page *page, unsigned int len, unsigned int off)”h]”j)�”}”(hŒ[void __bio_add_page(struct bio *bio, struct page *page, unsigned int len, unsigned int off)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÚh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mýubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÚh²hh³jìh´MýubjC)�”}”(hŒ__bio_add_page”h]”jI)�”}”(hŒ__bio_add_page”h]”hŒ__bio_add_page”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjûubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÚh²hh³jìh´Mýubj=)�”}”(hŒH(struct bio *bio, struct page *page, unsigned int len, unsigned int off)”h]”(jC)�”}”(hŒstruct bio *bio”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j;Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjsbŒc.__bio_add_page”†”asbuh1hhjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjubjI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjubjC)�”}”(hŒstruct page *page”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj‰ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‰ubh)�”}”(hhh]”jI)�”}”(hŒpage”h]”hŒpage”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¨ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j­Œmodname”NŒ classname”Njj )�”}”j ]”jUŒc.__bio_add_page”†”asbuh1hhj‰ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‰ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj‰ubjI)�”}”(hŒpage”h]”hŒpage”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjubjC)�”}”(hŒunsigned int len”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjùubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjùubj�)�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjùubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjùubjI)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjùubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjubjC)�”}”(hŒunsigned int off”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjJubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjJubj�)�”}”(hŒint”h]”hŒint”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjJubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjJubjI)�”}”(hŒoff”h]”hŒoff”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjJubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÚh²hh³jìh´Mýubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÖh²hh³jìh´Mýubah}”(h]”jÑah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jìh´MýhjÓh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ%add page(s) to a bio in a new segment”h]”hŒ%add page(s) to a bio in a new segment”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mýhj­h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÓh²hh³jìh´Mýubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÈjšjÈj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX„**Parameters** ``struct bio *bio`` destination bio ``struct page *page`` start page to add ``unsigned int len`` length of the data to add, may cross pages ``unsigned int off`` offset of the data relative to **page**, may cross pages **Description** Add the data at **page** + **off** to **bio** as a new bvec. The caller must ensure that **bio** has space for another bvec.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÒh]”hŒ Parameters”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MhjÌubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ$``struct bio *bio`` destination bio ”h]”(jÊ)�”}”(hŒ``struct bio *bio``”h]”jÐ)�”}”(hjñh]”hŒstruct bio *bio”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjïubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mþhjëubjæ)�”}”(hhh]”hÌ)�”}”(hŒdestination bio”h]”hŒdestination bio”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´Mþhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jh´MþhjèubjÄ)�”}”(hŒ(``struct page *page`` start page to add ”h]”(jÊ)�”}”(hŒ``struct page *page``”h]”jÐ)�”}”(hj*h]”hŒstruct page *page”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mÿhj$ubjæ)�”}”(hhh]”hÌ)�”}”(hŒstart page to add”h]”hŒstart page to add”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j?h´Mÿhj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j?h´MÿhjèubjÄ)�”}”(hŒ@``unsigned int len`` length of the data to add, may cross pages ”h]”(jÊ)�”}”(hŒ``unsigned int len``”h]”jÐ)�”}”(hjch]”hŒunsigned int len”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mhj]ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ*length of the data to add, may cross pages”h]”hŒ*length of the data to add, may cross pages”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jxh´Mhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jxh´MhjèubjÄ)�”}”(hŒN``unsigned int off`` offset of the data relative to **page**, may cross pages ”h]”(jÊ)�”}”(hŒ``unsigned int off``”h]”jÐ)�”}”(hjœh]”hŒunsigned int off”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjšubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mhj–ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ8offset of the data relative to **page**, may cross pages”h]”(hŒoffset of the data relative to ”…”�”}”(hjµh²hh³Nh´Nubj©)�”}”(hŒ**page**”h]”hŒpage”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjµubhŒ, may cross pages”…”�”}”(hjµh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j±h´Mhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j±h´Mhjèubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÌubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjéh]”hŒ Description”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjçubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MhjÌubhÌ)�”}”(hŒ}Add the data at **page** + **off** to **bio** as a new bvec. The caller must ensure that **bio** has space for another bvec.”h]”(hŒAdd the data at ”…”�”}”(hjÿh²hh³Nh´Nubj©)�”}”(hŒ**page**”h]”hŒpage”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÿubhŒ + ”…”�”}”(hjÿh²hh³Nh´Nubj©)�”}”(hŒ**off**”h]”hŒoff”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÿubhŒ to ”…”�”}”(hjÿh²hh³Nh´Nubj©)�”}”(hŒ**bio**”h]”hŒbio”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÿubhŒ- as a new bvec. The caller must ensure that ”…”�”}”(hjÿh²hh³Nh´Nubj©)�”}”(hŒ**bio**”h]”hŒbio”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÿubhŒ has space for another bvec.”…”�”}”(hjÿh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MhjÌubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ bio_add_virt_nofail (C function)”Œc.bio_add_virt_nofail”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒEvoid bio_add_virt_nofail (struct bio *bio, void *vaddr, unsigned len)”h]”j)�”}”(hŒDvoid bio_add_virt_nofail(struct bio *bio, void *vaddr, unsigned len)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjrh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjrh²hh³j„h´MubjC)�”}”(hŒbio_add_virt_nofail”h]”jI)�”}”(hŒbio_add_virt_nofail”h]”hŒbio_add_virt_nofail”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj“ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjrh²hh³j„h´Mubj=)�”}”(hŒ,(struct bio *bio, void *vaddr, unsigned len)”h]”(jC)�”}”(hŒstruct bio *bio”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¯ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¯ubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÎubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÓŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj™sbŒc.bio_add_virt_nofail”†”asbuh1hhj¯ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¯ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¯ubjI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¯ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj«ubjC)�”}”(hŒ void *vaddr”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj!ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj!ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj!ubjI)�”}”(hŒvaddr”h]”hŒvaddr”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj«ubjC)�”}”(hŒ unsigned len”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjcubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjcubjI)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjcubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj«ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjrh²hh³j„h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjnh²hh³j„h´Mubah}”(h]”jiah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j„h´Mhjkh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ.add data in the direct kernel mapping to a bio”h]”hŒ.add data in the direct kernel mapping to a bio”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mhjªh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjkh²hh³j„h´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÅjšjÅj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXK**Parameters** ``struct bio *bio`` destination bio ``void *vaddr`` data to add ``unsigned len`` length of the data to add, may cross pages **Description** Add the data at **vaddr** to **bio**. The caller must have ensure a segment is available for the added data. No merging into an existing segment will be performed.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÏh]”hŒ Parameters”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MhjÉubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ$``struct bio *bio`` destination bio ”h]”(jÊ)�”}”(hŒ``struct bio *bio``”h]”jÐ)�”}”(hjîh]”hŒstruct bio *bio”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjìubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mhjèubjæ)�”}”(hhh]”hÌ)�”}”(hŒdestination bio”h]”hŒdestination bio”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjèubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jh´MhjåubjÄ)�”}”(hŒ``void *vaddr`` data to add ”h]”(jÊ)�”}”(hŒ``void *vaddr``”h]”jÐ)�”}”(hj'h]”hŒ void *vaddr”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mhj!ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ data to add”h]”hŒ data to add”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j<h´Mhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j<h´MhjåubjÄ)�”}”(hŒ<``unsigned len`` length of the data to add, may cross pages ”h]”(jÊ)�”}”(hŒ``unsigned len``”h]”jÐ)�”}”(hj`h]”hŒ unsigned len”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MhjZubjæ)�”}”(hhh]”hÌ)�”}”(hŒ*length of the data to add, may cross pages”h]”hŒ*length of the data to add, may cross pages”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³juh´Mhjvubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjZubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³juh´Mhjåubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÉubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj›h]”hŒ Description”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MhjÉubhÌ)�”}”(hŒ¥Add the data at **vaddr** to **bio**. The caller must have ensure a segment is available for the added data. No merging into an existing segment will be performed.”h]”(hŒAdd the data at ”…”�”}”(hj±h²hh³Nh´Nubj©)�”}”(hŒ **vaddr**”h]”hŒvaddr”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj±ubhŒ to ”…”�”}”(hj±h²hh³Nh´Nubj©)�”}”(hŒ**bio**”h]”hŒbio”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj±ubhŒ�. The caller must have ensure a segment is available for the added data. No merging into an existing segment will be performed.”…”�”}”(hj±h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MhjÉubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbio_add_page (C function)”Œc.bio_add_page”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ\int bio_add_page (struct bio *bio, struct page *page, unsigned int len, unsigned int offset)”h]”j)�”}”(hŒ[int bio_add_page(struct bio *bio, struct page *page, unsigned int len, unsigned int offset)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M&ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjh²hh³jh´M&ubjC)�”}”(hŒ bio_add_page”h]”jI)�”}”(hŒ bio_add_page”h]”hŒ bio_add_page”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj!ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjh²hh³jh´M&ubj=)�”}”(hŒK(struct bio *bio, struct page *page, unsigned int len, unsigned int offset)”h]”(jC)�”}”(hŒstruct bio *bio”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj=ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj=ubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj\ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jaŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj'sbŒc.bio_add_page”†”asbuh1hhj=ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj=ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj=ubjI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj9ubjC)�”}”(hŒstruct page *page”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¯ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¯ubh)�”}”(hhh]”jI)�”}”(hŒpage”h]”hŒpage”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÎubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÓŒmodname”NŒ classname”Njj )�”}”j ]”j{Œc.bio_add_page”†”asbuh1hhj¯ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¯ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¯ubjI)�”}”(hŒpage”h]”hŒpage”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¯ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj9ubjC)�”}”(hŒunsigned int len”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjubj�)�”}”(hŒint”h]”hŒint”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjubjI)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj9ubjC)�”}”(hŒunsigned int offset”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjpubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjpubj�)�”}”(hŒint”h]”hŒint”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjpubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjpubjI)�”}”(hŒoffset”h]”hŒoffset”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjpubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj9ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjh²hh³jh´M&ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjüh²hh³jh´M&ubah}”(h]”j÷ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jh´M&hjùh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒattempt to add page(s) to bio”h]”hŒattempt to add page(s) to bio”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M&hjÓh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjùh²hh³jh´M&ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jîjšjîj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXŒ**Parameters** ``struct bio *bio`` destination bio ``struct page *page`` start page to add ``unsigned int len`` vec entry length, may cross pages ``unsigned int offset`` vec entry offset relative to **page**, may cross pages **Description** Attempt to add page(s) to the bio_vec maplist. This will only fail if either bio->bi_vcnt == bio->bi_max_vecs or it's a cloned bio.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjøh]”hŒ Parameters”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjöubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M*hjòubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ$``struct bio *bio`` destination bio ”h]”(jÊ)�”}”(hŒ``struct bio *bio``”h]”jÐ)�”}”(hjh]”hŒstruct bio *bio”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M'hjubjæ)�”}”(hhh]”hÌ)�”}”(hŒdestination bio”h]”hŒdestination bio”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j,h´M'hj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j,h´M'hjubjÄ)�”}”(hŒ(``struct page *page`` start page to add ”h]”(jÊ)�”}”(hŒ``struct page *page``”h]”jÐ)�”}”(hjPh]”hŒstruct page *page”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M(hjJubjæ)�”}”(hhh]”hÌ)�”}”(hŒstart page to add”h]”hŒstart page to add”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jeh´M(hjfubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jeh´M(hjubjÄ)�”}”(hŒ7``unsigned int len`` vec entry length, may cross pages ”h]”(jÊ)�”}”(hŒ``unsigned int len``”h]”jÐ)�”}”(hj‰h]”hŒunsigned int len”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M)hjƒubjæ)�”}”(hhh]”hÌ)�”}”(hŒ!vec entry length, may cross pages”h]”hŒ!vec entry length, may cross pages”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jžh´M)hjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jžh´M)hjubjÄ)�”}”(hŒO``unsigned int offset`` vec entry offset relative to **page**, may cross pages ”h]”(jÊ)�”}”(hŒ``unsigned int offset``”h]”jÐ)�”}”(hjÂh]”hŒunsigned int offset”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M*hj¼ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ6vec entry offset relative to **page**, may cross pages”h]”(hŒvec entry offset relative to ”…”�”}”(hjÛh²hh³Nh´Nubj©)�”}”(hŒ**page**”h]”hŒpage”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÛubhŒ, may cross pages”…”�”}”(hjÛh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j×h´M*hjØubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j×h´M*hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjòubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M,hjòubjÁ™)�”}”(hŒƒAttempt to add page(s) to the bio_vec maplist. This will only fail if either bio->bi_vcnt == bio->bi_max_vecs or it's a cloned bio.”h]”hÌ)�”}”(hŒƒAttempt to add page(s) to the bio_vec maplist. This will only fail if either bio->bi_vcnt == bio->bi_max_vecs or it's a cloned bio.”h]”hŒ…Attempt to add page(s) to the bio_vec maplist. This will only fail if either bio->bi_vcnt == bio->bi_max_vecs or it’s a cloned bio.”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M+hj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀ™h³j7h´M+hjòubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbio_add_folio (C function)”Œc.bio_add_folio”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒQbool bio_add_folio (struct bio *bio, struct folio *folio, size_t len, size_t off)”h]”j)�”}”(hŒPbool bio_add_folio(struct bio *bio, struct folio *folio, size_t len, size_t off)”h]”(j�)�”}”(hj„h]”hŒbool”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjZh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MWubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjZh²hh³jkh´MWubjC)�”}”(hŒ bio_add_folio”h]”jI)�”}”(hŒ bio_add_folio”h]”hŒ bio_add_folio”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjzubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjZh²hh³jkh´MWubj=)�”}”(hŒ>(struct bio *bio, struct folio *folio, size_t len, size_t off)”h]”(jC)�”}”(hŒstruct bio *bio”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj–ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj–ubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjµubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jºŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj€sbŒc.bio_add_folio”†”asbuh1hhj–ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj–ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj–ubjI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj’ubjC)�”}”(hŒstruct folio *folio”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ubh)�”}”(hhh]”jI)�”}”(hŒfolio”h]”hŒfolio”…”�”}”(hj* h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj' ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j, Œmodname”NŒ classname”Njj )�”}”j ]”jÔŒc.bio_add_folio”†”asbuh1hhj ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjV h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ubjI)�”}”(hŒfolio”h]”hŒfolio”…”�”}”(hjc h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj’ubjC)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj| ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j� Œmodname”NŒ classname”Njj )�”}”j ]”jÔŒc.bio_add_folio”†”asbuh1hhjx ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjx ubjI)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj« h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjx ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj’ubjC)�”}”(hŒ size_t off”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjÇ h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÄ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÉ Œmodname”NŒ classname”Njj )�”}”j ]”jÔŒc.bio_add_folio”†”asbuh1hhjÀ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjå h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÀ ubjI)�”}”(hŒoff”h]”hŒoff”…”�”}”(hjó h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÀ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj’ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjZh²hh³jkh´MWubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjVh²hh³jkh´MWubah}”(h]”jQah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jkh´MWhjSh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ(Attempt to add part of a folio to a bio.”h]”hŒ(Attempt to add part of a folio to a bio.”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MWhj!h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjSh²hh³jkh´MWubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j5!jšj5!j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX$**Parameters** ``struct bio *bio`` BIO to add to. ``struct folio *folio`` Folio to add. ``size_t len`` How many bytes from the folio to add. ``size_t off`` First byte in this folio to add. **Description** Filesystems that use folios can call this function instead of calling bio_add_page() for each page in the folio. If **off** is bigger than PAGE_SIZE, this function can create a bio_vec that starts in a page after the bv_page. BIOs do not support folios that are 4GiB or larger. **Return** Whether the addition was successful.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj?!h]”hŒ Parameters”…”�”}”(hjA!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj=!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M[hj9!ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ#``struct bio *bio`` BIO to add to. ”h]”(jÊ)�”}”(hŒ``struct bio *bio``”h]”jÐ)�”}”(hj^!h]”hŒstruct bio *bio”…”�”}”(hj`!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj\!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MXhjX!ubjæ)�”}”(hhh]”hÌ)�”}”(hŒBIO to add to.”h]”hŒBIO to add to.”…”�”}”(hjw!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³js!h´MXhjt!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjX!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³js!h´MXhjU!ubjÄ)�”}”(hŒ&``struct folio *folio`` Folio to add. ”h]”(jÊ)�”}”(hŒ``struct folio *folio``”h]”jÐ)�”}”(hj—!h]”hŒstruct folio *folio”…”�”}”(hj™!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj•!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MYhj‘!ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ Folio to add.”h]”hŒ Folio to add.”…”�”}”(hj°!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¬!h´MYhj­!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj‘!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¬!h´MYhjU!ubjÄ)�”}”(hŒ5``size_t len`` How many bytes from the folio to add. ”h]”(jÊ)�”}”(hŒ``size_t len``”h]”jÐ)�”}”(hjÐ!h]”hŒ size_t len”…”�”}”(hjÒ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÎ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MZhjÊ!ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ%How many bytes from the folio to add.”h]”hŒ%How many bytes from the folio to add.”…”�”}”(hjé!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jå!h´MZhjæ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÊ!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jå!h´MZhjU!ubjÄ)�”}”(hŒ0``size_t off`` First byte in this folio to add. ”h]”(jÊ)�”}”(hŒ``size_t off``”h]”jÐ)�”}”(hj "h]”hŒ size_t off”…”�”}”(hj "h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M[hj"ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ First byte in this folio to add.”h]”hŒ First byte in this folio to add.”…”�”}”(hj""h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j"h´M[hj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j"h´M[hjU!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj9!ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjD"h]”hŒ Description”…”�”}”(hjF"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjB"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M]hj9!ubhÌ)�”}”(hXFilesystems that use folios can call this function instead of calling bio_add_page() for each page in the folio. If **off** is bigger than PAGE_SIZE, this function can create a bio_vec that starts in a page after the bv_page. BIOs do not support folios that are 4GiB or larger.”h]”(hŒuFilesystems that use folios can call this function instead of calling bio_add_page() for each page in the folio. If ”…”�”}”(hjZ"h²hh³Nh´Nubj©)�”}”(hŒ**off**”h]”hŒoff”…”�”}”(hjb"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjZ"ubhŒ› is bigger than PAGE_SIZE, this function can create a bio_vec that starts in a page after the bv_page. BIOs do not support folios that are 4GiB or larger.”…”�”}”(hjZ"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M\hj9!ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj}"h]”hŒReturn”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj{"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mahj9!ubhÌ)�”}”(hŒ$Whether the addition was successful.”h]”hŒ$Whether the addition was successful.”…”�”}”(hj“"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mbhj9!ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ"bio_add_vmalloc_chunk (C function)”Œc.bio_add_vmalloc_chunk”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒOunsigned int bio_add_vmalloc_chunk (struct bio *bio, void *vaddr, unsigned len)”h]”j)�”}”(hŒNunsigned int bio_add_vmalloc_chunk(struct bio *bio, void *vaddr, unsigned len)”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÂ"h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¾"h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mpubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑ"h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¾"h²hh³jÐ"h´Mpubj�)�”}”(hŒint”h]”hŒint”…”�”}”(hjß"h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¾"h²hh³jÐ"h´Mpubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjí"h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¾"h²hh³jÐ"h´MpubjC)�”}”(hŒbio_add_vmalloc_chunk”h]”jI)�”}”(hŒbio_add_vmalloc_chunk”h]”hŒbio_add_vmalloc_chunk”…”�”}”(hjÿ"h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjû"ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj¾"h²hh³jÐ"h´Mpubj=)�”}”(hŒ,(struct bio *bio, void *vaddr, unsigned len)”h]”(jC)�”}”(hŒstruct bio *bio”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj#ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(#h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj#ubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hj9#h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj6#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j;#Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj#sbŒc.bio_add_vmalloc_chunk”†”asbuh1hhj#ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY#h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj#ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjg#h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj#ubjI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjt#h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj#ubjC)�”}”(hŒ void *vaddr”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�#h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj‰#ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›#h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‰#ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj©#h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj‰#ubjI)�”}”(hŒvaddr”h]”hŒvaddr”…”�”}”(hj¶#h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‰#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj#ubjC)�”}”(hŒ unsigned len”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÏ#h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjË#ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝ#h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjË#ubjI)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjë#h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjË#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj#ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj¾"h²hh³jÐ"h´Mpubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjº"h²hh³jÐ"h´Mpubah}”(h]”jµ"ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÐ"h´Mphj·"h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒadd a vmalloc chunk to a bio”h]”hŒadd a vmalloc chunk to a bio”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mphj$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj·"h²hh³jÐ"h´Mpubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j-$jšj-$j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX**Parameters** ``struct bio *bio`` destination bio ``void *vaddr`` vmalloc address to add ``unsigned len`` total length in bytes of the data to add **Description** Add data starting at **vaddr** to **bio** and return how many bytes were added. This may be less than the amount originally asked. Returns 0 if no data could be added to **bio**. This helper calls flush_kernel_vmap_range() for the range added. For reads the caller still needs to manually call invalidate_kernel_vmap_range() in the completion handler.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj7$h]”hŒ Parameters”…”�”}”(hj9$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj5$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mthj1$ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ$``struct bio *bio`` destination bio ”h]”(jÊ)�”}”(hŒ``struct bio *bio``”h]”jÐ)�”}”(hjV$h]”hŒstruct bio *bio”…”�”}”(hjX$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjT$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MqhjP$ubjæ)�”}”(hhh]”hÌ)�”}”(hŒdestination bio”h]”hŒdestination bio”…”�”}”(hjo$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jk$h´Mqhjl$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjP$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jk$h´MqhjM$ubjÄ)�”}”(hŒ'``void *vaddr`` vmalloc address to add ”h]”(jÊ)�”}”(hŒ``void *vaddr``”h]”jÐ)�”}”(hj�$h]”hŒ void *vaddr”…”�”}”(hj‘$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj�$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mrhj‰$ubjæ)�”}”(hhh]”hÌ)�”}”(hŒvmalloc address to add”h]”hŒvmalloc address to add”…”�”}”(hj¨$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¤$h´Mrhj¥$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj‰$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¤$h´MrhjM$ubjÄ)�”}”(hŒ:``unsigned len`` total length in bytes of the data to add ”h]”(jÊ)�”}”(hŒ``unsigned len``”h]”jÐ)�”}”(hjÈ$h]”hŒ unsigned len”…”�”}”(hjÊ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÆ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MshjÂ$ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(total length in bytes of the data to add”h]”hŒ(total length in bytes of the data to add”…”�”}”(hjá$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÝ$h´MshjÞ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÂ$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÝ$h´MshjM$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj1$ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj%h]”hŒ Description”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Muhj1$ubhÌ)�”}”(hŒ³Add data starting at **vaddr** to **bio** and return how many bytes were added. This may be less than the amount originally asked. Returns 0 if no data could be added to **bio**.”h]”(hŒAdd data starting at ”…”�”}”(hj%h²hh³Nh´Nubj©)�”}”(hŒ **vaddr**”h]”hŒvaddr”…”�”}”(hj!%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj%ubhŒ to ”…”�”}”(hj%h²hh³Nh´Nubj©)�”}”(hŒ**bio**”h]”hŒbio”…”�”}”(hj3%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj%ubhŒ‚ and return how many bytes were added. This may be less than the amount originally asked. Returns 0 if no data could be added to ”…”�”}”(hj%h²hh³Nh´Nubj©)�”}”(hŒ**bio**”h]”hŒbio”…”�”}”(hjE%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj%ubhŒ.”…”�”}”(hj%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mthj1$ubhÌ)�”}”(hŒ­This helper calls flush_kernel_vmap_range() for the range added. For reads the caller still needs to manually call invalidate_kernel_vmap_range() in the completion handler.”h]”hŒ­This helper calls flush_kernel_vmap_range() for the range added. For reads the caller still needs to manually call invalidate_kernel_vmap_range() in the completion handler.”…”�”}”(hj^%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mxhj1$ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbio_add_vmalloc (C function)”Œc.bio_add_vmalloc”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒEbool bio_add_vmalloc (struct bio *bio, void *vaddr, unsigned int len)”h]”j)�”}”(hŒDbool bio_add_vmalloc(struct bio *bio, void *vaddr, unsigned int len)”h]”(j�)�”}”(hj„h]”hŒbool”…”�”}”(hj�%h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj‰%h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M‹ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›%h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‰%h²hh³jš%h´M‹ubjC)�”}”(hŒbio_add_vmalloc”h]”jI)�”}”(hŒbio_add_vmalloc”h]”hŒbio_add_vmalloc”…”�”}”(hj­%h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj©%ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj‰%h²hh³jš%h´M‹ubj=)�”}”(hŒ0(struct bio *bio, void *vaddr, unsigned int len)”h]”(jC)�”}”(hŒstruct bio *bio”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÉ%h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÅ%ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖ%h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÅ%ubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjç%h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjä%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jé%Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj¯%sbŒc.bio_add_vmalloc”†”asbuh1hhjÅ%ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÅ%ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÅ%ubjI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hj"&h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÅ%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÁ%ubjC)�”}”(hŒ void *vaddr”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj;&h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj7&ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI&h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj7&ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjW&h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj7&ubjI)�”}”(hŒvaddr”h]”hŒvaddr”…”�”}”(hjd&h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj7&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÁ%ubjC)�”}”(hŒunsigned int len”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj}&h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjy&ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹&h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjy&ubj�)�”}”(hŒint”h]”hŒint”…”�”}”(hj™&h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjy&ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§&h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjy&ubjI)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjµ&h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjy&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÁ%ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj‰%h²hh³jš%h´M‹ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj…%h²hh³jš%h´M‹ubah}”(h]”j€%ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jš%h´M‹hj‚%h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒadd a vmalloc region to a bio”h]”hŒadd a vmalloc region to a bio”…”�”}”(hjß&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M‹hjÜ&h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj‚%h²hh³jš%h´M‹ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j÷&jšj÷&j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXì**Parameters** ``struct bio *bio`` destination bio ``void *vaddr`` vmalloc address to add ``unsigned int len`` total length in bytes of the data to add **Description** Add data starting at **vaddr** to **bio**. Return ``true`` on success or ``false`` if **bio** does not have enough space for the payload. This helper calls flush_kernel_vmap_range() for the range added. For reads the caller still needs to manually call invalidate_kernel_vmap_range() in the completion handler.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj'h]”hŒ Parameters”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÿ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M�hjû&ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ$``struct bio *bio`` destination bio ”h]”(jÊ)�”}”(hŒ``struct bio *bio``”h]”jÐ)�”}”(hj 'h]”hŒstruct bio *bio”…”�”}”(hj"'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MŒhj'ubjæ)�”}”(hhh]”hÌ)�”}”(hŒdestination bio”h]”hŒdestination bio”…”�”}”(hj9'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j5'h´MŒhj6'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j5'h´MŒhj'ubjÄ)�”}”(hŒ'``void *vaddr`` vmalloc address to add ”h]”(jÊ)�”}”(hŒ``void *vaddr``”h]”jÐ)�”}”(hjY'h]”hŒ void *vaddr”…”�”}”(hj['h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjW'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M�hjS'ubjæ)�”}”(hhh]”hÌ)�”}”(hŒvmalloc address to add”h]”hŒvmalloc address to add”…”�”}”(hjr'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jn'h´M�hjo'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjS'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jn'h´M�hj'ubjÄ)�”}”(hŒ>``unsigned int len`` total length in bytes of the data to add ”h]”(jÊ)�”}”(hŒ``unsigned int len``”h]”jÐ)�”}”(hj’'h]”hŒunsigned int len”…”�”}”(hj”'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj�'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MŽhjŒ'ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(total length in bytes of the data to add”h]”hŒ(total length in bytes of the data to add”…”�”}”(hj«'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j§'h´MŽhj¨'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjŒ'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j§'h´MŽhj'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjû&ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÍ'h]”hŒ Description”…”�”}”(hjÏ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjË'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M�hjû&ubhÌ)�”}”(hŒŠAdd data starting at **vaddr** to **bio**. Return ``true`` on success or ``false`` if **bio** does not have enough space for the payload.”h]”(hŒAdd data starting at ”…”�”}”(hjã'h²hh³Nh´Nubj©)�”}”(hŒ **vaddr**”h]”hŒvaddr”…”�”}”(hjë'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjã'ubhŒ to ”…”�”}”(hjã'h²hh³Nh´Nubj©)�”}”(hŒ**bio**”h]”hŒbio”…”�”}”(hjý'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjã'ubhŒ . Return ”…”�”}”(hjã'h²hh³Nh´NubjÐ)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjã'ubhŒ on success or ”…”�”}”(hjã'h²hh³Nh´NubjÐ)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hj!(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjã'ubhŒ if ”…”�”}”(hjã'h²hh³Nh´Nubj©)�”}”(hŒ**bio**”h]”hŒbio”…”�”}”(hj3(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjã'ubhŒ, does not have enough space for the payload.”…”�”}”(hjã'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M�hjû&ubhÌ)�”}”(hŒ­This helper calls flush_kernel_vmap_range() for the range added. For reads the caller still needs to manually call invalidate_kernel_vmap_range() in the completion handler.”h]”hŒ­This helper calls flush_kernel_vmap_range() for the range added. For reads the caller still needs to manually call invalidate_kernel_vmap_range() in the completion handler.”…”�”}”(hjL(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M’hjû&ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ&bio_iov_iter_bounce_write (C function)”Œc.bio_iov_iter_bounce_write”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒeint bio_iov_iter_bounce_write (struct bio *bio, struct iov_iter *iter, size_t maxlen, size_t minsize)”h]”j)�”}”(hŒdint bio_iov_iter_bounce_write(struct bio *bio, struct iov_iter *iter, size_t maxlen, size_t minsize)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj{(h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjw(h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MÌubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ(h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjw(h²hh³j‰(h´MÌubjC)�”}”(hŒbio_iov_iter_bounce_write”h]”jI)�”}”(hŒbio_iov_iter_bounce_write”h]”hŒbio_iov_iter_bounce_write”…”�”}”(hjœ(h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj˜(ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjw(h²hh³j‰(h´MÌubj=)�”}”(hŒG(struct bio *bio, struct iov_iter *iter, size_t maxlen, size_t minsize)”h]”(jC)�”}”(hŒstruct bio *bio”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¸(h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj´(ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅ(h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj´(ubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjÖ(h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÓ(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jØ(Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjž(sbŒc.bio_iov_iter_bounce_write”†”asbuh1hhj´(ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö(h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj´(ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj´(ubjI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj´(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj°(ubjC)�”}”(hŒstruct iov_iter *iter”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj*)h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj&)ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7)h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj&)ubh)�”}”(hhh]”jI)�”}”(hŒiov_iter”h]”hŒiov_iter”…”�”}”(hjH)h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjE)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jJ)Œmodname”NŒ classname”Njj )�”}”j ]”jò(Œc.bio_iov_iter_bounce_write”†”asbuh1hhj&)ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf)h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj&)ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjt)h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj&)ubjI)�”}”(hŒiter”h]”hŒiter”…”�”}”(hj�)h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj&)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj°(ubjC)�”}”(hŒ size_t maxlen”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj�)h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjš)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jŸ)Œmodname”NŒ classname”Njj )�”}”j ]”jò(Œc.bio_iov_iter_bounce_write”†”asbuh1hhj–)ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»)h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj–)ubjI)�”}”(hŒmaxlen”h]”hŒmaxlen”…”�”}”(hjÉ)h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj–)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj°(ubjC)�”}”(hŒsize_t minsize”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjå)h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjâ)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jç)Œmodname”NŒ classname”Njj )�”}”j ]”jò(Œc.bio_iov_iter_bounce_write”†”asbuh1hhjÞ)ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÞ)ubjI)�”}”(hŒminsize”h]”hŒminsize”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÞ)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj°(ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjw(h²hh³j‰(h´MÌubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjs(h²hh³j‰(h´MÌubah}”(h]”jn(ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j‰(h´MÌhjp(h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ*bounce buffer data from an iter into a bio”h]”hŒ*bounce buffer data from an iter into a bio”…”�”}”(hj;*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MÌhj8*h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjp(h²hh³j‰(h´MÌubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jS*jšjS*j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX**Parameters** ``struct bio *bio`` bio to send ``struct iov_iter *iter`` iter to read from ``size_t maxlen`` maximum size to bounce ``size_t minsize`` minimum folio allocation size **Description** Helper for direct I/O write implementations that need to bounce buffer because they need need to checksum the data or perform other operations that require consistency. Allocates folios to back the bounce buffer, and copies the data into it. Needs to be paired with bio_free_folios() called on completion.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj]*h]”hŒ Parameters”…”�”}”(hj_*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj[*ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MÐhjW*ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ ``struct bio *bio`` bio to send ”h]”(jÊ)�”}”(hŒ``struct bio *bio``”h]”jÐ)�”}”(hj|*h]”hŒstruct bio *bio”…”�”}”(hj~*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjz*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MÍhjv*ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ bio to send”h]”hŒ bio to send”…”�”}”(hj•*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‘*h´MÍhj’*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjv*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‘*h´MÍhjs*ubjÄ)�”}”(hŒ,``struct iov_iter *iter`` iter to read from ”h]”(jÊ)�”}”(hŒ``struct iov_iter *iter``”h]”jÐ)�”}”(hjµ*h]”hŒstruct iov_iter *iter”…”�”}”(hj·*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj³*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MÎhj¯*ubjæ)�”}”(hhh]”hÌ)�”}”(hŒiter to read from”h]”hŒiter to read from”…”�”}”(hjÎ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÊ*h´MÎhjË*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¯*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÊ*h´MÎhjs*ubjÄ)�”}”(hŒ)``size_t maxlen`` maximum size to bounce ”h]”(jÊ)�”}”(hŒ``size_t maxlen``”h]”jÐ)�”}”(hjî*h]”hŒ size_t maxlen”…”�”}”(hjð*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjì*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MÏhjè*ubjæ)�”}”(hhh]”hÌ)�”}”(hŒmaximum size to bounce”h]”hŒmaximum size to bounce”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j+h´MÏhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjè*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j+h´MÏhjs*ubjÄ)�”}”(hŒ1``size_t minsize`` minimum folio allocation size ”h]”(jÊ)�”}”(hŒ``size_t minsize``”h]”jÐ)�”}”(hj'+h]”hŒsize_t minsize”…”�”}”(hj)+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj%+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MÐhj!+ubjæ)�”}”(hhh]”hÌ)�”}”(hŒminimum folio allocation size”h]”hŒminimum folio allocation size”…”�”}”(hj@+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j<+h´MÐhj=+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj!+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j<+h´MÐhjs*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjW*ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjb+h]”hŒ Description”…”�”}”(hjd+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj`+ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MÒhjW*ubhÌ)�”}”(hX3Helper for direct I/O write implementations that need to bounce buffer because they need need to checksum the data or perform other operations that require consistency. Allocates folios to back the bounce buffer, and copies the data into it. Needs to be paired with bio_free_folios() called on completion.”h]”hX3Helper for direct I/O write implementations that need to bounce buffer because they need need to checksum the data or perform other operations that require consistency. Allocates folios to back the bounce buffer, and copies the data into it. Needs to be paired with bio_free_folios() called on completion.”…”�”}”(hjx+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MÑhjW*ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbio_await (C function)”Œ c.bio_await”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒYvoid bio_await (struct bio *bio, void *priv, void (*submit)(struct bio *bio, void *priv))”h]”j)�”}”(hŒXvoid bio_await(struct bio *bio, void *priv, void (*submit)(struct bio *bio, void *priv))”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj§+h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj£+h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶+h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj£+h²hh³jµ+h´MubjC)�”}”(hŒ bio_await”h]”jI)�”}”(hŒ bio_await”h]”hŒ bio_await”…”�”}”(hjÈ+h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÄ+ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj£+h²hh³jµ+h´Mubj=)�”}”(hŒJ(struct bio *bio, void *priv, void (*submit)(struct bio *bio, void *priv))”h]”(jC)�”}”(hŒstruct bio *bio”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjä+h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjà+ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ+h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjà+ubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÿ+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j,Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÊ+sbŒ c.bio_await”†”asbuh1hhjà+ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj",h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjà+ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj0,h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjà+ubjI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hj=,h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjà+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÜ+ubjC)�”}”(hŒ void *priv”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjV,h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjR,ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd,h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjR,ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjr,h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjR,ubjI)�”}”(hŒpriv”h]”hŒpriv”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjR,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÜ+ubjC)�”}”(hŒ+void (*submit)(struct bio *bio, void *priv)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”•!}”(hj˜,h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj”,ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦,h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj”,ubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hj´,h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj”,ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÁ,h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj”,ubjI)�”}”(hŒsubmit”h]”hŒsubmit”…”�”}”(hjÎ,h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj”,ubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hjÜ,h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj”,ubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hjé,h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj”,ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjö,h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj”,ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj”,ubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j-Œmodname”NŒ classname”Njj )�”}”j ]”j,Œ c.bio_await”†”asbuh1hhj”,ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2-h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj”,ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj@-h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj”,ubjI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjM-h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj”,ubj¯)�”}”(hjW¦h]”hŒ,”…”�”}”(hj[-h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj”,ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh-h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj”,ubj�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjv-h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj”,ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„-h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj”,ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj’-h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj”,ubjI)�”}”(hŒpriv”h]”hŒpriv”…”�”}”(hjŸ-h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj”,ubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hj­-h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj”,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÜ+ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj£+h²hh³jµ+h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjŸ+h²hh³jµ+h´Mubah}”(h]”jš+ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jµ+h´Mhjœ+h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ5call a function on a bio, and wait until it completes”h]”hŒ5call a function on a bio, and wait until it completes”…”�”}”(hjÖ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MhjÓ-h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjœ+h²hh³jµ+h´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jî-jšjî-j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXA**Parameters** ``struct bio *bio`` the bio which describes the I/O ``void *priv`` private data passed to **submit** ``void (*submit)(struct bio *bio, void *priv)`` function called to submit the bio **Description** Wait for the bio as well as any bio chained off it after executing the passed in callback **submit**. The wait for the bio is set up before calling **submit** to ensure that the completion is captured. If **submit** is ``NULL``, submit_bio() is used instead to submit the bio. **Note** this overrides the bi_private and bi_end_io fields in the bio.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjø-h]”hŒ Parameters”…”�”}”(hjú-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjö-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mhjò-ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ4``struct bio *bio`` the bio which describes the I/O ”h]”(jÊ)�”}”(hŒ``struct bio *bio``”h]”jÐ)�”}”(hj.h]”hŒstruct bio *bio”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mhj.ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe bio which describes the I/O”h]”hŒthe bio which describes the I/O”…”�”}”(hj0.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j,.h´Mhj-.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j,.h´Mhj.ubjÄ)�”}”(hŒ1``void *priv`` private data passed to **submit** ”h]”(jÊ)�”}”(hŒ``void *priv``”h]”jÐ)�”}”(hjP.h]”hŒ void *priv”…”�”}”(hjR.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjN.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MhjJ.ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ!private data passed to **submit**”h]”(hŒprivate data passed to ”…”�”}”(hji.h²hh³Nh´Nubj©)�”}”(hŒ **submit**”h]”hŒsubmit”…”�”}”(hjq.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hji.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³je.h´Mhjf.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjJ.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³je.h´Mhj.ubjÄ)�”}”(hŒR``void (*submit)(struct bio *bio, void *priv)`` function called to submit the bio ”h]”(jÊ)�”}”(hŒ/``void (*submit)(struct bio *bio, void *priv)``”h]”jÐ)�”}”(hj—.h]”hŒ+void (*submit)(struct bio *bio, void *priv)”…”�”}”(hj™.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj•.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mhj‘.ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ!function called to submit the bio”h]”hŒ!function called to submit the bio”…”�”}”(hj°.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¬.h´Mhj­.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj‘.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¬.h´Mhj.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjò-ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÒ.h]”hŒ Description”…”�”}”(hjÔ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÐ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mhjò-ubhÌ)�”}”(hXWait for the bio as well as any bio chained off it after executing the passed in callback **submit**. The wait for the bio is set up before calling **submit** to ensure that the completion is captured. If **submit** is ``NULL``, submit_bio() is used instead to submit the bio.”h]”(hŒZWait for the bio as well as any bio chained off it after executing the passed in callback ”…”�”}”(hjè.h²hh³Nh´Nubj©)�”}”(hŒ **submit**”h]”hŒsubmit”…”�”}”(hjð.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjè.ubhŒ1. The wait for the bio is set up before calling ”…”�”}”(hjè.h²hh³Nh´Nubj©)�”}”(hŒ **submit**”h]”hŒsubmit”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjè.ubhŒ0 to ensure that the completion is captured. If ”…”�”}”(hjè.h²hh³Nh´Nubj©)�”}”(hŒ **submit**”h]”hŒsubmit”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjè.ubhŒ is ”…”�”}”(hjè.h²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj&/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjè.ubhŒ1, submit_bio() is used instead to submit the bio.”…”�”}”(hjè.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mhjò-ubhÌ)�”}”(hŒ**Note**”h]”j©)�”}”(hjA/h]”hŒNote”…”�”}”(hjC/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj?/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M hjò-ubhÌ)�”}”(hŒ>this overrides the bi_private and bi_end_io fields in the bio.”h]”hŒ>this overrides the bi_private and bi_end_io fields in the bio.”…”�”}”(hjW/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M hjò-ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œsubmit_bio_wait (C function)”Œc.submit_bio_wait”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ%int submit_bio_wait (struct bio *bio)”h]”j)�”}”(hŒ$int submit_bio_wait(struct bio *bio)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj†/h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj‚/h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•/h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‚/h²hh³j”/h´MubjC)�”}”(hŒsubmit_bio_wait”h]”jI)�”}”(hŒsubmit_bio_wait”h]”hŒsubmit_bio_wait”…”�”}”(hj§/h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj£/ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj‚/h²hh³j”/h´Mubj=)�”}”(hŒ(struct bio *bio)”h]”jC)�”}”(hŒstruct bio *bio”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÃ/h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¿/ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐ/h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¿/ubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjá/h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÞ/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jã/Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj©/sbŒc.submit_bio_wait”†”asbuh1hhj¿/ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¿/ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¿/ubjI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¿/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj»/ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj‚/h²hh³j”/h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj~/h²hh³j”/h´Mubah}”(h]”jy/ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j”/h´Mhj{/h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ)submit a bio, and wait until it completes”h]”hŒ)submit a bio, and wait until it completes”…”�”}”(hjF0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MhjC0h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj{/h²hh³j”/h´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j^0jšj^0j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXv**Parameters** ``struct bio *bio`` The :c:type:`struct bio ` which describes the I/O **Description** Simple wrapper around submit_bio(). Returns 0 on success, or the error from bio_endio() on failure. WARNING: Unlike to how submit_bio() is usually used, this function does not result in bio reference to be consumed. The caller must drop the reference on his own.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjh0h]”hŒ Parameters”…”�”}”(hjj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjf0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M"hjb0ubj¿)�”}”(hhh]”jÄ)�”}”(hŒK``struct bio *bio`` The :c:type:`struct bio ` which describes the I/O ”h]”(jÊ)�”}”(hŒ``struct bio *bio``”h]”jÐ)�”}”(hj‡0h]”hŒstruct bio *bio”…”�”}”(hj‰0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj…0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mhj�0ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ6The :c:type:`struct bio ` which describes the I/O”h]”(hŒThe ”…”�”}”(hj 0h²hh³Nh´Nubh)�”}”(hŒ:c:type:`struct bio `”h]”jÐ)�”}”(hjª0h]”hŒ struct bio”…”�”}”(hj¬0h²hh³Nh´Nubah}”(h]”h ]”(jÌj“Œc-type”eh"]”h$]”h&]”uh1jÏhj¨0ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jØŒ refdomain”j“Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jjÞjáŒbio”uh1hh³jœ0h´Mhj 0ubhŒ which describes the I/O”…”�”}”(hj 0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jœ0h´Mhj�0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj�0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jœ0h´Mhj~0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjb0ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjå0h]”hŒ Description”…”�”}”(hjç0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjã0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M!hjb0ubhÌ)�”}”(hŒcSimple wrapper around submit_bio(). Returns 0 on success, or the error from bio_endio() on failure.”h]”hŒcSimple wrapper around submit_bio(). Returns 0 on success, or the error from bio_endio() on failure.”…”�”}”(hjû0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M hjb0ubhÌ)�”}”(hŒ¢WARNING: Unlike to how submit_bio() is usually used, this function does not result in bio reference to be consumed. The caller must drop the reference on his own.”h]”hŒ¢WARNING: Unlike to how submit_bio() is usually used, this function does not result in bio reference to be consumed. The caller must drop the reference on his own.”…”�”}”(hj 1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M#hjb0ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbdev_rw_virt (C function)”Œc.bdev_rw_virt”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒeint bdev_rw_virt (struct block_device *bdev, sector_t sector, void *data, size_t len, enum req_op op)”h]”j)�”}”(hŒdint bdev_rw_virt(struct block_device *bdev, sector_t sector, void *data, size_t len, enum req_op op)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj91h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj51h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MCubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH1h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj51h²hh³jG1h´MCubjC)�”}”(hŒ bdev_rw_virt”h]”jI)�”}”(hŒ bdev_rw_virt”h]”hŒ bdev_rw_virt”…”�”}”(hjZ1h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjV1ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj51h²hh³jG1h´MCubj=)�”}”(hŒT(struct block_device *bdev, sector_t sector, void *data, size_t len, enum req_op op)”h]”(jC)�”}”(hŒstruct block_device *bdev”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjv1h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjr1ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ1h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjr1ubh)�”}”(hhh]”jI)�”}”(hŒ block_device”h]”hŒ block_device”…”�”}”(hj”1h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‘1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j–1Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj\1sbŒc.bdev_rw_virt”†”asbuh1hhjr1ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´1h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjr1ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÂ1h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjr1ubjI)�”}”(hŒbdev”h]”hŒbdev”…”�”}”(hjÏ1h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjr1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjn1ubjC)�”}”(hŒsector_t sector”h]”(h)�”}”(hhh]”jI)�”}”(hŒsector_t”h]”hŒsector_t”…”�”}”(hjë1h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjè1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jí1Œmodname”NŒ classname”Njj )�”}”j ]”j°1Œc.bdev_rw_virt”†”asbuh1hhjä1ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 2h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjä1ubjI)�”}”(hŒsector”h]”hŒsector”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjä1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjn1ubjC)�”}”(hŒ void *data”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj02h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj,2ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>2h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj,2ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjL2h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj,2ubjI)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjY2h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj,2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjn1ubjC)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hju2h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjr2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jw2Œmodname”NŒ classname”Njj )�”}”j ]”j°1Œc.bdev_rw_virt”†”asbuh1hhjn2ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“2h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjn2ubjI)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj¡2h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjn2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjn1ubjC)�”}”(hŒenum req_op op”h]”(j )�”}”(hj#h]”hŒenum”…”�”}”(hjº2h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¶2ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇ2h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¶2ubh)�”}”(hhh]”jI)�”}”(hŒreq_op”h]”hŒreq_op”…”�”}”(hjØ2h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÕ2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÚ2Œmodname”NŒ classname”Njj )�”}”j ]”j°1Œc.bdev_rw_virt”†”asbuh1hhj¶2ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö2h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¶2ubjI)�”}”(hŒop”h]”hŒop”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¶2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjn1ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj51h²hh³jG1h´MCubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj11h²hh³jG1h´MCubah}”(h]”j,1ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jG1h´MChj.1h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ3synchronously read into / write from kernel mapping”h]”hŒ3synchronously read into / write from kernel mapping”…”�”}”(hj.3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MChj+3h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj.1h²hh³jG1h´MCubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jF3jšjF3j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX™**Parameters** ``struct block_device *bdev`` block device to access ``sector_t sector`` sector to access ``void *data`` data to read/write ``size_t len`` length in byte to read/write ``enum req_op op`` operation (e.g. REQ_OP_READ/REQ_OP_WRITE) **Description** Performs synchronous I/O to **bdev** for **data**/**len**. **data** must be in the kernel direct mapping and not a vmalloc address.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjP3h]”hŒ Parameters”…”�”}”(hjR3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjN3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MGhjJ3ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ5``struct block_device *bdev`` block device to access ”h]”(jÊ)�”}”(hŒ``struct block_device *bdev``”h]”jÐ)�”}”(hjo3h]”hŒstruct block_device *bdev”…”�”}”(hjq3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjm3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MDhji3ubjæ)�”}”(hhh]”hÌ)�”}”(hŒblock device to access”h]”hŒblock device to access”…”�”}”(hjˆ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j„3h´MDhj…3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhji3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j„3h´MDhjf3ubjÄ)�”}”(hŒ%``sector_t sector`` sector to access ”h]”(jÊ)�”}”(hŒ``sector_t sector``”h]”jÐ)�”}”(hj¨3h]”hŒsector_t sector”…”�”}”(hjª3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¦3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MEhj¢3ubjæ)�”}”(hhh]”hÌ)�”}”(hŒsector to access”h]”hŒsector to access”…”�”}”(hjÁ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j½3h´MEhj¾3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¢3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j½3h´MEhjf3ubjÄ)�”}”(hŒ"``void *data`` data to read/write ”h]”(jÊ)�”}”(hŒ``void *data``”h]”jÐ)�”}”(hjá3h]”hŒ void *data”…”�”}”(hjã3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjß3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MFhjÛ3ubjæ)�”}”(hhh]”hÌ)�”}”(hŒdata to read/write”h]”hŒdata to read/write”…”�”}”(hjú3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jö3h´MFhj÷3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÛ3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jö3h´MFhjf3ubjÄ)�”}”(hŒ,``size_t len`` length in byte to read/write ”h]”(jÊ)�”}”(hŒ``size_t len``”h]”jÐ)�”}”(hj4h]”hŒ size_t len”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MGhj4ubjæ)�”}”(hhh]”hÌ)�”}”(hŒlength in byte to read/write”h]”hŒlength in byte to read/write”…”�”}”(hj34h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j/4h´MGhj04ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j/4h´MGhjf3ubjÄ)�”}”(hŒ=``enum req_op op`` operation (e.g. REQ_OP_READ/REQ_OP_WRITE) ”h]”(jÊ)�”}”(hŒ``enum req_op op``”h]”jÐ)�”}”(hjS4h]”hŒenum req_op op”…”�”}”(hjU4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjQ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MHhjM4ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ)operation (e.g. REQ_OP_READ/REQ_OP_WRITE)”h]”hŒ)operation (e.g. REQ_OP_READ/REQ_OP_WRITE)”…”�”}”(hjl4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh4h´MHhji4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjM4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jh4h´MHhjf3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjJ3ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjŽ4h]”hŒ Description”…”�”}”(hj�4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjŒ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MJhjJ3ubhÌ)�”}”(hŒ„Performs synchronous I/O to **bdev** for **data**/**len**. **data** must be in the kernel direct mapping and not a vmalloc address.”h]”(hŒPerforms synchronous I/O to ”…”�”}”(hj¤4h²hh³Nh´Nubj©)�”}”(hŒ**bdev**”h]”hŒbdev”…”�”}”(hj¬4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¤4ubhŒ for ”…”�”}”(hj¤4h²hh³Nh´Nubj©)�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hj¾4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¤4ubhŒ/”…”�”}”(hj¤4h²hh³Nh´Nubj©)�”}”(hŒ**len**”h]”hŒlen”…”�”}”(hjÐ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¤4ubhŒ. ”…”�”}”(hj¤4h²hh³Nh´Nubj©)�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hjâ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¤4ubhŒ@ must be in the kernel direct mapping and not a vmalloc address.”…”�”}”(hj¤4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MIhjJ3ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbio_copy_data (C function)”Œc.bio_copy_data”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ5void bio_copy_data (struct bio *dst, struct bio *src)”h]”j)�”}”(hŒ4void bio_copy_data(struct bio *dst, struct bio *src)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj5h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mlubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*5h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj5h²hh³j)5h´MlubjC)�”}”(hŒ bio_copy_data”h]”jI)�”}”(hŒ bio_copy_data”h]”hŒ bio_copy_data”…”�”}”(hj<5h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj85ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj5h²hh³j)5h´Mlubj=)�”}”(hŒ"(struct bio *dst, struct bio *src)”h]”(jC)�”}”(hŒstruct bio *dst”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjX5h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjT5ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hje5h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjT5ubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjv5h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjs5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jx5Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj>5sbŒc.bio_copy_data”†”asbuh1hhjT5ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–5h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjT5ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¤5h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjT5ubjI)�”}”(hŒdst”h]”hŒdst”…”�”}”(hj±5h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjT5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjP5ubjC)�”}”(hŒstruct bio *src”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÊ5h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÆ5ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×5h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÆ5ubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjè5h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjå5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jê5Œmodname”NŒ classname”Njj )�”}”j ]”j’5Œc.bio_copy_data”†”asbuh1hhjÆ5ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÆ5ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÆ5ubjI)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hj!6h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÆ5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjP5ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj5h²hh³j)5h´Mlubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj5h²hh³j)5h´Mlubah}”(h]”j5ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j)5h´Mlhj5h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ5copy contents of data buffers from one bio to another”h]”hŒ5copy contents of data buffers from one bio to another”…”�”}”(hjK6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MlhjH6h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj5h²hh³j)5h´Mlubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jc6jšjc6j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX**Parameters** ``struct bio *dst`` destination bio ``struct bio *src`` source bio **Description** Stops when it reaches the end of either **src** or **dst** - that is, copies min(src->bi_size, dst->bi_size) bytes (or the equivalent for lists of bios).”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjm6h]”hŒ Parameters”…”�”}”(hjo6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjk6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mphjg6ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ$``struct bio *dst`` destination bio ”h]”(jÊ)�”}”(hŒ``struct bio *dst``”h]”jÐ)�”}”(hjŒ6h]”hŒstruct bio *dst”…”�”}”(hjŽ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjŠ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mnhj†6ubjæ)�”}”(hhh]”hÌ)�”}”(hŒdestination bio”h]”hŒdestination bio”…”�”}”(hj¥6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¡6h´Mnhj¢6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj†6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¡6h´Mnhjƒ6ubjÄ)�”}”(hŒ``struct bio *src`` source bio ”h]”(jÊ)�”}”(hŒ``struct bio *src``”h]”jÐ)�”}”(hjÅ6h]”hŒstruct bio *src”…”�”}”(hjÇ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÃ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mmhj¿6ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ source bio”h]”hŒ source bio”…”�”}”(hjÞ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÚ6h´MmhjÛ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¿6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÚ6h´Mmhjƒ6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjg6ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj7h]”hŒ Description”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjþ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mohjg6ubhÌ)�”}”(hŒ™Stops when it reaches the end of either **src** or **dst** - that is, copies min(src->bi_size, dst->bi_size) bytes (or the equivalent for lists of bios).”h]”(hŒ(Stops when it reaches the end of either ”…”�”}”(hj7h²hh³Nh´Nubj©)�”}”(hŒ**src**”h]”hŒsrc”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj7ubhŒ or ”…”�”}”(hj7h²hh³Nh´Nubj©)�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hj07h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj7ubhŒ_ - that is, copies min(src->bi_size, dst->bi_size) bytes (or the equivalent for lists of bios).”…”�”}”(hj7h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mohjg6ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbio_endio (C function)”Œ c.bio_endio”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ void bio_endio (struct bio *bio)”h]”j)�”}”(hŒvoid bio_endio(struct bio *bio)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hji7h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hje7h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M;ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx7h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hje7h²hh³jw7h´M;ubjC)�”}”(hŒ bio_endio”h]”jI)�”}”(hŒ bio_endio”h]”hŒ bio_endio”…”�”}”(hjŠ7h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj†7ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhje7h²hh³jw7h´M;ubj=)�”}”(hŒ(struct bio *bio)”h]”jC)�”}”(hŒstruct bio *bio”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¦7h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¢7ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³7h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¢7ubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjÄ7h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÁ7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÆ7Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjŒ7sbŒ c.bio_endio”†”asbuh1hhj¢7ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjä7h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¢7ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjò7h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¢7ubjI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjÿ7h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¢7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjž7ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hje7h²hh³jw7h´M;ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhja7h²hh³jw7h´M;ubah}”(h]”j\7ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jw7h´M;hj^7h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒend I/O on a bio”h]”hŒend I/O on a bio”…”�”}”(hj)8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M;hj&8h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj^7h²hh³jw7h´M;ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jA8jšjA8j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX´**Parameters** ``struct bio *bio`` bio **Description** bio_endio() will end I/O on the whole bio. bio_endio() is the preferred way to end I/O on a bio. No one should call bi_end_io() directly on a bio unless they own it and thus know that it has an end_io function. bio_endio() can be called several times on a bio that has been chained using bio_chain(). The ->bi_end_io() function will only be called the last time.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjK8h]”hŒ Parameters”…”�”}”(hjM8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjI8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M?hjE8ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ``struct bio *bio`` bio ”h]”(jÊ)�”}”(hŒ``struct bio *bio``”h]”jÐ)�”}”(hjj8h]”hŒstruct bio *bio”…”�”}”(hjl8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjh8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M<hjd8ubjæ)�”}”(hhh]”hÌ)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjƒ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j8h´M<hj€8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjd8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j8h´M<hja8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjE8ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj¥8h]”hŒ Description”…”�”}”(hj§8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj£8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M>hjE8ubjÁ™)�”}”(hXlbio_endio() will end I/O on the whole bio. bio_endio() is the preferred way to end I/O on a bio. No one should call bi_end_io() directly on a bio unless they own it and thus know that it has an end_io function. bio_endio() can be called several times on a bio that has been chained using bio_chain(). The ->bi_end_io() function will only be called the last time.”h]”(hÌ)�”}”(hŒÒbio_endio() will end I/O on the whole bio. bio_endio() is the preferred way to end I/O on a bio. No one should call bi_end_io() directly on a bio unless they own it and thus know that it has an end_io function.”h]”hŒÒbio_endio() will end I/O on the whole bio. bio_endio() is the preferred way to end I/O on a bio. No one should call bi_end_io() directly on a bio unless they own it and thus know that it has an end_io function.”…”�”}”(hj¿8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M>hj»8ubhÌ)�”}”(hŒ˜bio_endio() can be called several times on a bio that has been chained using bio_chain(). The ->bi_end_io() function will only be called the last time.”h]”hŒ˜bio_endio() can be called several times on a bio that has been chained using bio_chain(). The ->bi_end_io() function will only be called the last time.”…”�”}”(hjÎ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MBhj»8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀ™h³jÍ8h´M>hjE8ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbio_split (C function)”Œ c.bio_split”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒTstruct bio * bio_split (struct bio *bio, int sectors, gfp_t gfp, struct bio_set *bs)”h]”j)�”}”(hŒRstruct bio *bio_split(struct bio *bio, int sectors, gfp_t gfp, struct bio_set *bs)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÿ8h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Myubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÿ8h²hh³j9h´Myubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hj"9h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j$9Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒ bio_split”sbŒ c.bio_split”†”asbuh1hhjÿ8h²hh³j9h´Myubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjC9h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÿ8h²hh³j9h´Myubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjQ9h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÿ8h²hh³j9h´MyubjC)�”}”(hŒ bio_split”h]”jI)�”}”(hj@9h]”hŒ bio_split”…”�”}”(hjb9h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj^9ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÿ8h²hh³j9h´Myubj=)�”}”(hŒ=(struct bio *bio, int sectors, gfp_t gfp, struct bio_set *bs)”h]”(jC)�”}”(hŒstruct bio *bio”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj}9h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjy9ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ9h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjy9ubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hj›9h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj˜9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j�9Œmodname”NŒ classname”Njj )�”}”j ]”j>9Œ c.bio_split”†”asbuh1hhjy9ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹9h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjy9ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÇ9h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjy9ubjI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjÔ9h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjy9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhju9ubjC)�”}”(hŒ int sectors”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjí9h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjé9ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû9h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjé9ubjI)�”}”(hŒsectors”h]”hŒsectors”…”�”}”(hj :h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjé9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhju9ubjC)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”jI)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj%:h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj":ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j':Œmodname”NŒ classname”Njj )�”}”j ]”j>9Œ c.bio_split”†”asbuh1hhj:ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjC:h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj:ubjI)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hjQ:h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhju9ubjC)�”}”(hŒstruct bio_set *bs”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjj:h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjf:ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjw:h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjf:ubh)�”}”(hhh]”jI)�”}”(hŒbio_set”h]”hŒbio_set”…”�”}”(hjˆ:h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj…:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jŠ:Œmodname”NŒ classname”Njj )�”}”j ]”j>9Œ c.bio_split”†”asbuh1hhjf:ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦:h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjf:ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj´:h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjf:ubjI)�”}”(hŒbs”h]”hŒbs”…”�”}”(hjÁ:h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjf:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhju9ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÿ8h²hh³j9h´Myubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjû8h²hh³j9h´Myubah}”(h]”jö8ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j9h´Myhjø8h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ split a bio”h]”hŒ split a bio”…”�”}”(hjë:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Myhjè:h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjø8h²hh³j9h´Myubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j;jšj;j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX2**Parameters** ``struct bio *bio`` bio to split ``int sectors`` number of sectors to split from the front of **bio** ``gfp_t gfp`` gfp mask ``struct bio_set *bs`` bio set to allocate from **Description** Allocates and returns a new bio which represents **sectors** from the start of **bio**, and updates **bio** to represent the remaining sectors. Unless this is a discard request the newly allocated bio will point to **bio**'s bi_io_vec. It is the caller's responsibility to ensure that neither **bio** nor **bs** are freed before the split bio.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj ;h]”hŒ Parameters”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj ;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M}hj;ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ!``struct bio *bio`` bio to split ”h]”(jÊ)�”}”(hŒ``struct bio *bio``”h]”jÐ)�”}”(hj,;h]”hŒstruct bio *bio”…”�”}”(hj.;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj*;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mzhj&;ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ bio to split”h]”hŒ bio to split”…”�”}”(hjE;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jA;h´MzhjB;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj&;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jA;h´Mzhj#;ubjÄ)�”}”(hŒE``int sectors`` number of sectors to split from the front of **bio** ”h]”(jÊ)�”}”(hŒ``int sectors``”h]”jÐ)�”}”(hje;h]”hŒ int sectors”…”�”}”(hjg;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjc;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M{hj_;ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ4number of sectors to split from the front of **bio**”h]”(hŒ-number of sectors to split from the front of ”…”�”}”(hj~;h²hh³Nh´Nubj©)�”}”(hŒ**bio**”h]”hŒbio”…”�”}”(hj†;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj~;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jz;h´M{hj{;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj_;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jz;h´M{hj#;ubjÄ)�”}”(hŒ``gfp_t gfp`` gfp mask ”h]”(jÊ)�”}”(hŒ ``gfp_t gfp``”h]”jÐ)�”}”(hj¬;h]”hŒ gfp_t gfp”…”�”}”(hj®;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjª;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M|hj¦;ubjæ)�”}”(hhh]”hÌ)�”}”(hŒgfp mask”h]”hŒgfp mask”…”�”}”(hjÅ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÁ;h´M|hjÂ;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¦;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÁ;h´M|hj#;ubjÄ)�”}”(hŒ0``struct bio_set *bs`` bio set to allocate from ”h]”(jÊ)�”}”(hŒ``struct bio_set *bs``”h]”jÐ)�”}”(hjå;h]”hŒstruct bio_set *bs”…”�”}”(hjç;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjã;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M}hjß;ubjæ)�”}”(hhh]”hÌ)�”}”(hŒbio set to allocate from”h]”hŒbio set to allocate from”…”�”}”(hjþ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jú;h´M}hjû;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjß;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jú;h´M}hj#;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj;ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj <h]”hŒ Description”…”�”}”(hj"<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mhj;ubhÌ)�”}”(hŒ�Allocates and returns a new bio which represents **sectors** from the start of **bio**, and updates **bio** to represent the remaining sectors.”h]”(hŒ1Allocates and returns a new bio which represents ”…”�”}”(hj6<h²hh³Nh´Nubj©)�”}”(hŒ **sectors**”h]”hŒsectors”…”�”}”(hj><h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj6<ubhŒ from the start of ”…”�”}”(hj6<h²hh³Nh´Nubj©)�”}”(hŒ**bio**”h]”hŒbio”…”�”}”(hjP<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj6<ubhŒ, and updates ”…”�”}”(hj6<h²hh³Nh´Nubj©)�”}”(hŒ**bio**”h]”hŒbio”…”�”}”(hjb<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj6<ubhŒ$ to represent the remaining sectors.”…”�”}”(hj6<h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M~hj;ubhÌ)�”}”(hŒÇUnless this is a discard request the newly allocated bio will point to **bio**'s bi_io_vec. It is the caller's responsibility to ensure that neither **bio** nor **bs** are freed before the split bio.”h]”(hŒGUnless this is a discard request the newly allocated bio will point to ”…”�”}”(hj{<h²hh³Nh´Nubj©)�”}”(hŒ**bio**”h]”hŒbio”…”�”}”(hjƒ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj{<ubhŒK’s bi_io_vec. It is the caller’s responsibility to ensure that neither ”…”�”}”(hj{<h²hh³Nh´Nubj©)�”}”(hŒ**bio**”h]”hŒbio”…”�”}”(hj•<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj{<ubhŒ nor ”…”�”}”(hj{<h²hh³Nh´Nubj©)�”}”(hŒ**bs**”h]”hŒbs”…”�”}”(hj§<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj{<ubhŒ are freed before the split bio.”…”�”}”(hj{<h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M�hj;ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbio_trim (C function)”Œ c.bio_trim”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ?void bio_trim (struct bio *bio, sector_t offset, sector_t size)”h]”j)�”}”(hŒ>void bio_trim(struct bio *bio, sector_t offset, sector_t size)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjà<h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÜ<h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M³ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï<h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÜ<h²hh³jî<h´M³ubjC)�”}”(hŒbio_trim”h]”jI)�”}”(hŒbio_trim”h]”hŒbio_trim”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjý<ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÜ<h²hh³jî<h´M³ubj=)�”}”(hŒ1(struct bio *bio, sector_t offset, sector_t size)”h]”(jC)�”}”(hŒstruct bio *bio”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj=ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*=h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj=ubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hj;=h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj8=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j==Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj=sbŒ c.bio_trim”†”asbuh1hhj=ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[=h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj=ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hji=h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj=ubjI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjv=h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj=ubjC)�”}”(hŒsector_t offset”h]”(h)�”}”(hhh]”jI)�”}”(hŒsector_t”h]”hŒsector_t”…”�”}”(hj’=h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j”=Œmodname”NŒ classname”Njj )�”}”j ]”jW=Œ c.bio_trim”†”asbuh1hhj‹=ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°=h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‹=ubjI)�”}”(hŒoffset”h]”hŒoffset”…”�”}”(hj¾=h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‹=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj=ubjC)�”}”(hŒ sector_t size”h]”(h)�”}”(hhh]”jI)�”}”(hŒsector_t”h]”hŒsector_t”…”�”}”(hjÚ=h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj×=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÜ=Œmodname”NŒ classname”Njj )�”}”j ]”jW=Œ c.bio_trim”†”asbuh1hhjÓ=ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjø=h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÓ=ubjI)�”}”(hŒsize”h]”hŒsize”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÓ=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj=ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÜ<h²hh³jî<h´M³ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjØ<h²hh³jî<h´M³ubah}”(h]”jÓ<ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jî<h´M³hjÕ<h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ trim a bio”h]”hŒ trim a bio”…”�”}”(hj0>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M³hj->h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÕ<h²hh³jî<h´M³ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jH>jšjH>j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX9**Parameters** ``struct bio *bio`` bio to trim ``sector_t offset`` number of sectors to trim from the front of **bio** ``sector_t size`` size we want to trim **bio** to, in sectors **Description** This function is typically used for bios that are cloned and submitted to the underlying device in parts.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjR>h]”hŒ Parameters”…”�”}”(hjT>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjP>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M·hjL>ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ ``struct bio *bio`` bio to trim ”h]”(jÊ)�”}”(hŒ``struct bio *bio``”h]”jÐ)�”}”(hjq>h]”hŒstruct bio *bio”…”�”}”(hjs>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjo>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M´hjk>ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ bio to trim”h]”hŒ bio to trim”…”�”}”(hjŠ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j†>h´M´hj‡>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjk>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j†>h´M´hjh>ubjÄ)�”}”(hŒH``sector_t offset`` number of sectors to trim from the front of **bio** ”h]”(jÊ)�”}”(hŒ``sector_t offset``”h]”jÐ)�”}”(hjª>h]”hŒsector_t offset”…”�”}”(hj¬>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¨>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mµhj¤>ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ3number of sectors to trim from the front of **bio**”h]”(hŒ,number of sectors to trim from the front of ”…”�”}”(hjÃ>h²hh³Nh´Nubj©)�”}”(hŒ**bio**”h]”hŒbio”…”�”}”(hjË>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÃ>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¿>h´MµhjÀ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¤>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¿>h´Mµhjh>ubjÄ)�”}”(hŒ>``sector_t size`` size we want to trim **bio** to, in sectors ”h]”(jÊ)�”}”(hŒ``sector_t size``”h]”jÐ)�”}”(hjñ>h]”hŒ sector_t size”…”�”}”(hjó>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjï>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M¶hjë>ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+size we want to trim **bio** to, in sectors”h]”(hŒsize we want to trim ”…”�”}”(hj ?h²hh³Nh´Nubj©)�”}”(hŒ**bio**”h]”hŒbio”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj ?ubhŒ to, in sectors”…”�”}”(hj ?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j?h´M¶hj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjë>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j?h´M¶hjh>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjL>ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj>?h]”hŒ Description”…”�”}”(hj@?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjubhÌ)�”}”(hŒiThis function is typically used for bios that are cloned and submitted to the underlying device in parts.”h]”hŒiThis function is typically used for bios that are cloned and submitted to the underlying device in parts.”…”�”}”(hjT?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M·hjL>ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbioset_init (C function)”Œ c.bioset_init”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ_int bioset_init (struct bio_set *bs, unsigned int pool_size, unsigned int front_pad, int flags)”h]”j)�”}”(hŒ^int bioset_init(struct bio_set *bs, unsigned int pool_size, unsigned int front_pad, int flags)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjƒ?h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj?h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Móubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’?h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj?h²hh³j‘?h´MóubjC)�”}”(hŒ bioset_init”h]”jI)�”}”(hŒ bioset_init”h]”hŒ bioset_init”…”�”}”(hj¤?h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ?ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj?h²hh³j‘?h´Móubj=)�”}”(hŒO(struct bio_set *bs, unsigned int pool_size, unsigned int front_pad, int flags)”h]”(jC)�”}”(hŒstruct bio_set *bs”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÀ?h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¼?ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍ?h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¼?ubh)�”}”(hhh]”jI)�”}”(hŒbio_set”h]”hŒbio_set”…”�”}”(hjÞ?h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÛ?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jà?Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj¦?sbŒ c.bioset_init”†”asbuh1hhj¼?ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ?h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¼?ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj @h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¼?ubjI)�”}”(hŒbs”h]”hŒbs”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¼?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¸?ubjC)�”}”(hŒunsigned int pool_size”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj2@h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj.@ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@@h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj.@ubj�)�”}”(hŒint”h]”hŒint”…”�”}”(hjN@h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj.@ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\@h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj.@ubjI)�”}”(hŒ pool_size”h]”hŒ pool_size”…”�”}”(hjj@h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj.@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¸?ubjC)�”}”(hŒunsigned int front_pad”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjƒ@h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj@ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘@h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj@ubj�)�”}”(hŒint”h]”hŒint”…”�”}”(hjŸ@h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj@ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­@h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj@ubjI)�”}”(hŒ front_pad”h]”hŒ front_pad”…”�”}”(hj»@h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¸?ubjC)�”}”(hŒ int flags”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjÔ@h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÐ@ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâ@h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÐ@ubjI)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjð@h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÐ@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¸?ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj?h²hh³j‘?h´Móubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj{?h²hh³j‘?h´Móubah}”(h]”jv?ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j‘?h´Móhjx?h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒInitialize a bio_set”h]”hŒInitialize a bio_set”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MóhjAh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjx?h²hh³j‘?h´Móubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j2Ajšj2Aj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX**Parameters** ``struct bio_set *bs`` pool to initialize ``unsigned int pool_size`` Number of bio and bio_vecs to cache in the mempool ``unsigned int front_pad`` Number of bytes to allocate in front of the returned bio ``int flags`` Flags to modify behavior, currently ``BIOSET_NEED_BVECS`` and ``BIOSET_NEED_RESCUER`` **Description** Set up a bio_set to be used with **bio_alloc_bioset**. Allows the caller to ask for a number of bytes to be allocated in front of the bio. Front pad allocation is useful for embedding the bio inside another structure, to avoid allocating extra data to go with the bio. Note that the bio must be embedded at the END of that structure always, or things will break badly. If ``BIOSET_NEED_BVECS`` is set in **flags**, a separate pool will be allocated for allocating iovecs. This pool is not needed e.g. for bio_init_clone(). If ``BIOSET_NEED_RESCUER`` is set, a workqueue is created which can be used to dispatch queued requests when the mempool runs out of space.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj:Aubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M÷hj6Aubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ*``struct bio_set *bs`` pool to initialize ”h]”(jÊ)�”}”(hŒ``struct bio_set *bs``”h]”jÐ)�”}”(hj[Ah]”hŒstruct bio_set *bs”…”�”}”(hj]Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjYAubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MôhjUAubjæ)�”}”(hhh]”hÌ)�”}”(hŒpool to initialize”h]”hŒpool to initialize”…”�”}”(hjtAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jpAh´MôhjqAubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjUAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jpAh´MôhjRAubjÄ)�”}”(hŒN``unsigned int pool_size`` Number of bio and bio_vecs to cache in the mempool ”h]”(jÊ)�”}”(hŒ``unsigned int pool_size``”h]”jÐ)�”}”(hj”Ah]”hŒunsigned int pool_size”…”�”}”(hj–Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj’Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MõhjŽAubjæ)�”}”(hhh]”hÌ)�”}”(hŒ2Number of bio and bio_vecs to cache in the mempool”h]”hŒ2Number of bio and bio_vecs to cache in the mempool”…”�”}”(hj­Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j©Ah´MõhjªAubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjŽAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j©Ah´MõhjRAubjÄ)�”}”(hŒT``unsigned int front_pad`` Number of bytes to allocate in front of the returned bio ”h]”(jÊ)�”}”(hŒ``unsigned int front_pad``”h]”jÐ)�”}”(hjÍAh]”hŒunsigned int front_pad”…”�”}”(hjÏAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjËAubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MöhjÇAubjæ)�”}”(hhh]”hÌ)�”}”(hŒ8Number of bytes to allocate in front of the returned bio”h]”hŒ8Number of bytes to allocate in front of the returned bio”…”�”}”(hjæAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jâAh´MöhjãAubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÇAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jâAh´MöhjRAubjÄ)�”}”(hŒd``int flags`` Flags to modify behavior, currently ``BIOSET_NEED_BVECS`` and ``BIOSET_NEED_RESCUER`` ”h]”(jÊ)�”}”(hŒ ``int flags``”h]”jÐ)�”}”(hjBh]”hŒ int flags”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MøhjBubjæ)�”}”(hhh]”hÌ)�”}”(hŒUFlags to modify behavior, currently ``BIOSET_NEED_BVECS`` and ``BIOSET_NEED_RESCUER``”h]”(hŒ$Flags to modify behavior, currently ”…”�”}”(hjBh²hh³Nh´NubjÐ)�”}”(hŒ``BIOSET_NEED_BVECS``”h]”hŒBIOSET_NEED_BVECS”…”�”}”(hj'Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjBubhŒ and ”…”�”}”(hjBh²hh³Nh´NubjÐ)�”}”(hŒ``BIOSET_NEED_RESCUER``”h]”hŒBIOSET_NEED_RESCUER”…”�”}”(hj9Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjBubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M÷hjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjBubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jBh´MøhjRAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj6AubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjbBh]”hŒ Description”…”�”}”(hjdBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj`Bubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Múhj6AubjÁ™)�”}”(hX—Set up a bio_set to be used with **bio_alloc_bioset**. Allows the caller to ask for a number of bytes to be allocated in front of the bio. Front pad allocation is useful for embedding the bio inside another structure, to avoid allocating extra data to go with the bio. Note that the bio must be embedded at the END of that structure always, or things will break badly. If ``BIOSET_NEED_BVECS`` is set in **flags**, a separate pool will be allocated for allocating iovecs. This pool is not needed e.g. for bio_init_clone(). If ``BIOSET_NEED_RESCUER`` is set, a workqueue is created which can be used to dispatch queued requests when the mempool runs out of space.”h]”hÌ)�”}”(hX—Set up a bio_set to be used with **bio_alloc_bioset**. Allows the caller to ask for a number of bytes to be allocated in front of the bio. Front pad allocation is useful for embedding the bio inside another structure, to avoid allocating extra data to go with the bio. Note that the bio must be embedded at the END of that structure always, or things will break badly. If ``BIOSET_NEED_BVECS`` is set in **flags**, a separate pool will be allocated for allocating iovecs. This pool is not needed e.g. for bio_init_clone(). If ``BIOSET_NEED_RESCUER`` is set, a workqueue is created which can be used to dispatch queued requests when the mempool runs out of space.”h]”(hŒ!Set up a bio_set to be used with ”…”�”}”(hj|Bh²hh³Nh´Nubj©)�”}”(hŒ**bio_alloc_bioset**”h]”hŒbio_alloc_bioset”…”�”}”(hj„Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj|BubhX?. Allows the caller to ask for a number of bytes to be allocated in front of the bio. Front pad allocation is useful for embedding the bio inside another structure, to avoid allocating extra data to go with the bio. Note that the bio must be embedded at the END of that structure always, or things will break badly. If ”…”�”}”(hj|Bh²hh³Nh´NubjÐ)�”}”(hŒ``BIOSET_NEED_BVECS``”h]”hŒBIOSET_NEED_BVECS”…”�”}”(hj–Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj|BubhŒ is set in ”…”�”}”(hj|Bh²hh³Nh´Nubj©)�”}”(hŒ **flags**”h]”hŒflags”…”�”}”(hj¨Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj|BubhŒr, a separate pool will be allocated for allocating iovecs. This pool is not needed e.g. for bio_init_clone(). If ”…”�”•}”(hj|Bh²hh³Nh´NubjÐ)�”}”(hŒ``BIOSET_NEED_RESCUER``”h]”hŒBIOSET_NEED_RESCUER”…”�”}”(hjºBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj|BubhŒq is set, a workqueue is created which can be used to dispatch queued requests when the mempool runs out of space.”…”�”}”(hj|Bh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MúhjxBubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀ™h³jÒBh´Múhj6Aubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œseq_open (C function)”Œ c.seq_open”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒAint seq_open (struct file *file, const struct seq_operations *op)”h]”j)�”}”(hŒ@int seq_open(struct file *file, const struct seq_operations *op)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjùBh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjõBh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´K+ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjõBh²hh³jCh´K+ubjC)�”}”(hŒseq_open”h]”jI)�”}”(hŒseq_open”h]”hŒseq_open”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjCubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjõBh²hh³jCh´K+ubj=)�”}”(hŒ4(struct file *file, const struct seq_operations *op)”h]”(jC)�”}”(hŒstruct file *file”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj6Ch²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj2Cubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCCh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj2Cubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjTCh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjQCubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jVCŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjCsbŒ c.seq_open”†”asbuh1hhj2Cubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtCh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj2Cubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj‚Ch²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj2CubjI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj�Ch²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj2Cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj.CubjC)�”}”(hŒconst struct seq_operations *op”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj¨Ch²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¤Cubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµCh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¤Cubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÃCh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¤Cubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐCh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¤Cubh)�”}”(hhh]”jI)�”}”(hŒseq_operations”h]”hŒseq_operations”…”�”}”(hjáCh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÞCubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jãCŒmodname”NŒ classname”Njj )�”}”j ]”jpCŒ c.seq_open”†”asbuh1hhj¤Cubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿCh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¤Cubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj Dh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¤CubjI)�”}”(hŒop”h]”hŒop”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¤Cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj.Cubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjõBh²hh³jCh´K+ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjñBh²hh³jCh´K+ubah}”(h]”jìBah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jCh´K+hjîBh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒinitialize sequential file”h]”hŒinitialize sequential file”…”�”}”(hjDDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´K+hjADh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjîBh²hh³jCh´K+ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j\Djšj\Dj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXs**Parameters** ``struct file *file`` file we initialize ``const struct seq_operations *op`` method table describing the sequence **Description** seq_open() sets **file**, associating it with a sequence described by **op**. **op->start\(\)** sets the iterator up and returns the first element of sequence. **op->stop\(\)** shuts it down. **op->next\(\)** returns the next element of sequence. **op->show\(\)** prints element into the buffer. In case of error ->start() and ->next() return ERR_PTR(error). In the end of sequence they return ``NULL``. ->show() returns 0 in case of success and negative number in case of error. Returning SEQ_SKIP means "discard this element and move on". **Note** seq_open() will allocate a struct seq_file and store its pointer in **file->private_data**. This pointer should not be modified.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjfDh]”hŒ Parameters”…”�”}”(hjhDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjdDubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´K/hj`Dubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ)``struct file *file`` file we initialize ”h]”(jÊ)�”}”(hŒ``struct file *file``”h]”jÐ)�”}”(hj…Dh]”hŒstruct file *file”…”�”}”(hj‡Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjƒDubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´K,hjDubjæ)�”}”(hhh]”hÌ)�”}”(hŒfile we initialize”h]”hŒfile we initialize”…”�”}”(hjžDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jšDh´K,hj›Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjDubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jšDh´K,hj|DubjÄ)�”}”(hŒI``const struct seq_operations *op`` method table describing the sequence ”h]”(jÊ)�”}”(hŒ#``const struct seq_operations *op``”h]”jÐ)�”}”(hj¾Dh]”hŒconst struct seq_operations *op”…”�”}”(hjÀDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¼Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´K-hj¸Dubjæ)�”}”(hhh]”hÌ)�”}”(hŒ$method table describing the sequence”h]”hŒ$method table describing the sequence”…”�”}”(hj×Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÓDh´K-hjÔDubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¸Dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÓDh´K-hj|Dubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj`DubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjùDh]”hŒ Description”…”�”}”(hjûDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj÷Dubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´K/hj`DubjÁ™)�”}”(hX"seq_open() sets **file**, associating it with a sequence described by **op**. **op->start\(\)** sets the iterator up and returns the first element of sequence. **op->stop\(\)** shuts it down. **op->next\(\)** returns the next element of sequence. **op->show\(\)** prints element into the buffer. In case of error ->start() and ->next() return ERR_PTR(error). In the end of sequence they return ``NULL``. ->show() returns 0 in case of success and negative number in case of error. Returning SEQ_SKIP means "discard this element and move on". ”h]”hÌ)�”}”(hX!seq_open() sets **file**, associating it with a sequence described by **op**. **op->start\(\)** sets the iterator up and returns the first element of sequence. **op->stop\(\)** shuts it down. **op->next\(\)** returns the next element of sequence. **op->show\(\)** prints element into the buffer. In case of error ->start() and ->next() return ERR_PTR(error). In the end of sequence they return ``NULL``. ->show() returns 0 in case of success and negative number in case of error. Returning SEQ_SKIP means "discard this element and move on".”h]”(hŒseq_open() sets ”…”�”}”(hjEh²hh³Nh´Nubj©)�”}”(hŒ**file**”h]”hŒfile”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjEubhŒ., associating it with a sequence described by ”…”�”}”(hjEh²hh³Nh´Nubj©)�”}”(hŒ**op**”h]”hŒop”…”�”}”(hj-Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjEubhŒ. ”…”�”}”(hjEh²hh³Nh´Nubj©)�”}”(hŒ**op->start\(\)**”h]”hŒ op->start()”…”�”}”(hj?Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjEubhŒA sets the iterator up and returns the first element of sequence. ”…”�”}”(hjEh²hh³Nh´Nubj©)�”}”(hŒ**op->stop\(\)**”h]”hŒ op->stop()”…”�”}”(hjQEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjEubhŒ shuts it down. ”…”�”}”(hjEh²hh³Nh´Nubj©)�”}”(hŒ**op->next\(\)**”h]”hŒ op->next()”…”�”}”(hjcEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjEubhŒ( returns the next element of sequence. ”…”�”}”(hjEh²hh³Nh´Nubj©)�”}”(hŒ**op->show\(\)**”h]”hŒ op->show()”…”�”}”(hjuEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjEubhŒ… prints element into the buffer. In case of error ->start() and ->next() return ERR_PTR(error). In the end of sequence they return ”…”�”}”(hjEh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj‡Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjEubhŒŽ. ->show() returns 0 in case of success and negative number in case of error. Returning SEQ_SKIP means “discard this element and move onâ€�.”…”�”}”(hjEh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´K.hjEubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀ™h³jŸEh´K.hj`DubhÌ)�”}”(hŒ**Note**”h]”j©)�”}”(hj¨Eh]”hŒNote”…”�”}”(hjªEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¦Eubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´K7hj`Dubj¿)�”}”(hhh]”jÄ)�”}”(hŒ€seq_open() will allocate a struct seq_file and store its pointer in **file->private_data**. This pointer should not be modified.”h]”(jÊ)�”}”(hŒ8seq_open() will allocate a struct seq_file and store its”h]”hŒ8seq_open() will allocate a struct seq_file and store its”…”�”}”(hjÅEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´K7hjÁEubjæ)�”}”(hhh]”hÌ)�”}”(hŒGpointer in **file->private_data**. This pointer should not be modified.”h]”(hŒ pointer in ”…”�”}”(hj×Eh²hh³Nh´Nubj©)�”}”(hŒ**file->private_data**”h]”hŒfile->private_data”…”�”}”(hjßEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj×EubhŒ&. This pointer should not be modified.”…”�”}”(hj×Eh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´K8hjÔEubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÁEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÓEh´K7hj¾Eubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj`Dubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œseq_read (C function)”Œ c.seq_read”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒQssize_t seq_read (struct file *file, char __user *buf, size_t size, loff_t *ppos)”h]”j)�”}”(hŒPssize_t seq_read(struct file *file, char __user *buf, size_t size, loff_t *ppos)”h]”(h)�”}”(hhh]”jI)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hj-Fh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj*Fubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j/FŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒseq_read”sbŒ c.seq_read”†”asbuh1hhj&Fh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´K�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOFh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj&Fh²hh³jNFh´K�ubjC)�”}”(hŒseq_read”h]”jI)�”}”(hjKFh]”hŒseq_read”…”�”}”(hjaFh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj]Fubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj&Fh²hh³jNFh´K�ubj=)�”}”(hŒ@(struct file *file, char __user *buf, size_t size, loff_t *ppos)”h]”(jC)�”}”(hŒstruct file *file”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj|Fh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjxFubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰Fh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjxFubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjšFh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj—Fubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jœFŒmodname”NŒ classname”Njj )�”}”j ]”jIFŒ c.seq_read”†”asbuh1hhjxFubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸Fh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjxFubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÆFh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjxFubjI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjÓFh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjxFubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjtFubjC)�”}”(hŒchar __user *buf”h]”(j�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjìFh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjèFubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúFh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjèFubhŒ__user”…”�”}”(hjèFh²hh³Nh´Nubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Gh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjèFubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjèFubjI)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hj'Gh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjèFubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjtFubjC)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjCGh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj@Gubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jEGŒmodname”NŒ classname”Njj )�”}”j ]”jIFŒ c.seq_read”†”asbuh1hhjah"]”h$]”h&]”uh1j1hjah"]”h$]”h&]”uh1j1hj„Gubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj·Gh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj„GubjI)�”}”(hŒppos”h]”hŒppos”…”�”}”(hjÄGh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj„Gubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjtFubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj&Fh²hh³jNFh´K�ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj"Fh²hh³jNFh´K�ubah}”(h]”jFah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jNFh´K�hjFh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ%->read() method for sequential files.”h]”hŒ%->read() method for sequential files.”…”�”}”(hjîGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´K�hjëGh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjFh²hh³jNFh´K�ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jHjšjHj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX**Parameters** ``struct file *file`` the file to read from ``char __user *buf`` the buffer to read to ``size_t size`` the maximum number of bytes to read ``loff_t *ppos`` the current position in the file **Description** Ready-made ->f_op->read()”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjHh]”hŒ Parameters”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjHubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´K”hj Hubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ,``struct file *file`` the file to read from ”h]”(jÊ)�”}”(hŒ``struct file *file``”h]”jÐ)�”}”(hj/Hh]”hŒstruct file *file”…”�”}”(hj1Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj-Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´K‘hj)Hubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe file to read from”h]”hŒthe file to read from”…”�”}”(hjHHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jDHh´K‘hjEHubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj)Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jDHh´K‘hj&HubjÄ)�”}”(hŒ+``char __user *buf`` the buffer to read to ”h]”(jÊ)�”}”(hŒ``char __user *buf``”h]”jÐ)�”}”(hjhHh]”hŒchar __user *buf”…”�”}”(hjjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjfHubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´K’hjbHubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe buffer to read to”h]”hŒthe buffer to read to”…”�”}”(hj�Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j}Hh´K’hj~Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjbHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j}Hh´K’hj&HubjÄ)�”}”(hŒ4``size_t size`` the maximum number of bytes to read ”h]”(jÊ)�”}”(hŒ``size_t size``”h]”jÐ)�”}”(hj¡Hh]”hŒ size_t size”…”�”}”(hj£Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjŸHubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´K“hj›Hubjæ)�”}”(hhh]”hÌ)�”}”(hŒ#the maximum number of bytes to read”h]”hŒ#the maximum number of bytes to read”…”�”}”(hjºHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¶Hh´K“hj·Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj›Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¶Hh´K“hj&HubjÄ)�”}”(hŒ2``loff_t *ppos`` the current position in the file ”h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hjÚHh]”hŒ loff_t *ppos”…”�”}”(hjÜHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjØHubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´K”hjÔHubjæ)�”}”(hhh]”hÌ)�”}”(hŒ the current position in the file”h]”hŒ the current position in the file”…”�”}”(hjóHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jïHh´K”hjðHubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÔHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jïHh´K”hj&Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj HubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjIh]”hŒ Description”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´K–hj HubjÁ™)�”}”(hŒReady-made ->f_op->read()”h]”hÌ)�”}”(hj-Ih]”hŒReady-made ->f_op->read()”…”�”}”(hj/Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´K•hj+Iubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀ™h³jloff_t seq_lseek(struct file *file, loff_t offset, int whence)”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjfIh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjcIubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jhIŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒ seq_lseek”sbŒ c.seq_lseek”†”asbuh1hhj_Ih²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M.ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆIh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj_Ih²hh³j‡Ih´M.ubjC)�”}”(hŒ seq_lseek”h]”jI)�”}”(hj„Ih]”hŒ seq_lseek”…”�”}”(hjšIh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj–Iubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj_Ih²hh³j‡Ih´M.ubj=)�”}”(hŒ.(struct file *file, loff_t offset, int whence)”h]”(jC)�”}”(hŒstruct file *file”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjµIh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj±Iubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂIh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj±Iubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjÓIh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÐIubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÕIŒmodname”NŒ classname”Njj )�”}”j ]”j‚IŒ c.seq_lseek”†”asbuh1hhj±Iubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñIh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj±Iubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÿIh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj±IubjI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj Jh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj±Iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj­IubjC)�”}”(hŒ loff_t offset”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hj(Jh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj%Jubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j*JŒmodname”NŒ classname”Njj )�”}”j ]”j‚IŒ c.seq_lseek”†”asbuh1hhj!Jubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFJh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj!JubjI)�”}”(hŒoffset”h]”hŒoffset”…”�”}”(hjTJh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj!Jubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj­IubjC)�”}”(hŒ int whence”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjmJh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjiJubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{Jh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjiJubjI)�”}”(hŒwhence”h]”hŒwhence”…”�”}”(hj‰Jh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjiJubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj­Iubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj_Ih²hh³j‡Ih´M.ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj[Ih²hh³j‡Ih´M.ubah}”(h]”jVIah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j‡Ih´M.hjXIh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ'->llseek() method for sequential files.”h]”hŒ'->llseek() method for sequential files.”…”�”}”(hj³Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M.hj°Jh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjXIh²hh³j‡Ih´M.ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jËJjšjËJj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hŒË**Parameters** ``struct file *file`` the file in question ``loff_t offset`` new position ``int whence`` 0 for absolute, 1 for relative position **Description** Ready-made ->f_op->llseek()”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÕJh]”hŒ Parameters”…”�”}”(hj×Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÓJubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M2hjÏJubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ+``struct file *file`` the file in question ”h]”(jÊ)�”}”(hŒ``struct file *file``”h]”jÐ)�”}”(hjôJh]”hŒstruct file *file”…”�”}”(hjöJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjòJubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M/hjîJubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe file in question”h]”hŒthe file in question”…”�”}”(hj Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j Kh´M/hj Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjîJubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j Kh´M/hjëJubjÄ)�”}”(hŒ``loff_t offset`` new position ”h]”(jÊ)�”}”(hŒ``loff_t offset``”h]”jÐ)�”}”(hj-Kh]”hŒ loff_t offset”…”�”}”(hj/Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj+Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M0hj'Kubjæ)�”}”(hhh]”hÌ)�”}”(hŒ new position”h]”hŒ new position”…”�”}”(hjFKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jBKh´M0hjCKubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj'Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jBKh´M0hjëJubjÄ)�”}”(hŒ7``int whence`` 0 for absolute, 1 for relative position ”h]”(jÊ)�”}”(hŒ``int whence``”h]”jÐ)�”}”(hjfKh]”hŒ int whence”…”�”}”(hjhKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjdKubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M1hj`Kubjæ)�”}”(hhh]”hÌ)�”}”(hŒ'0 for absolute, 1 for relative position”h]”hŒ'0 for absolute, 1 for relative position”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j{Kh´M1hj|Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj`Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j{Kh´M1hjëJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÏJubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj¡Kh]”hŒ Description”…”�”}”(hj£Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjŸKubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M3hjÏJubjÁ™)�”}”(hŒReady-made ->f_op->llseek()”h]”hÌ)�”}”(hj¹Kh]”hŒReady-made ->f_op->llseek()”…”�”}”(hj»Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M2hj·Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀ™h³jÈKh´M2hjÏJubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œseq_release (C function)”Œ c.seq_release”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ8int seq_release (struct inode *inode, struct file *file)”h]”j)�”}”(hŒ7int seq_release(struct inode *inode, struct file *file)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjïKh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjëKh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MZubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþKh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjëKh²hh³jýKh´MZubjC)�”}”(hŒ seq_release”h]”jI)�”}”(hŒ seq_release”h]”hŒ seq_release”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj Lubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjëKh²hh³jýKh´MZubj=)�”}”(hŒ((struct inode *inode, struct file *file)”h]”(jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj,Lh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj(Lubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9Lh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj(Lubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjJLh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjGLubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jLLŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjLsbŒ c.seq_release”†”asbuh1hhj(Lubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjLh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj(Lubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjxLh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj(LubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj…Lh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj(Lubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj$LubjC)�”}”(hŒstruct file *file”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjžLh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjšLubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«Lh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjšLubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj¼Lh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¹Lubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¾LŒmodname”NŒ classname”Njj )�”}”j ]”jfLŒ c.seq_release”†”asbuh1hhjšLubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚLh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjšLubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjèLh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjšLubjI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjõLh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjšLubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj$Lubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjëKh²hh³jýKh´MZubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjçKh²hh³jýKh´MZubah}”(h]”jâKah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jýKh´MZhjäKh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ4free the structures associated with sequential file.”h]”hŒ4free the structures associated with sequential file.”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MZhjMh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjäKh²hh³jýKh´MZubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j7Mjšj7Mj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hŒû**Parameters** ``struct inode *inode`` its inode ``struct file *file`` file in question **Description** Frees the structures associated with sequential file; can be used as ->f_op->release() if you don't have private data to destroy.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjAMh]”hŒ Parameters”…”�”}”(hjCMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj?Mubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M^hj;Mubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ"``struct inode *inode`` its inode ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj`Mh]”hŒstruct inode *inode”…”�”}”(hjbMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj^Mubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M[hjZMubjæ)�”}”(hhh]”hÌ)�”}”(hŒ its inode”h]”hŒ its inode”…”�”}”(hjyMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³juMh´M[hjvMubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjZMubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³juMh´M[hjWMubjÄ)�”}”(hŒ'``struct file *file`` file in question ”h]”(jÊ)�”}”(hŒ``struct file *file``”h]”jÐ)�”}”(hj™Mh]”hŒstruct file *file”…”�”}”(hj›Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj—Mubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M\hj“Mubjæ)�”}”(hhh]”hÌ)�”}”(hŒfile in question”h]”hŒfile in question”…”�”}”(hj²Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j®Mh´M\hj¯Mubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj“Mubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j®Mh´M\hjWMubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj;MubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÔMh]”hŒ Description”…”�”}”(hjÖMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÒMubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M^hj;MubjÁ™)�”}”(hŒ�Frees the structures associated with sequential file; can be used as ->f_op->release() if you don't have private data to destroy.”h]”hÌ)�”}”(hŒ�Frees the structures associated with sequential file; can be used as ->f_op->release() if you don't have private data to destroy.”h]”hŒƒFrees the structures associated with sequential file; can be used as ->f_op->release() if you don’t have private data to destroy.”…”�”}”(hjîMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M]hjêMubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀ™h³jüMh´M]hj;Mubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œseq_escape_mem (C function)”Œc.seq_escape_mem”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒjvoid seq_escape_mem (struct seq_file *m, const char *src, size_t len, unsigned int flags, const char *esc)”h]”j)�”}”(hŒivoid seq_escape_mem(struct seq_file *m, const char *src, size_t len, unsigned int flags, const char *esc)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj#Nh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjNh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Mkubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2Nh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjNh²hh³j1Nh´MkubjC)�”}”(hŒseq_escape_mem”h]”jI)�”}”(hŒseq_escape_mem”h]”hŒseq_escape_mem”…”�”}”(hjDNh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj@Nubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjNh²hh³j1Nh´Mkubj=)�”}”(hŒV(struct seq_file *m, const char *src, size_t len, unsigned int flags, const char *esc)”h]”(jC)�”}”(hŒstruct seq_file *m”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj`Nh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj\Nubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmNh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj\Nubh)�”}”(hhh]”jI)�”}”(hŒseq_file”h]”hŒseq_file”…”�”}”(hj~Nh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj{Nubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j€NŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjFNsbŒc.seq_escape_mem”†”asbuh1hhj\Nubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžNh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj\Nubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¬Nh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj\NubjI)�”}”(hŒm”h]”hŒm”…”�”}”(hj¹Nh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj\Nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjXNubjC)�”}”(hŒconst char *src”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjÒNh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÎNubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßNh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÎNubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjíNh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÎNubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûNh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÎNubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj Oh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÎNubjI)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÎNubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjXNubjC)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj2Oh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj/Oubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j4OŒmodname”NŒ classname”Njj )�”}”j ]”jšNŒc.seq_escape_mem”†”asbuh1hhj+Oubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPOh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj+OubjI)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj^Oh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj+Oubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjXNubjC)�”}”(hŒunsigned int flags”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjwOh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjsOubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…Oh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjsOubj�)�”}”(hŒint”h]”hŒint”…”�”}”(hj“Oh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjsOubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡Oh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjsOubjI)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj¯Oh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjsOubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjXNubjC)�”}”(hŒconst char *esc”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjÈOh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÄOubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕOh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÄOubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjãOh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÄOubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñOh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÄOubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÿOh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÄOubjI)�”}”(hŒesc”h]”hŒesc”…”�”}”(hj Ph²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÄOubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjXNubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjNh²hh³j1Nh´Mkubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjNh²hh³j1Nh´Mkubah}”(h]”jNah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j1Nh´MkhjNh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ0print data into buffer, escaping some characters”h]”hŒ0print data into buffer, escaping some characters”…”�”}”(hj6Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Mkhj3Ph²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjNh²hh³j1Nh´Mkubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jNPjšjNPj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXÒ**Parameters** ``struct seq_file *m`` target buffer ``const char *src`` source buffer ``size_t len`` size of source buffer ``unsigned int flags`` flags to pass to string_escape_mem() ``const char *esc`` set of characters that need escaping **Description** Puts data into buffer, replacing each occurrence of character from given class (defined by **flags** and **esc**) with printable escaped sequence. Use seq_has_overflowed() to check for errors.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjXPh]”hŒ Parameters”…”�”}”(hjZPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjVPubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MohjRPubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ%``struct seq_file *m`` target buffer ”h]”(jÊ)�”}”(hŒ``struct seq_file *m``”h]”jÐ)�”}”(hjwPh]”hŒstruct seq_file *m”…”�”}”(hjyPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjuPubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MlhjqPubjæ)�”}”(hhh]”hÌ)�”}”(hŒ target buffer”h]”hŒ target buffer”…”�”}”(hj�Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jŒPh´Mlhj�Pubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjqPubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jŒPh´MlhjnPubjÄ)�”}”(hŒ"``const char *src`` source buffer ”h]”(jÊ)�”}”(hŒ``const char *src``”h]”jÐ)�”}”(hj°Ph]”hŒconst char *src”…”�”}”(hj²Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj®Pubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MmhjªPubjæ)�”}”(hhh]”hÌ)�”}”(hŒ source buffer”h]”hŒ source buffer”…”�”}”(hjÉPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÅPh´MmhjÆPubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjªPubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÅPh´MmhjnPubjÄ)�”}”(hŒ%``size_t len`` size of source buffer ”h]”(jÊ)�”}”(hŒ``size_t len``”h]”jÐ)�”}”(hjéPh]”hŒ size_t len”…”�”}”(hjëPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjçPubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MnhjãPubjæ)�”}”(hhh]”hÌ)�”}”(hŒsize of source buffer”h]”hŒsize of source buffer”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jþPh´MnhjÿPubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjãPubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jþPh´MnhjnPubjÄ)�”}”(hŒ<``unsigned int flags`` flags to pass to string_escape_mem() ”h]”(jÊ)�”}”(hŒ``unsigned int flags``”h]”jÐ)�”}”(hj"Qh]”hŒunsigned int flags”…”�”}”(hj$Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MohjQubjæ)�”}”(hhh]”hÌ)�”}”(hŒ$flags to pass to string_escape_mem()”h]”hŒ$flags to pass to string_escape_mem()”…”�”}”(hj;Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j7Qh´Mohj8Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j7Qh´MohjnPubjÄ)�”}”(hŒ9``const char *esc`` set of characters that need escaping ”h]”(jÊ)�”}”(hŒ``const char *esc``”h]”jÐ)�”}”(hj[Qh]”hŒconst char *esc”…”�”}”(hj]Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjYQubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MphjUQubjæ)�”}”(hhh]”hÌ)�”}”(hŒ$set of characters that need escaping”h]”hŒ$set of characters that need escaping”…”�”}”(hjtQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jpQh´MphjqQubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjUQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jpQh´MphjnPubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjRPubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj–Qh]”hŒ Description”…”�”}”(hj˜Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj”Qubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MrhjRPubhÌ)�”}”(hŒ’Puts data into buffer, replacing each occurrence of character from given class (defined by **flags** and **esc**) with printable escaped sequence.”h]”(hŒ[Puts data into buffer, replacing each occurrence of character from given class (defined by ”…”�”}”(hj¬Qh²hh³Nh´Nubj©)�”}”(hŒ **flags**”h]”hŒflags”…”�”}”(hj´Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¬QubhŒ and ”…”�”}”(hj¬Qh²hh³Nh´Nubj©)�”}”(hŒ**esc**”h]”hŒesc”…”�”}”(hjÆQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¬QubhŒ") with printable escaped sequence.”…”�”}”(hj¬Qh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MqhjRPubhÌ)�”}”(hŒ-Use seq_has_overflowed() to check for errors.”h]”hŒ-Use seq_has_overflowed() to check for errors.”…”�”}”(hjßQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MthjRPubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œseq_path (C function)”Œ c.seq_path”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒKint seq_path (struct seq_file *m, const struct path *path, const char *esc)”h]”j)�”}”(hŒJint seq_path(struct seq_file *m, const struct path *path, const char *esc)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj Rh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MÎubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj Rh²hh³jRh´MÎubjC)�”}”(hŒseq_path”h]”jI)�”}”(hŒseq_path”h]”hŒseq_path”…”�”}”(hj/Rh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj+Rubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj Rh²hh³jRh´MÎubj=)�”}”(hŒ>(struct seq_file *m, const struct path *path, const char *esc)”h]”(jC)�”}”(hŒstruct seq_file *m”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjKRh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjGRubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXRh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjGRubh)�”}”(hhh]”jI)�”}”(hŒseq_file”h]”hŒseq_file”…”�”}”(hjiRh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjfRubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jkRŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj1RsbŒ c.seq_path”†”asbuh1hhjGRubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰Rh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjGRubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj—Rh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjGRubjI)�”}”(hj»Nh]”hŒm”…”�”}”(hj¤Rh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjGRubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjCRubjC)�”}”(hŒconst struct path *path”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj¼Rh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¸Rubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉRh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¸Rubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj×Rh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¸Rubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäRh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¸Rubh)�”}”(hhh]”jI)�”}”(hŒpath”h]”hŒpath”…”�”}”(hjõRh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjòRubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j÷RŒmodname”NŒ classname”Njj )�”}”j ]”j…RŒ c.seq_path”†”asbuh1hhj¸Rubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¸Rubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj!Sh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¸RubjI)�”}”(hŒpath”h]”hŒpath”…”�”}”(hj.Sh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¸Rubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjCRubjC)�”}”(hŒconst char *esc”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjGSh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjCSubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTSh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjCSubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjbSh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjCSubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpSh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjCSubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj~Sh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjCSubjI)�”}”(hŒesc”h]”hŒesc”…”�”}”(hj‹Sh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjCSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjCRubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj Rh²hh³jRh´MÎubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjRh²hh³jRh´MÎubah}”(h]”jRah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jRh´MÎhjRh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ&seq_file interface to print a pathname”h]”hŒ&seq_file interface to print a pathname”…”�”}”(hjµSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MÎhj²Sh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjRh²hh³jRh´MÎubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÍSjšjÍSj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX***Parameters** ``struct seq_file *m`` the seq_file handle ``const struct path *path`` the struct path to print ``const char *esc`` set of characters to escape in the output **Description** return the absolute path of 'path', as represented by the dentry / mnt pair in the path parameter.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj×Sh]”hŒ Parameters”…”�”}”(hjÙSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÕSubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MÒhjÑSubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ+``struct seq_file *m`` the seq_file handle ”h]”(jÊ)�”}”(hŒ``struct seq_file *m``”h]”jÐ)�”}”(hjöSh]”hŒstruct seq_file *m”…”�”}”(hjøSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjôSubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MÏhjðSubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe seq_file handle”h]”hŒthe seq_file handle”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j Th´MÏhj Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjðSubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j Th´MÏhjíSubjÄ)�”}”(hŒ5``const struct path *path`` the struct path to print ”h]”(jÊ)�”}”(hŒ``const struct path *path``”h]”jÐ)�”}”(hj/Th]”hŒconst struct path *path”…”�”}”(hj1Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj-Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MÐhj)Tubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe struct path to print”h]”hŒthe struct path to print”…”�”}”(hjHTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jDTh´MÐhjETubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj)Tubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jDTh´MÐhjíSubjÄ)�”}”(hŒ>``const char *esc`` set of characters to escape in the output ”h]”(jÊ)�”}”(hŒ``const char *esc``”h]”jÐ)�”}”(hjhTh]”hŒconst char *esc”…”�”}”(hjjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjfTubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MÑhjbTubjæ)�”}”(hhh]”hÌ)�”}”(hŒ)set of characters to escape in the output”h]”hŒ)set of characters to escape in the output”…”�”}”(hj�Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j}Th´MÑhj~Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjbTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j}Th´MÑhjíSubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÑSubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj£Th]”hŒ Description”…”�”}”(hj¥Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¡Tubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MÓhjÑSubhÌ)�”}”(hŒbreturn the absolute path of 'path', as represented by the dentry / mnt pair in the path parameter.”h]”hŒfreturn the absolute path of ‘path’, as represented by the dentry / mnt pair in the path parameter.”…”�”}”(hj¹Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MÒhjÑSubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œseq_file_path (C function)”Œc.seq_file_path”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒJint seq_file_path (struct seq_file *m, struct file *file, const char *esc)”h]”j)�”}”(hŒIint seq_file_path(struct seq_file *m, struct file *file, const char *esc)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjèTh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjäTh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Mëubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷Th²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjäTh²hh³jöTh´MëubjC)�”}”(hŒ seq_file_path”h]”jI)�”}”(hŒ seq_file_path”h]”hŒ seq_file_path”…”�”}”(hj Uh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjUubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjäTh²hh³jöTh´Mëubj=)�”}”(hŒ8(struct seq_file *m, struct file *file, const char *esc)”h]”(jC)�”}”(hŒstruct seq_file *m”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj%Uh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj!Uubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2Uh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj!Uubh)�”}”(hhh]”jI)�”}”(hŒseq_file”h]”hŒseq_file”…”�”}”(hjCUh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj@Uubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jEUŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj UsbŒc.seq_file_path”†”asbuh1hhj!Uubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcUh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj!Uubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjqUh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj!UubjI)�”}”(hj»Nh]”hŒm”…”�”}”(hj~Uh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj!Uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjUubjC)�”}”(hŒstruct file *file”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj–Uh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj’Uubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£Uh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj’Uubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj´Uh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj±Uubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¶UŒmodname”NŒ classname”Njj )�”}”j ]”j_UŒc.seq_file_path”†”asbuh1hhj’Uubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒUh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj’Uubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjàUh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj’UubjI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjíUh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj’Uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjUubjC)�”}”(hŒconst char *esc”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjVubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjVubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj!Vh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjVubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/Vh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjVubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj=Vh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjVubjI)�”}”(hŒesc”h]”hŒesc”…”�”}”(hjJVh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjVubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjUubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjäTh²hh³jöTh´Mëubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjàTh²hh³jöTh´Mëubah}”(h]”jÛTah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jöTh´MëhjÝTh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ0seq_file interface to print a pathname of a file”h]”hŒ0seq_file interface to print a pathname of a file”…”�”}”(hjtVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MëhjqVh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÝTh²hh³jöTh´Mëubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jŒVjšjŒVj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hŒç**Parameters** ``struct seq_file *m`` the seq_file handle ``struct file *file`` the struct file to print ``const char *esc`` set of characters to escape in the output **Description** return the absolute path to the file.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj–Vh]”hŒ Parameters”…”�”}”(hj˜Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj”Vubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Mïhj�Vubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ+``struct seq_file *m`` the seq_file handle ”h]”(jÊ)�”}”(hŒ``struct seq_file *m``”h]”jÐ)�”}”(hjµVh]”hŒstruct seq_file *m”…”�”}”(hj·Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj³Vubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Mìhj¯Vubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe seq_file handle”h]”hŒthe seq_file handle”…”�”}”(hjÎVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÊVh´MìhjËVubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¯Vubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÊVh´Mìhj¬VubjÄ)�”}”(hŒ/``struct file *file`` the struct file to print ”h]”(jÊ)�”}”(hŒ``struct file *file``”h]”jÐ)�”}”(hjîVh]”hŒstruct file *file”…”�”}”(hjðVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjìVubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MíhjèVubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe struct file to print”h]”hŒthe struct file to print”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jWh´MíhjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjèVubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jWh´Míhj¬VubjÄ)�”}”(hŒ>``const char *esc`` set of characters to escape in the output ”h]”(jÊ)�”}”(hŒ``const char *esc``”h]”jÐ)�”}”(hj'Wh]”hŒconst char *esc”…”�”}”(hj)Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj%Wubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Mîhj!Wubjæ)�”}”(hhh]”hÌ)�”}”(hŒ)set of characters to escape in the output”h]”hŒ)set of characters to escape in the output”…”�”}”(hj@Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jah"]”h$]”h&]”uh1j1hj£Wh²hh³jµWh´M0ubjC)�”}”(hŒ seq_write”h]”jI)�”}”(hŒ seq_write”h]”hŒ seq_write”…”�”}”(hjÈWh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÄWubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj£Wh²hh³jµWh´M0ubj=)�”}”(hŒ4(struct seq_file *seq, const void *data, size_t len)”h]”(jC)�”}”(hŒstruct seq_file *seq”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjäWh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjàWubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñWh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjàWubh)�”}”(hhh]”jI)�”}”(hŒseq_file”h]”hŒseq_file”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÿWubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jXŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÊWsbŒ c.seq_write”†”asbuh1hhjàWubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"Xh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjàWubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj0Xh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjàWubjI)�”}”(hŒseq”h]”hŒseq”…”�”}”(hj=Xh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjàWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÜWubjC)�”}”(hŒconst void *data”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjVXh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjRXubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcXh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjRXubj�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjqXh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjRXubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjRXubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj�Xh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjRXubjI)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjšXh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjRXubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÜWubjC)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj¶Xh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj³Xubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¸XŒmodname”NŒ classname”Njj )�”}”j ]”jXŒ c.seq_write”†”asbuh1hhj¯Xubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔXh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¯XubjI)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjâXh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¯Xubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÜWubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj£Wh²hh³jµWh´M0ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjŸWh²hh³jµWh´M0ubah}”(h]”jšWah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jµWh´M0hjœWh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒwrite arbitrary data to buffer”h]”hŒwrite arbitrary data to buffer”…”�”}”(hj Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M0hj Yh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjœWh²hh³jµWh´M0ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j$Yjšj$Yj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hŒì**Parameters** ``struct seq_file *seq`` seq_file identifying the buffer to which data should be written ``const void *data`` data address ``size_t len`` number of bytes **Description** Return 0 on success, non-zero otherwise.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj.Yh]”hŒ Parameters”…”�”}”(hj0Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj,Yubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M4hj(Yubj¿)�”}”(hhh]”(jÄ)�”}”(hŒY``struct seq_file *seq`` seq_file identifying the buffer to which data should be written ”h]”(jÊ)�”}”(hŒ``struct seq_file *seq``”h]”jÐ)�”}”(hjMYh]”hŒstruct seq_file *seq”…”�”}”(hjOYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjKYubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M1hjGYubjæ)�”}”(hhh]”hÌ)�”}”(hŒ?seq_file identifying the buffer to which data should be written”h]”hŒ?seq_file identifying the buffer to which data should be written”…”�”}”(hjfYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jbYh´M1hjcYubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjGYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jbYh´M1hjDYubjÄ)�”}”(hŒ"``const void *data`` data address ”h]”(jÊ)�”}”(hŒ``const void *data``”h]”jÐ)�”}”(hj†Yh]”hŒconst void *data”…”�”}”(hjˆYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj„Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M2hj€Yubjæ)�”}”(hhh]”hÌ)�”}”(hŒ data address”h]”hŒ data address”…”�”}”(hjŸYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j›Yh´M2hjœYubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj€Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j›Yh´M2hjDYubjÄ)�”}”(hŒ``size_t len`` number of bytes ”h]”(jÊ)�”}”(hŒ``size_t len``”h]”jÐ)�”}”(hj¿Yh]”hŒ size_t len”…”�”}”(hjÁYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj½Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M3hj¹Yubjæ)�”}”(hhh]”hÌ)�”}”(hŒnumber of bytes”h]”hŒnumber of bytes”…”�”}”(hjØYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÔYh´M3hjÕYubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¹Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÔYh´M3hjDYubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj(YubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjúYh]”hŒ Description”…”�”}”(hjüYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjøYubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M5hj(YubhÌ)�”}”(hŒ(Return 0 on success, non-zero otherwise.”h]”hŒ(Return 0 on success, non-zero otherwise.”…”�”}”(•hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M4hj(Yubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œseq_pad (C function)”Œ c.seq_pad”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ)void seq_pad (struct seq_file *m, char c)”h]”j)�”}”(hŒ(void seq_pad(struct seq_file *m, char c)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj?Zh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj;Zh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MDubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNZh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj;Zh²hh³jMZh´MDubjC)�”}”(hŒseq_pad”h]”jI)�”}”(hŒseq_pad”h]”hŒseq_pad”…”�”}”(hj`Zh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj\Zubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj;Zh²hh³jMZh´MDubj=)�”}”(hŒ(struct seq_file *m, char c)”h]”(jC)�”}”(hŒstruct seq_file *m”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj|Zh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjxZubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰Zh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjxZubh)�”}”(hhh]”jI)�”}”(hŒseq_file”h]”hŒseq_file”…”�”}”(hjšZh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj—Zubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jœZŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjbZsbŒ c.seq_pad”†”asbuh1hhjxZubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºZh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjxZubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÈZh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjxZubjI)�”}”(hj»Nh]”hŒm”…”�”}”(hjÕZh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjxZubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjtZubjC)�”}”(hŒchar c”h]”(j�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjíZh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjéZubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûZh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjéZubjI)�”}”(hj“h]”hŒc”…”�”}”(hj [h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjéZubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjtZubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj;Zh²hh³jMZh´MDubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj7Zh²hh³jMZh´MDubah}”(h]”j2Zah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jMZh´MDhj4Zh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒwrite padding spaces to buffer”h]”hŒwrite padding spaces to buffer”…”�”}”(hj2[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MDhj/[h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj4Zh²hh³jMZh´MDubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jJ[jšjJ[j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hŒ£**Parameters** ``struct seq_file *m`` seq_file identifying the buffer to which data should be written ``char c`` the byte to append after padding if non-zero”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjT[h]”hŒ Parameters”…”�”}”(hjV[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjR[ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MHhjN[ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒW``struct seq_file *m`` seq_file identifying the buffer to which data should be written ”h]”(jÊ)�”}”(hŒ``struct seq_file *m``”h]”jÐ)�”}”(hjs[h]”hŒstruct seq_file *m”…”�”}”(hju[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjq[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MEhjm[ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ?seq_file identifying the buffer to which data should be written”h]”hŒ?seq_file identifying the buffer to which data should be written”…”�”}”(hjŒ[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jˆ[h´MEhj‰[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjm[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jˆ[h´MEhjj[ubjÄ)�”}”(hŒ7``char c`` the byte to append after padding if non-zero”h]”(jÊ)�”}”(hŒ ``char c``”h]”jÐ)�”}”(hj¬[h]”hŒchar c”…”�”}”(hj®[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjª[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MGhj¦[ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ,the byte to append after padding if non-zero”h]”hŒ,the byte to append after padding if non-zero”…”�”}”(hjÅ[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MFhjÂ[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¦[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÁ[h´MGhjj[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjN[ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œseq_hlist_start (C function)”Œc.seq_hlist_start”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒIstruct hlist_node * seq_hlist_start (struct hlist_head *head, loff_t pos)”h]”j)�”}”(hŒGstruct hlist_node *seq_hlist_start(struct hlist_head *head, loff_t pos)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj\h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MÀubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj\h²hh³j\h´MÀubh)�”}”(hhh]”jI)�”}”(hŒ hlist_node”h]”hŒ hlist_node”…”�”}”(hj%\h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj"\ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j'\Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒseq_hlist_start”sbŒc.seq_hlist_start”†”asbuh1hhj\h²hh³j\h´MÀubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF\h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj\h²hh³j\h´MÀubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjT\h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj\h²hh³j\h´MÀubjC)�”}”(hŒseq_hlist_start”h]”jI)�”}”(hjC\h]”hŒseq_hlist_start”…”�”}”(hje\h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhja\ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj\h²hh³j\h´MÀubj=)�”}”(hŒ%(struct hlist_head *head, loff_t pos)”h]”(jC)�”}”(hŒstruct hlist_head *head”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj€\h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj|\ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�\h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj|\ubh)�”}”(hhh]”jI)�”}”(hŒ hlist_head”h]”hŒ hlist_head”…”�”}”(hjž\h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj›\ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j \Œmodname”NŒ classname”Njj )�”}”j ]”jA\Œc.seq_hlist_start”†”asbuh1hhj|\ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼\h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj|\ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÊ\h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj|\ubjI)�”}”(hŒhead”h]”hŒhead”…”�”}”(hj×\h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj|\ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjx\ubjC)�”}”(hŒ loff_t pos”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjó\h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjð\ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jõ\Œmodname”NŒ classname”Njj )�”}”j ]”jA\Œc.seq_hlist_start”†”asbuh1hhjì\ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjì\ubjI)�”}”(hŒpos”h]”hŒpos”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjì\ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjx\ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj\h²hh³j\h´MÀubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjþ[h²hh³j\h´MÀubah}”(h]”jù[ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j\h´MÀhjû[h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒstart an iteration of a hlist”h]”hŒstart an iteration of a hlist”…”�”}”(hjI]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MÀhjF]h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjû[h²hh³j\h´MÀubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™ja]jšja]j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hŒ«**Parameters** ``struct hlist_head *head`` the head of the hlist ``loff_t pos`` the start position of the sequence **Description** Called at seq_file->op->start().”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjk]h]”hŒ Parameters”…”�”}”(hjm]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hji]ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MÄhje]ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ2``struct hlist_head *head`` the head of the hlist ”h]”(jÊ)�”}”(hŒ``struct hlist_head *head``”h]”jÐ)�”}”(hjŠ]h]”hŒstruct hlist_head *head”…”�”}”(hjŒ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjˆ]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MÁhj„]ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe head of the hlist”h]”hŒthe head of the hlist”…”�”}”(hj£]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jŸ]h´MÁhj ]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj„]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jŸ]h´MÁhj�]ubjÄ)�”}”(hŒ2``loff_t pos`` the start position of the sequence ”h]”(jÊ)�”}”(hŒ``loff_t pos``”h]”jÐ)�”}”(hjÃ]h]”hŒ loff_t pos”…”�”}”(hjÅ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÁ]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MÂhj½]ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ"the start position of the sequence”h]”hŒ"the start position of the sequence”…”�”}”(hjÜ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jØ]h´MÂhjÙ]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj½]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jØ]h´MÂhj�]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hje]ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjþ]h]”hŒ Description”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjü]ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MÄhje]ubhÌ)�”}”(hŒ Called at seq_file->op->start().”h]”hŒ Called at seq_file->op->start().”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MÃhje]ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ!seq_hlist_start_head (C function)”Œc.seq_hlist_start_head”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒNstruct hlist_node * seq_hlist_start_head (struct hlist_head *head, loff_t pos)”h]”j)�”}”(hŒLstruct hlist_node *seq_hlist_start_head(struct hlist_head *head, loff_t pos)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjC^h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj?^h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MÒubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ^h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj?^h²hh³jP^h´MÒubh)�”}”(hhh]”jI)�”}”(hŒ hlist_node”h]”hŒ hlist_node”…”�”}”(hjb^h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj_^ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jd^Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒseq_hlist_start_head”sbŒc.seq_hlist_start_head”†”asbuh1hhj?^h²hh³jP^h´MÒubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ^h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj?^h²hh³jP^h´MÒubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj‘^h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj?^h²hh³jP^h´MÒubjC)�”}”(hŒseq_hlist_start_head”h]”jI)�”}”(hj€^h]”hŒseq_hlist_start_head”…”�”}”(hj¢^h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjž^ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj?^h²hh³jP^h´MÒubj=)�”}”(hŒ%(struct hlist_head *head, loff_t pos)”h]”(jC)�”}”(hŒstruct hlist_head *head”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj½^h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¹^ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊ^h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¹^ubh)�”}”(hhh]”jI)�”}”(hŒ hlist_head”h]”hŒ hlist_head”…”�”}”(hjÛ^h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjØ^ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÝ^Œmodname”NŒ classname”Njj )�”}”j ]”j~^Œc.seq_hlist_start_head”†”asbuh1hhj¹^ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù^h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¹^ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¹^ubjI)�”}”(hŒhead”h]”hŒhead”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¹^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjµ^ubjC)�”}”(hŒ loff_t pos”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hj0_h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj-_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j2_Œmodname”NŒ classname”Njj )�”}”j ]”j~^Œc.seq_hlist_start_head”†”asbuh1hhj)_ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN_h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj)_ubjI)�”}”(hŒpos”h]”hŒpos”…”�”}”(hj\_h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj)_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjµ^ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj?^h²hh³jP^h´MÒubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj;^h²hh³jP^h´MÒubah}”(h]”j6^ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jP^h´MÒhj8^h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒstart an iteration of a hlist”h]”hŒstart an iteration of a hlist”…”�”}”(hj†_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MÒhjƒ_h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj8^h²hh³jP^h´MÒubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jž_jšjž_j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hŒö**Parameters** ``struct hlist_head *head`` the head of the hlist ``loff_t pos`` the start position of the sequence **Description** Called at seq_file->op->start(). Call this function if you want to print a header at the top of the output.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj¨_h]”hŒ Parameters”…”�”}”(hjª_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¦_ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MÖhj¢_ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ2``struct hlist_head *head`` the head of the hlist ”h]”(jÊ)�”}”(hŒ``struct hlist_head *head``”h]”jÐ)�”}”(hjÇ_h]”hŒstruct hlist_head *head”…”�”}”(hjÉ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÅ_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MÓhjÁ_ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe head of the hlist”h]”hŒthe head of the hlist”…”�”}”(hjà_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÜ_h´MÓhjÝ_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÁ_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÜ_h´MÓhj¾_ubjÄ)�”}”(hŒ2``loff_t pos`` the start position of the sequence ”h]”(jÊ)�”}”(hŒ``loff_t pos``”h]”jÐ)�”}”(hj`h]”hŒ loff_t pos”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjþ_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MÔhjú_ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ"the start position of the sequence”h]”hŒ"the start position of the sequence”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j`h´MÔhj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjú_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j`h´MÔhj¾_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj¢_ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj;`h]”hŒ Description”…”�”}”(hj=`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj9`ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MÖhj¢_ubhÌ)�”}”(hŒkCalled at seq_file->op->start(). Call this function if you want to print a header at the top of the output.”h]”hŒkCalled at seq_file->op->start(). Call this function if you want to print a header at the top of the output.”…”�”}”(hjQ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MÕhj¢_ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œseq_hlist_next (C function)”Œc.seq_hlist_next”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒSstruct hlist_node * seq_hlist_next (void *v, struct hlist_head *head, loff_t *ppos)”h]”j)�”}”(hŒQstruct hlist_node *seq_hlist_next(void *v, struct hlist_head *head, loff_t *ppos)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj€`h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj|`h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Mãubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽ`h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj|`h²hh³j�`h´Mãubh)�”}”(hhh]”jI)�”}”(hŒ hlist_node”h]”hŒ hlist_node”…”�”}”(hjŸ`h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjœ`ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¡`Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒseq_hlist_next”sbŒc.seq_hlist_next”†”asbuh1hhj|`h²hh³j�`h´Mãubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀ`h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj|`h²hh³j�`h´Mãubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÎ`h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj|`h²hh³j�`h´MãubjC)�”}”(hŒseq_hlist_next”h]”jI)�”}”(hj½`h]”hŒseq_hlist_next”…”�”}”(hjß`h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÛ`ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj|`h²hh³j�`h´Mãubj=)�”}”(hŒ0(void *v, struct hlist_head *head, loff_t *ppos)”h]”(jC)�”}”(hŒvoid *v”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjú`h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjö`ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjö`ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjö`ubjI)�”}”(hŒv”h]”hŒv”…”�”}”(hj#ah²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjö`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjò`ubjC)�”}”(hŒstruct hlist_head *head”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjah"]”h$]”h&]”uh1j1hj8aubh)�”}”(hhh]”jI)�”}”(hŒ hlist_head”h]”hŒ hlist_head”…”�”}”(hjZah²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjWaubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j\aŒmodname”NŒ classname”Njj )�”}”j ]”j»`Œc.seq_hlist_next”†”asbuh1hhj8aubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxah²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj8aubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj†ah²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj8aubjI)�”}”(hŒhead”h]”hŒhead”…”�”}”(hj“ah²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj8aubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjò`ubjC)�”}”(hŒ loff_t *ppos”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hj¯ah²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¬aubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j±aŒmodname”NŒ classname”Njj )�”}”j ]”j»`Œc.seq_hlist_next”†”asbuh1hhj¨aubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍah²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¨aubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÛah²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¨aubjI)�”}”(hŒppos”h]”hŒppos”…”�”}”(hjèah²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¨aubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjò`ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj|`h²hh³j�`h´Mãubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjx`h²hh³j�`h´Mãubah}”(h]”js`ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j�`h´Mãhju`h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ&move to the next position of the hlist”h]”hŒ&move to the next position of the hlist”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Mãhjbh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhju`h²hh³j�`h´Mãubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j*bjšj*bj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hŒÂ**Parameters** ``void *v`` the current iterator ``struct hlist_head *head`` the head of the hlist ``loff_t *ppos`` the current position **Description** Called at seq_file->op->next().”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj4bh]”hŒ Parameters”…”�”}”(hj6bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj2bubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Mçhj.bubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ!``void *v`` the current iterator ”h]”(jÊ)�”}”(hŒ ``void *v``”h]”jÐ)�”}”(hjSbh]”hŒvoid *v”…”�”}”(hjUbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjQbubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MähjMbubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe current iterator”h]”hŒthe current iterator”…”�”}”(hjlbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jhbh´Mähjibubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjMbubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jhbh´MähjJbubjÄ)�”}”(hŒ2``struct hlist_head *head`` the head of the hlist ”h]”(jÊ)�”}”(hŒ``struct hlist_head *head``”h]”jÐ)�”}”(hjŒbh]”hŒstruct hlist_head *head”…”�”}”(hjŽbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjŠbubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Måhj†bubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe head of the hlist”h]”hŒthe head of the hlist”…”�”}”(hj¥bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¡bh´Måhj¢bubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj†bubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¡bh´MåhjJbubjÄ)�”}”(hŒ&``loff_t *ppos`` the current position ”h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hjÅbh]”hŒ loff_t *ppos”…”�”}”(hjÇbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÃbubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Mæhj¿bubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe current position”h]”hŒthe current position”…”�”}”(hjÞbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÚbh´MæhjÛbubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¿bubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÚbh´MæhjJbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj.bubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjch]”hŒ Description”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjþbubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Mèhj.bubhÌ)�”}”(hŒCalled at seq_file->op->next().”h]”hŒCalled at seq_file->op->next().”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Mçhj.bubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ seq_hlist_start_rcu (C function)”Œc.seq_hlist_start_rcu”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒMstruct hlist_node * seq_hlist_start_rcu (struct hlist_head *head, loff_t pos)”h]”j)�”}”(hŒKstruct hlist_node *seq_hlist_start_rcu(struct hlist_head *head, loff_t pos)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjEch²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjAch²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Møubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSch²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjAch²hh³jRch´Møubh)�”}”(hhh]”jI)�”}”(hŒ hlist_node”h]”hŒ hlist_node”…”�”}”(hjdch²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjacubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jfcŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒseq_hlist_start_rcu”sbŒc.seq_hlist_start_rcu”†”asbuh1hhjAch²hh³jRch´Møubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…ch²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjAch²hh³jRch´Møubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj“ch²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjAch²hh³jRch´MøubjC)�”}”(hŒseq_hlist_start_rcu”h]”jI)�”}”(hj‚ch]”hŒseq_hlist_start_rcu”…”�”}”(hj¤ch²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj cubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjAch²hh³jRch´Møubj=)�”}”(hŒ%(struct hlist_head *head, loff_t pos)”h]”(jC)�”}”(hŒstruct hlist_head *head”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¿ch²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj»cubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌch²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj»cubh)�”}”(hhh]”jI)�”}”(hŒ hlist_head”h]”hŒ hlist_head”…”�”}”(hjÝch²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÚcubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jßcŒmodname”NŒ classname”Njj )�”}”j ]”j€cŒc.seq_hlist_start_rcu”†”asbuh1hhj»cubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûch²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj»cubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj dh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj»cubjI)�”}”(hŒhead”h]”hŒhead”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj»cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj·cubjC)�”}”(hŒ loff_t pos”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hj2dh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj/dubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j4dŒmodname”NŒ classname”Njj )�”}”j ]”j€cŒc.seq_hlist_start_rcu”†”asbuh1hhj+dubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPdh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj+dubjI)�”}”(hŒpos”h]”hŒpos”…”�”}”(hj^dh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj+dubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj·cubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjAch²hh³jRch´Møubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj=ch²hh³jRch´Møubah}”(h]”j8cah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jRch´Møhj:ch²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ.start an iteration of a hlist protected by RCU”h]”hŒ.start an iteration of a hlist protected by RCU”…”�”}”(hjˆdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Møhj…dh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj:ch²hh³jRch´Møubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j djšj dj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXb**Parameters** ``struct hlist_head *head`` the head of the hlist ``loff_t pos`` the start position of the sequence **Description** Called at seq_file->op->start(). This list-traversal primitive may safely run concurrently with the _rcu list-mutation primitives such as hlist_add_head_rcu() as long as the traversal is guarded by rcu_read_lock().”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjªdh]”hŒ Parameters”…”�”}”(hj¬dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¨dubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Mühj¤dubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ2``struct hlist_head *head`` the head of the hlist ”h]”(jÊ)�”}”(hŒ``struct hlist_head *head``”h]”jÐ)�”}”(hjÉdh]”hŒstruct hlist_head *head”…”�”}”(hjËdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÇdubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MùhjÃdubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe head of the hlist”h]”hŒthe head of the hlist”…”�”}”(hjâdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÞdh´Mùhjßdubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÃdubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÞdh´MùhjÀdubjÄ)�”}”(hŒ2``loff_t pos`` the start position of the sequence ”h]”(jÊ)�”}”(hŒ``loff_t pos``”h]”jÐ)�”}”(hjeh]”hŒ loff_t pos”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjeubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Múhjüdubjæ)�”}”(hhh]”hÌ)�”}”(hŒ"the start position of the sequence”h]”hŒ"the start position of the sequence”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jeh´Múhjeubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjüdubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jeh´MúhjÀdubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj¤dubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj=eh]”hŒ Description”…”�”}”(hj?eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj;eubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Mühj¤dubhÌ)�”}”(hŒ Called at seq_file->op->start().”h]”hŒ Called at seq_file->op->start().”…”�”}”(hjSeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Mûhj¤dubhÌ)�”}”(hŒµThis list-traversal primitive may safely run concurrently with the _rcu list-mutation primitives such as hlist_add_head_rcu() as long as the traversal is guarded by rcu_read_lock().”h]”hŒµThis list-traversal primitive may safely run concurrently with the _rcu list-mutation primitives such as hlist_add_head_rcu() as long as the traversal is guarded by rcu_read_lock().”…”�”}”(hjbeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Mýhj¤dubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ%seq_hlist_start_head_rcu (C function)”Œc.seq_hlist_start_head_rcu”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒRstruct hlist_node * seq_hlist_start_head_rcu (struct hlist_head *head, loff_t pos)”h]”j)�”}”(hŒPstruct hlist_node *seq_hlist_start_head_rcu(struct hlist_head *head, loff_t pos)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj‘eh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj�eh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸeh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�eh²hh³jžeh´Mubh)�”}”(hhh]”jI)�”}”(hŒ hlist_node”h]”hŒ hlist_node”…”�”}”(hj°eh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj­eubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j²eŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒseq_hlist_start_head_rcu”sbŒc.seq_hlist_start_head_rcu”†”asbuh1hhj�eh²hh³jžeh´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑeh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�eh²hh³jžeh´Mubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjßeh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj�eh²hh³jžeh´MubjC)�”}”(hŒseq_hlist_start_head_rcu”h]”jI)�”}”(hjÎeh]”hŒseq_hlist_start_head_rcu”…”�”}”(hjðeh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjìeubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj�eh²hh³jžeh´Mubj=)�”}”(hŒ%(struct hlist_head *head, loff_t pos)”h]”(jC)�”}”(hŒstruct hlist_head *head”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj fh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjfubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjfubh)�”}”(hhh]”jI)�”}”(hŒ hlist_head”h]”hŒ hlist_head”…”�”}”(hj)fh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj&fubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j+fŒmodname”NŒ classname”Njj )�”}”j ]”jÌeŒc.seq_hlist_start_head_rcu”†”asbuh1hhjfubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGfh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjfubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjUfh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjfubjI)�”}”(hŒhead”h]”hŒhead”…”�”}”(hjbfh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjfubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjfubjC)�”}”(hŒ loff_t pos”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hj~fh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj{fubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j€fŒmodname”NŒ classname”Njj )�”}”j ]”jÌeŒc.seq_hlist_start_head_rcu”†”asbuh1hhjwfubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœfh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjwfubjI)�”}”(hŒpos”h]”hŒpos”…”�”}”(hjªfh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjwfubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjfubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj�eh²hh³jžeh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj‰eh²hh³jžeh´Mubah}”(h]”j„eah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jžeh´Mhj†eh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ.start an iteration of a hlist protected by RCU”h]”hŒ.start an iteration of a hlist protected by RCU”…”�”}”(hjÔfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MhjÑfh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj†eh²hh³jžeh´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jìfjšjìfj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX­**Parameters** ``struct hlist_head *head`` the head of the hlist ``loff_t pos`` the start position of the sequence **Description** Called at seq_file->op->start(). Call this function if you want to print a header at the top of the output. This list-traversal primitive may safely run concurrently with the _rcu list-mutation primitives such as hlist_add_head_rcu() as long as the traversal is guarded by rcu_read_lock().”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjöfh]”hŒ Parameters”…”�”}”(hjøfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjôfubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Mhjðfubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ2``struct hlist_head *head`` the head of the hlist ”h]”(jÊ)�”}”(hŒ``struct hlist_head *head``”h]”jÐ)�”}”(hjgh]”hŒstruct hlist_head *head”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjgubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Mhjgubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe head of the hlist”h]”hŒthe head of the hlist”…”�”}”(hj.gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j*gh´Mhj+gubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjgubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j*gh´Mhj gubjÄ)�”}”(hŒ2``loff_t pos`` the start position of the sequence ”h]”(jÊ)�”}”(hŒ``loff_t pos``”h]”jÐ)�”}”(hjNgh]”hŒ loff_t pos”…”�”}”(hjPgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjLgubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MhjHgubjæ)�”}”(hhh]”hÌ)�”}”(hŒ"the start position of the sequence”h]”hŒ"the start position of the sequence”…”�”}”(hjggh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jcgh´Mhjdgubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjHgubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jcgh´Mhj gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjðfubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj‰gh]”hŒ Description”…”�”}”(hj‹gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‡gubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MhjðfubhÌ)�”}”(hŒkCalled at seq_file->op->start(). Call this function if you want to print a header at the top of the output.”h]”hŒkCalled at seq_file->op->start(). Call this function if you want to print a header at the top of the output.”…”�”}”(hjŸgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MhjðfubhÌ)�”}”(hŒµThis list-traversal primitive may safely run concurrently with the _rcu list-mutation primitives such as hlist_add_head_rcu() as long as the traversal is guarded by rcu_read_lock().”h]”hŒµThis list-traversal primitive may safely run concurrently with the _rcu list-mutation primitives such as hlist_add_head_rcu() as long as the traversal is guarded by rcu_read_lock().”…”�”}”(hj®gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Mhjðfubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œseq_hlist_next_rcu (C function)”Œc.seq_hlist_next_rcu”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒWstruct hlist_node * seq_hlist_next_rcu (void *v, struct hlist_head *head, loff_t *ppos)”h]”j)�”}”(hŒUstruct hlist_node *seq_hlist_next_rcu(void *v, struct hlist_head *head, loff_t *ppos)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÝgh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÙgh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M%ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëgh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÙgh²hh³jêgh´M%ubh)�”}”(hhh]”jI)�”}”(hŒ hlist_node”h]”hŒ hlist_node”…”�”}”(hjügh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjùgubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jþgŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒseq_hlist_next_rcu”sbŒc.seq_hlist_next_rcu”†”asbuh1hhjÙgh²hh³jêgh´M%ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÙgh²hh³jêgh´M%ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj+hh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÙgh²hh³jêgh´M%ubjC)�”}”(hŒseq_hlist_next_rcu”h]”jI)�”}”(hjhh]”hŒseq_hlist_next_rcu”…”�”}”(hjah"]”h$]”h&]”uh1j1hjShubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjshh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjShubjI)�”}”(hj%ah]”hŒv”…”�”}”(hj€hh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjShubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjOhubjC)�”}”(hŒstruct hlist_head *head”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj˜hh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj”hubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥hh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj”hubh)�”}”(hhh]”jI)�”}”(hŒ hlist_head”h]”hŒ hlist_head”…”�”}”(hj¶hh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj³hubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¸hŒmodname”NŒ classname”Njj )�”}”j ]”jhŒc.seq_hlist_next_rcu”†”asbuh1hhj”hubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔhh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj”hubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjâhh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj”hubjI)�”}”(hŒhead”h]”hŒhead”…”�”}”(hjïhh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj”hubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjOhubjC)�”}”(hŒ loff_t *ppos”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hj ih²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjiubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j iŒmodname”NŒ classname”Njj )�”}”j ]”jhŒc.seq_hlist_next_rcu”†”asbuh1hhjiubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)ih²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjiubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj7ih²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjiubjI)�”}”(hŒppos”h]”hŒppos”…”�”}”(hjDih²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjiubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjOhubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÙgh²hh³jêgh´M%ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÕgh²hh³jêgh´M%ubah}”(h]”jÐgah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jêgh´M%hjÒgh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ7move to the next position of the hlist protected by RCU”h]”hŒ7move to the next position of the hlist protected by RCU”…”�”}”(hjnih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M%hjkih²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÒgh²hh³jêgh´M%ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j†ijšj†ij›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXy**Parameters** ``void *v`` the current iterator ``struct hlist_head *head`` the head of the hlist ``loff_t *ppos`` the current position **Description** Called at seq_file->op->next(). This list-traversal primitive may safely run concurrently with the _rcu list-mutation primitives such as hlist_add_head_rcu() as long as the traversal is guarded by rcu_read_lock().”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj�ih]”hŒ Parameters”…”�”}”(hj’ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjŽiubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M)hjŠiubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ!``void *v`` the current iterator ”h]”(jÊ)�”}”(hŒ ``void *v``”h]”jÐ)�”}”(hj¯ih]”hŒvoid *v”…”�”}”(hj±ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj­iubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M&hj©iubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe current iterator”h]”hŒthe current iterator”…”�”}”(hjÈih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÄih´M&hjÅiubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj©iubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÄih´M&hj¦iubjÄ)�”}”(hŒ2``struct hlist_head *head`` the head of the hlist ”h]”(jÊ)�”}”(hŒ``struct hlist_head *head``”h]”jÐ)�”}”(hjèih]”hŒstruct hlist_head *head”…”�”}”(hjêih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjæiubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M'hjâiubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe head of the hlist”h]”hŒthe head of the hlist”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jýih´M'hjþiubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjâiubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jýih´M'hj¦iubjÄ)�”}”(hŒ&``loff_t *ppos`` the current position ”h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hj!jh]”hŒ loff_t *ppos”…”�”}”(hj#jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M(hjjubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe current position”h]”hŒthe current position”…”�”}”(hj:jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j6jh´M(hj7jubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j6jh´M(hj¦iubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjŠiubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj\jh]”hŒ Description”…”�”}”(hj^jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjZjubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M*hjŠiubhÌ)�”}”(hŒCalled at seq_file->op->next().”h]”hŒCalled at seq_file->op->next().”…”�”}”(hjrjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M)hjŠiubhÌ)�”}”(hŒµThis list-traversal primitive may safely run concurrently with the _rcu list-mutation primitives such as hlist_add_head_rcu() as long as the traversal is guarded by rcu_read_lock().”h]”hŒµThis list-traversal primitive may safely run concurrently with the _rcu list-mutation primitives such as hlist_add_head_rcu() as long as the traversal is guarded by rcu_read_lock().”…”�”}”(hj�jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M+hjŠiubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ#seq_hlist_start_percpu (C function)”Œc.seq_hlist_start_percpu”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒcstruct hlist_node * seq_hlist_start_percpu (struct hlist_head __percpu *head, int *cpu, loff_t pos)”h]”j)�”}”(hŒastruct hlist_node *seq_hlist_start_percpu(struct hlist_head __percpu *head, int *cpu, loff_t pos)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj°jh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¬jh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M?ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾jh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¬jh²hh³j½jh´M?ubh)�”}”(hhh]”jI)�”}”(hŒ hlist_node”h]”hŒ hlist_node”…”�”}”(hjÏjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÌjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÑjŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒseq_hlist_start_percpu”sbŒc.seq_hlist_start_percpu”†”asbuh1hhj¬jh²hh³j½jh´M?ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¬jh²hh³j½jh´M?ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjþjh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¬jh²hh³j½jh´M?ubjC)�”}”(hŒseq_hlist_start_percpu”h]”jI)�”}”(hjíjh]”hŒseq_hlist_start_percpu”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj kubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj¬jh²hh³j½jh´M?ubj=)�”}”(hŒ8(struct hlist_head __percpu *head, int *cpu, loff_t pos)”h]”(jC)�”}”(hŒ struct hlist_head __percpu *head”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj*kh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj&kubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7kh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj&kubh)�”}”(hhh]”jI)�”}”(hŒ hlist_head”h]”hŒ hlist_head”…”�”}”(hjHkh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjEkubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jJkŒmodname”NŒ classname”Njj )�”}”j ]”jëjŒc.seq_hlist_start_percpu”†”asbuh1hhj&kubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfkh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj&kubhŒ__percpu”…”�”}”(hj&kh²hh³Nh´Nubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxkh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj&kubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj†kh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj&kubjI)�”}”(hŒhead”h]”hŒhead”…”�”}”(hj“kh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj&kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj"kubjC)�”}”(hŒint *cpu”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj¬kh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¨kubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºkh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¨kubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÈkh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¨kubjI)�”}”(hŒcpu”h]”hŒcpu”…”�”}”(hjÕkh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¨kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj"kubjC)�”}”(hŒ loff_t pos”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjñkh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjîkubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jókŒmodname”NŒ classname”Njj )�”}”j ]”jëjŒc.seq_hlist_start_percpu”†”asbuh1hhjêkubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjêkubjI)�”}”(hŒpos”h]”hŒpos”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjêkubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj"kubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj¬jh²hh³j½jh´M?ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj¨jh²hh³j½jh´M?ubah}”(h]”j£jah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j½jh´M?hj¥jh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ*start an iteration of a percpu hlist array”h]”hŒ*start an iteration of a percpu hlist array”…”�”}”(hjGlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M?hjDlh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¥jh²hh³j½jh´M?ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j_ljšj_lj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hŒì**Parameters** ``struct hlist_head __percpu *head`` pointer to percpu array of struct hlist_heads ``int *cpu`` pointer to cpu "cursor" ``loff_t pos`` start position of sequence **Description** Called at seq_file->op->start().”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjilh]”hŒ Parameters”…”�”}”(hjklh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjglubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MChjclubj¿)�”}”(hhh]”(jÄ)�”}”(hŒS``struct hlist_head __percpu *head`` pointer to percpu array of struct hlist_heads ”h]”(jÊ)�”}”(hŒ$``struct hlist_head __percpu *head``”h]”jÐ)�”}”(hjˆlh]”hŒ struct hlist_head __percpu *head”…”�”}”(hjŠlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj†lubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M@hj‚lubjæ)�”}”(hhh]”hÌ)�”}”(hŒ-pointer to percpu array of struct hlist_heads”h]”hŒ-pointer to percpu array of struct hlist_heads”…”�”}”(hj¡lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�lh´M@hjžlubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj‚lubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j�lh´M@hjlubjÄ)�”}”(hŒ%``int *cpu`` pointer to cpu "cursor" ”h]”(jÊ)�”}”(hŒ ``int *cpu``”h]”jÐ)�”}”(hjÁlh]”hŒint *cpu”…”�”}”(hjÃlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¿lubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MAhj»lubjæ)�”}”(hhh]”hÌ)�”}”(hŒpointer to cpu "cursor"”h]”hŒpointer to cpu “cursorâ€�”…”�”}”(hjÚlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÖlh´MAhj×lubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj»lubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÖlh´MAhjlubjÄ)�”}”(hŒ*``loff_t pos`` start position of sequence ”h]”(jÊ)�”}”(hŒ``loff_t pos``”h]”jÐ)�”}”(hjúlh]”hŒ loff_t pos”…”�”}”(hjülh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjølubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MBhjôlubjæ)�”}”(hhh]”hÌ)�”}”(hŒstart position of sequence”h]”hŒstart position of sequence”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jmh´MBhjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjôlubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jmh´MBhjlubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjclubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj5mh]”hŒ Description”…”�”}”(hj7mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj3mubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MDhjclubhÌ)�”}”(hŒ Called at seq_file->op->start().”h]”hŒ Called at seq_file->op->start().”…”�”}”(hjKmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MChjclubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ"seq_hlist_next_percpu (C function)”Œc.seq_hlist_next_percpu”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒlstruct hlist_node * seq_hlist_next_percpu (void *v, struct hlist_head __percpu *head, int *cpu, loff_t *pos)”h]”j)�”}”(hŒjstruct hlist_node *seq_hlist_next_percpu(void *v, struct hlist_head __percpu *head, int *cpu, loff_t *pos)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjzmh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjvmh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MVubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆmh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjvmh²hh³j‡mh´MVubh)�”}”(hhh]”jI)�”}”(hŒ hlist_node”h]”hŒ hlist_node”…”�”}”(hj™mh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj–mubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j›mŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒseq_hlist_next_percpu”sbŒc.seq_hlist_next_percpu”†”asbuh1hhjvmh²hh³j‡mh´MVubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºmh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjvmh²hh³j‡mh´MVubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÈmh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjvmh²hh³j‡mh´MVubjC)�”}”(hŒseq_hlist_next_percpu”h]”jI)�”}”(hj·mh]”hŒseq_hlist_next_percpu”…”�”}”(hjÙmh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÕmubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjvmh²hh³j‡mh´MVubj=)�”}”(hŒB(void *v, struct hlist_head __percpu *head, int *cpu, loff_t *pos)”h]”(jC)�”}”(hŒvoid *v”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjômh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjðmubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjðmubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjðmubjI)�”}”(hj%ah]”hŒv”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjðmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjìmubjC)�”}”(hŒ struct hlist_head __percpu *head”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj5nh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj1nubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBnh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj1nubh)�”}”(hhh]”jI)�”}”(hŒ hlist_head”h]”hŒ hlist_head”…”�”}”(hjSnh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjPnubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jUnŒmodname”NŒ classname”Njj )�”}”j ]”jµmŒc.seq_hlist_next_percpu”†”asbuh1hhj1nubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqnh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj1nubhŒ__percpu”…”�”}”(hj1nh²hh³Nh´Nubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒnh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj1nubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj‘nh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj1nubjI)�”}”(hŒhead”h]”hŒhead”…”�”}”(hjžnh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj1nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjìmubjC)�”}”(hŒint *cpu”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj·nh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj³nubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅnh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj³nubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÓnh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj³nubjI)�”}”(hŒcpu”h]”hŒcpu”…”�”}”(hjành²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj³nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjìmubjC)�”}”(hŒ loff_t *pos”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjünh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjùnubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jþnŒmodname”NŒ classname”Njj )�”}”j ]”jµmŒc.seq_hlist_next_percpu”†”asbuh1hhjõnubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjõnubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj(oh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjõnubjI)�”}”(hŒpos”h]”hŒpos”…”�”}”(hj5oh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjõnubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjìmubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjvmh²hh³j‡mh´MVubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjrmh²hh³j‡mh´MVubah}”(h]”jmmah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j‡mh´MVhjomh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ3move to the next position of the percpu hlist array”h]”hŒ3move to the next position of the percpu hlist array”…”�”}”(hj_oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MVhj\oh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjomh²hh³j‡mh´MVubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jwojšjwoj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX**Parameters** ``void *v`` pointer to current hlist_node ``struct hlist_head __percpu *head`` pointer to percpu array of struct hlist_heads ``int *cpu`` pointer to cpu "cursor" ``loff_t *pos`` start position of sequence **Description** Called at seq_file->op->next().”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj�oh]”hŒ Parameters”…”�”}”(hjƒoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjoubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MZhj{oubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ*``void *v`` pointer to current hlist_node ”h]”(jÊ)�”}”(hŒ ``void *v``”h]”jÐ)�”}”(hj oh]”hŒvoid *v”…”�”}”(hj¢oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjžoubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MWhjšoubjæ)�”}”(hhh]”hÌ)�”}”(hŒpointer to current hlist_node”h]”hŒpointer to current hlist_node”…”�”}”(hj¹oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jµoh´MWhj¶oubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjšoubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jµoh´MWhj—oubjÄ)�”}”(hŒS``struct hlist_head __percpu *head`` pointer to percpu array of struct hlist_heads ”h]”(jÊ)�”}”(hŒ$``struct hlist_head __percpu *head``”h]”jÐ)�”}”(hjÙoh]”hŒ struct hlist_head __percpu *head”…”�”}”(hjÛoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj×oubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MXhjÓoubjæ)�”}”(hhh]”hÌ)�”}”(hŒ-pointer to percpu array of struct hlist_heads”h]”hŒ-pointer to percpu array of struct hlist_heads”…”�”}”(hjòoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jîoh´MXhjïoubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÓoubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jîoh´MXhj—oubjÄ)�”}”(hŒ%``int *cpu`` pointer to cpu "cursor" ”h]”(jÊ)�”}”(hŒ ``int *cpu``”h]”jÐ)�”}”(hjph]”hŒint *cpu”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MYhj pubjæ)�”}”(hhh]”hÌ)�”}”(hŒpointer to cpu "cursor"”h]”hŒpointer to cpu “cursorâ€�”…”�”}”(hj+ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j'ph´MYhj(pubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j'ph´MYhj—oubjÄ)�”}”(hŒ+``loff_t *pos`` start position of sequence ”h]”(jÊ)�”}”(hŒ``loff_t *pos``”h]”jÐ)�”}”(hjKph]”hŒ loff_t *pos”…”�”}”(hjMph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjIpubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MZhjEpubjæ)�”}”(hhh]”hÌ)�”}”(hŒstart position of sequence”h]”hŒstart position of sequence”…”�”}”(hjdph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j`ph´MZhjapubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjEpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j`ph´MZhj—oubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj{oubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj†ph]”hŒ Description”…”�”}”(hjˆph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj„pubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M\hj{oubhÌ)�”}”(hŒCalled at seq_file->op->next().”h]”hŒCalled at seq_file->op->next().”…”�”}”(hjœph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M[hj{oubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ register_filesystem (C function)”Œc.register_filesystem”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ5int register_filesystem (struct file_system_type *fs)”h]”j)�”}”(hŒ4int register_filesystem(struct file_system_type *fs)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjËph²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÇph²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:68: ./fs/filesystems.c”h´KXubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚph²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÇph²hh³jÙph´KXubjC)�”}”(hŒregister_filesystem”h]”jI)�”}”(hŒregister_filesystem”h]”hŒregister_filesystem”…”�”}”(hjìph²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjèpubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÇph²hh³jÙph´KXubj=)�”}”(hŒ(struct file_system_type *fs)”h]”jC)�”}”(hŒstruct file_system_type *fs”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjqubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjqubh)�”}”(hhh]”jI)�”}”(hŒfile_system_type”h]”hŒfile_system_type”…”�”}”(hj&qh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj#qubah}”(h•]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j(qŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjîpsbŒc.register_filesystem”†”asbuh1hhjqubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFqh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjqubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjTqh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjqubjI)�”}”(hŒfs”h]”hŒfs”…”�”}”(hjaqh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjqubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjqubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÇph²hh³jÙph´KXubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÃph²hh³jÙph´KXubah}”(h]”j¾pah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÙph´KXhjÀph²hubjw)�”}”(hhh]”hÌ)�”}”(hŒregister a new filesystem”h]”hŒregister a new filesystem”…”�”}”(hj‹qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:68: ./fs/filesystems.c”h´KXhjˆqh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÀph²hh³jÙph´KXubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j£qjšj£qj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXÕ**Parameters** ``struct file_system_type *fs`` the file system structure **Description** Adds the file system passed to the list of file systems the kernel is aware of for mount and other syscalls. Returns 0 on success, or a negative errno code on an error. The :c:type:`struct file_system_type ` that is passed is linked into the kernel structures and must not be freed until the file system has been unregistered.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj­qh]”hŒ Parameters”…”�”}”(hj¯qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj«qubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:68: ./fs/filesystems.c”h´K\hj§qubj¿)�”}”(hhh]”jÄ)�”}”(hŒ:``struct file_system_type *fs`` the file system structure ”h]”(jÊ)�”}”(hŒ``struct file_system_type *fs``”h]”jÐ)�”}”(hjÌqh]”hŒstruct file_system_type *fs”…”�”}”(hjÎqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÊqubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:68: ./fs/filesystems.c”h´KYhjÆqubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe file system structure”h]”hŒthe file system structure”…”�”}”(hjåqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jáqh´KYhjâqubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÆqubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jáqh´KYhjÃqubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj§qubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjrh]”hŒ Description”…”�”}”(hj rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjrubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:68: ./fs/filesystems.c”h´K[hj§qubjÁ™)�”}”(hXYAdds the file system passed to the list of file systems the kernel is aware of for mount and other syscalls. Returns 0 on success, or a negative errno code on an error. The :c:type:`struct file_system_type ` that is passed is linked into the kernel structures and must not be freed until the file system has been unregistered.”h]”(hÌ)�”}”(hŒ¨Adds the file system passed to the list of file systems the kernel is aware of for mount and other syscalls. Returns 0 on success, or a negative errno code on an error.”h]”hŒ¨Adds the file system passed to the list of file systems the kernel is aware of for mount and other syscalls. Returns 0 on success, or a negative errno code on an error.”…”�”}”(hj!rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:68: ./fs/filesystems.c”h´KZhjrubhÌ)�”}”(hŒ¯The :c:type:`struct file_system_type ` that is passed is linked into the kernel structures and must not be freed until the file system has been unregistered.”h]”(hŒThe ”…”�”}”(hj0rh²hh³Nh´Nubh)�”}”(hŒ4:c:type:`struct file_system_type `”h]”jÐ)�”}”(hj:rh]”hŒstruct file_system_type”…”�”}”(hjah"]”h$]”h&]”uh1j1hj„rh²hh³j–rh´KwubjC)�”}”(hŒunregister_filesystem”h]”jI)�”}”(hŒunregister_filesystem”h]”hŒunregister_filesystem”…”�”}”(hj©rh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¥rubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj„rh²hh³j–rh´Kwubj=)�”}”(hŒ(struct file_system_type *fs)”h]”jC)�”}”(hŒstruct file_system_type *fs”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÅrh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÁrubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒrh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÁrubh)�”}”(hhh]”jI)�”}”(hŒfile_system_type”h]”hŒfile_system_type”…”�”}”(hjãrh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjàrubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jårŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj«rsbŒc.unregister_filesystem”†”asbuh1hhjÁrubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÁrubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÁrubjI)�”}”(hŒfs”h]”hŒfs”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÁrubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj½rubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj„rh²hh³j–rh´Kwubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj€rh²hh³j–rh´Kwubah}”(h]”j{rah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j–rh´Kwhj}rh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒunregister a file system”h]”hŒunregister a file system”…”�”}”(hjHsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:68: ./fs/filesystems.c”h´KwhjEsh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj}rh²hh³j–rh´Kwubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j`sjšj`sj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX˜**Parameters** ``struct file_system_type *fs`` filesystem to unregister **Description** Remove a file system that was previously successfully registered with the kernel. An error is returned if the file system is not found. Zero is returned on a success. Once this function has returned the :c:type:`struct file_system_type ` structure may be freed or reused.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjjsh]”hŒ Parameters”…”�”}”(hjlsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjhsubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:68: ./fs/filesystems.c”h´K{hjdsubj¿)�”}”(hhh]”jÄ)�”}”(hŒ9``struct file_system_type *fs`` filesystem to unregister ”h]”(jÊ)�”}”(hŒ``struct file_system_type *fs``”h]”jÐ)�”}”(hj‰sh]”hŒstruct file_system_type *fs”…”�”}”(hj‹sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj‡subah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:68: ./fs/filesystems.c”h´Kxhjƒsubjæ)�”}”(hhh]”hÌ)�”}”(hŒfilesystem to unregister”h]”hŒfilesystem to unregister”…”�”}”(hj¢sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jžsh´KxhjŸsubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjƒsubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jžsh´Kxhj€subah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjdsubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÄsh]”hŒ Description”…”�”}”(hjÆsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÂsubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:68: ./fs/filesystems.c”h´KzhjdsubjÁ™)�”}”(hX"Remove a file system that was previously successfully registered with the kernel. An error is returned if the file system is not found. Zero is returned on a success. Once this function has returned the :c:type:`struct file_system_type ` structure may be freed or reused.”h]”(hÌ)�”}”(hŒ¦Remove a file system that was previously successfully registered with the kernel. An error is returned if the file system is not found. Zero is returned on a success.”h]”hŒ¦Remove a file system that was previously successfully registered with the kernel. An error is returned if the file system is not found. Zero is returned on a success.”…”�”}”(hjÞsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:68: ./fs/filesystems.c”h´KyhjÚsubhÌ)�”}”(hŒzOnce this function has returned the :c:type:`struct file_system_type ` structure may be freed or reused.”h]”(hŒ$Once this function has returned the ”…”�”}”(hjísh²hh³Nh´Nubh)�”}”(hŒ4:c:type:`struct file_system_type `”h]”jÐ)�”}”(hj÷sh]”hŒstruct file_system_type”…”�”}”(hjùsh²hh³Nh´Nubah}”(h]”h ]”(jÌj“Œc-type”eh"]”h$]”h&]”uh1jÏhjõsubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jØŒ refdomain”j“Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jjÞjáŒfile_system_type”uh1hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:68: ./fs/filesystems.c”h´K}hjísubhŒ" structure may be freed or reused.”…”�”}”(hjísh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jth´K}hjÚsubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÀ™h³jìsh´Kyhjdsubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ(wbc_attach_fdatawrite_inode (C function)”Œc.wbc_attach_fdatawrite_inode”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒUvoid wbc_attach_fdatawrite_inode (struct writeback_control *wbc, struct inode *inode)”h]”j)�”}”(hŒTvoid wbc_attach_fdatawrite_inode(struct writeback_control *wbc, struct inode *inode)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjEth²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjAth²hh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´Mjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTth²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjAth²hh³jSth´MjubjC)�”}”(hŒwbc_attach_fdatawrite_inode”h]”jI)�”}”(hŒwbc_attach_fdatawrite_inode”h]”hŒwbc_attach_fdatawrite_inode”…”�”}”(hjfth²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjbtubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjAth²hh³jSth´Mjubj=)�”}”(hŒ4(struct writeback_control *wbc, struct inode *inode)”h]”(jC)�”}”(hŒstruct writeback_control *wbc”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj‚th²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj~tubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�th²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj~tubh)�”}”(hhh]”jI)�”}”(hŒwriteback_control”h]”hŒwriteback_control”…”�”}”(hj th²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�tubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¢tŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjhtsbŒc.wbc_attach_fdatawrite_inode”†”asbuh1hhj~tubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀth²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj~tubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÎth²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj~tubjI)�”}”(hŒwbc”h]”hŒwbc”…”�”}”(hjÛth²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj~tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjztubjC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjôth²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjðtubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjðtubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjuubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”juŒmodname”NŒ classname”Njj )�”}”j ]”j¼tŒc.wbc_attach_fdatawrite_inode”†”asbuh1hhjðtubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0uh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjðtubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj>uh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjðtubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjKuh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjðtubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjztubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjAth²hh³jSth´Mjubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj=th²hh³jSth´Mjubah}”(h]”j8tah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jSth´Mjhj:th²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ&associate wbc and inode for fdatawrite”h]”hŒ&associate wbc and inode for fdatawrite”…”�”}”(hjuuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´Mjhjruh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj:th²hh³jSth´Mjubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j�ujšj�uj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXS**Parameters** ``struct writeback_control *wbc`` writeback_control of interest ``struct inode *inode`` target inode **Description** This function is to be used by filemap_writeback(), which is an alternative entry point into writeback code, and first ensures **inode** is associated with a bdi_writeback and attaches it to **wbc**.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj—uh]”hŒ Parameters”…”�”}”(hj™uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj•uubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´Mnhj‘uubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ@``struct writeback_control *wbc`` writeback_control of interest ”h]”(jÊ)�”}”(hŒ!``struct writeback_control *wbc``”h]”jÐ)�”}”(hj¶uh]”hŒstruct writeback_control *wbc”…”�”}”(hj¸uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj´uubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´Mkhj°uubjæ)�”}”(hhh]”hÌ)�”}”(hŒwriteback_control of interest”h]”hŒwriteback_control of interest”…”�”}”(hjÏuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jËuh´MkhjÌuubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj°uubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jËuh´Mkhj­uubjÄ)�”}”(hŒ%``struct inode *inode`` target inode ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjïuh]”hŒstruct inode *inode”…”�”}”(hjñuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjíuubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´Mlhjéuubjæ)�”}”(hhh]”hÌ)�”}”(hŒ target inode”h]”hŒ target inode”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jvh´Mlhjvubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjéuubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jvh´Mlhj­uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj‘uubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj*vh]”hŒ Description”…”�”}”(hj,vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj(vubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´Mnhj‘uubhÌ)�”}”(hŒÇThis function is to be used by filemap_writeback(), which is an alternative entry point into writeback code, and first ensures **inode** is associated with a bdi_writeback and attaches it to **wbc**.”h]”(hŒThis function is to be used by filemap_writeback(), which is an alternative entry point into writeback code, and first ensures ”…”�”}”(hj@vh²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hjHvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj@vubhŒ7 is associated with a bdi_writeback and attaches it to ”…”�”}”(hj@vh²hh³Nh´Nubj©)�”}”(hŒ**wbc**”h]”hŒwbc”…”�”}”(hjZvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj@vubhŒ.”…”�”}”(hj@vh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´Mmhj‘uubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œwbc_detach_inode (C function)”Œc.wbc_detach_inode”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ5void wbc_detach_inode (struct writeback_control *wbc)”h]”j)�”}”(hŒ4void wbc_detach_inode(struct writeback_control *wbc)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj“vh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj�vh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M|ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢vh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�vh²hh³j¡vh´M|ubjC)�”}”(hŒwbc_detach_inode”h]”jI)�”}”(hŒwbc_detach_inode”h]”hŒwbc_detach_inode”…”�”}”(hj´vh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj°vubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj�vh²hh³j¡vh´M|ubj=)�”}”(hŒ(struct writeback_control *wbc)”h]”jC)�”}”(hŒstruct writeback_control *wbc”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÐvh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÌvubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝvh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÌvubh)�”}”(hhh]”jI)�”}”(hŒwriteback_control”h]”hŒwriteback_control”…”�”}”(hjîvh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjëvubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jðvŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj¶vsbŒc.wbc_detach_inode”†”asbuh1hhjÌvubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÌvubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÌvubjI)�”}”(hŒwbc”h]”hŒwbc”…”�”}”(hj)wh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÌvubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÈvubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj�vh²hh³j¡vh´M|ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj‹vh²hh³j¡vh´M|ubah}”(h]”j†vah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j¡vh´M|hjˆvh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ9disassociate wbc from inode and perform foreign detection”h]”hŒ9disassociate wbc from inode and perform foreign detection”…”�”}”(hjSwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M|hjPwh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjˆvh²hh³j¡vh´M|ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jkwjšjkwj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXŸ**Parameters** ``struct writeback_control *wbc`` writeback_control of the just finished writeback **Description** To be called after a writeback attempt of an inode finishes and undoes wbc_attach_and_unlock_inode(). Can be called under any context. As concurrent write sharing of an inode is expected to be very rare and memcg only tracks page ownership on first-use basis severely confining the usefulness of such sharing, cgroup writeback tracks ownership per-inode. While the support for concurrent write sharing of an inode is deemed unnecessary, an inode being written to by different cgroups at different points in time is a lot more common, and, more importantly, charging only by first-use can too readily lead to grossly incorrect behaviors (single foreign page can lead to gigabytes of writeback to be incorrectly attributed). To resolve this issue, cgroup writeback detects the majority dirtier of an inode and transfers the ownership to it. To avoid unnecessary oscillation, the detection mechanism keeps track of history and gives out the switch verdict only if the foreign usage pattern is stable over a certain amount of time and/or writeback attempts. On each writeback attempt, **wbc** tries to detect the majority writer using Boyer-Moore majority vote algorithm. In addition to the byte count from the majority voting, it also counts the bytes written for the current wb and the last round's winner wb (max of last round's current wb, the winner from two rounds ago, and the last round's majority candidate). Keeping track of the historical winner helps the algorithm to semi-reliably detect the most active writer even when it's not the absolute majority. Once the winner of the round is determined, whether the winner is foreign or not and how much IO time the round consumed is recorded in inode->i_wb_frn_history. If the amount of recorded foreign IO time is over a certain threshold, the switch verdict is given.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjuwh]”hŒ Parameters”…”�”}”(hjwwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjswubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M€hjowubj¿)�”}”(hhh]”jÄ)�”}”(hŒS``struct writeback_control *wbc`` writeback_control of the just finished writeback ”h]”(jÊ)�”}”(hŒ!``struct writeback_control *wbc``”h]”jÐ)�”}”(hj”wh]”hŒstruct writeback_control *wbc”…”�”}”(hj–wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj’wubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M}hjŽwubjæ)�”}”(hhh]”hÌ)�”}”(hŒ0writeback_control of the just finished writeback”h]”hŒ0writeback_control of the just finished writeback”…”�”}”(hj­wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j©wh´M}hjªwubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjŽwubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j©wh´M}hj‹wubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjowubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÏwh]”hŒ Description”…”�”}”(hjÑwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÍwubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´MhjowubhÌ)�”}”(hŒ‡To be called after a writeback attempt of an inode finishes and undoes wbc_attach_and_unlock_inode(). Can be called under any context.”h]”hŒ‡To be called after a writeback attempt of an inode finishes and undoes wbc_attach_and_unlock_inode(). Can be called under any context.”…”�”}”(hjåwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M~hjowubhÌ)�”}”(hXLAs concurrent write sharing of an inode is expected to be very rare and memcg only tracks page ownership on first-use basis severely confining the usefulness of such sharing, cgroup writeback tracks ownership per-inode. While the support for concurrent write sharing of an inode is deemed unnecessary, an inode being written to by different cgroups at different points in time is a lot more common, and, more importantly, charging only by first-use can too readily lead to grossly incorrect behaviors (single foreign page can lead to gigabytes of writeback to be incorrectly attributed).”h]”hXLAs concurrent write sharing of an inode is expected to be very rare and memcg only tracks page ownership on first-use basis severely confining the usefulness of such sharing, cgroup writeback tracks ownership per-inode. While the support for concurrent write sharing of an inode is deemed unnecessary, an inode being written to by different cgroups at different points in time is a lot more common, and, more importantly, charging only by first-use can too readily lead to grossly incorrect behaviors (single foreign page can lead to gigabytes of writeback to be incorrectly attributed).”…”�”}”(hjôwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M�hjowubhÌ)�”}”(hXKTo resolve this issue, cgroup writeback detects the majority dirtier of an inode and transfers the ownership to it. To avoid unnecessary oscillation, the detection mechanism keeps track of history and gives out the switch verdict only if the foreign usage pattern is stable over a certain amount of time and/or writeback attempts.”h]”hXKTo resolve this issue, cgroup writeback detects the majority dirtier of an inode and transfers the ownership to it. To avoid unnecessary oscillation, the detection mechanism keeps track of history and gives out the switch verdict only if the foreign usage pattern is stable over a certain amount of time and/or writeback attempts.”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M‹hjowubhÌ)�”}”(hXýOn each writeback attempt, **wbc** tries to detect the majority writer using Boyer-Moore majority vote algorithm. In addition to the byte count from the majority voting, it also counts the bytes written for the current wb and the last round's winner wb (max of last round's current wb, the winner from two rounds ago, and the last round's majority candidate). Keeping track of the historical winner helps the algorithm to semi-reliably detect the most active writer even when it's not the absolute majority.”h]”(hŒOn each writeback attempt, ”…”�”}”(hjxh²hh³Nh´Nubj©)�”}”(hŒ**wbc**”h]”hŒwbc”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjxubhXã tries to detect the majority writer using Boyer-Moore majority vote algorithm. In addition to the byte count from the majority voting, it also counts the bytes written for the current wb and the last round’s winner wb (max of last round’s current wb, the winner from two rounds ago, and the last round’s majority candidate). Keeping track of the historical winner helps the algorithm to semi-reliably detect the most active writer even when it’s not the absolute majority.”…”�”}”(hjxh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M‘hjowubhÌ)�”}”(hXOnce the winner of the round is determined, whether the winner is foreign or not and how much IO time the round consumed is recorded in inode->i_wb_frn_history. If the amount of recorded foreign IO time is over a certain threshold, the switch verdict is given.”h]”hXOnce the winner of the round is determined, whether the winner is foreign or not and how much IO time the round consumed is recorded in inode->i_wb_frn_history. If the amount of recorded foreign IO time is over a certain threshold, the switch verdict is given.”…”�”}”(hj3xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´Mšhjowubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ%wbc_account_cgroup_owner (C function)”Œc.wbc_account_cgroup_owner”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ`void wbc_account_cgroup_owner (struct writeback_control *wbc, struct folio *folio, size_t bytes)”h]”j)�”}”(hŒ_void wbc_account_cgroup_owner(struct writeback_control *wbc, struct folio *folio, size_t bytes)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjbxh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj^xh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M÷ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqxh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj^xh²hh³jpxh´M÷ubjC)�”}”(hŒwbc_account_cgroup_owner”h]”jI)�”}”(hŒwbc_account_cgroup_owner”h]”hŒwbc_account_cgroup_owner”…”�”}”(hjƒxh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjxubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj^xh²hh³jpxh´M÷ubj=)�”}”(hŒB(struct writeback_control *wbc, struct folio *folio, size_t bytes)”h]”(jC)�”}”(hŒstruct writeback_control *wbc”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjŸxh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj›xubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬xh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj›xubh)�”}”(hhh]”jI)�”}”(hŒwriteback_control”h]”hŒwriteback_control”…”�”}”(hj½xh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjºxubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¿xŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj…xsbŒc.wbc_account_cgroup_owner”†”asbuh1hhj›xubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝxh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj›xubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjëxh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj›xubjI)�”}”(hŒwbc”h]”hŒwbc”…”�”}”(hjøxh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj›xubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj—xubjC)�”}”(hŒstruct folio *folio”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj yubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj yubh)�”}”(hhh]”jI)�”}”(hŒfolio”h]”hŒfolio”…”�”}”(hj/yh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj,yubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j1yŒmodname”NŒ classname”Njj )�”}”j ]”jÙxŒc.wbc_account_cgroup_owner”†”asbuh1hhj yubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMyh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj yubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj[yh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj yubjI)�”}”(hŒfolio”h]”hŒfolio”…”�”}”(hjhyh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj yubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj—xubjC)�”}”(hŒ size_t bytes”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj„yh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�yubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j†yŒmodname”NŒ classname”Njj )�”}”j ]”jÙxŒc.wbc_account_cgroup_owner”†”asbuh1hhj}yubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢yh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj}yubjI)�”}”(hŒbytes”h]”hŒbytes”…”�”}”(hj°yh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj}yubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj—xubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj^xh²hh³jpxh´M÷ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjZxh²hh³jpxh´M÷ubah}”(h]”jUxah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jpxh´M÷hjWxh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ2account writeback to update inode cgroup ownership”h]”hŒ2account writeback to update inode cgroup ownership”…”�”}”(hjÚyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M÷hj×yh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjWxh²hh³jpxh´M÷ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jòyjšjòyj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX€**Parameters** ``struct writeback_control *wbc`` writeback_control of the writeback in progress ``struct folio *folio`` folio being written out ``size_t bytes`` number of bytes being written out **Description** **bytes** from **folio** are about to written out during the writeback controlled by **wbc**. Keep the book for foreign inode detection. See wbc_detach_inode().”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjüyh]”hŒ Parameters”…”�”}”(hjþyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjúyubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´Mûhjöyubj¿)�”}”(hhh]”(jÄ)�”}”(hŒQ``struct writeback_control *wbc`` writeback_control of the writeback in progress ”h]”(jÊ)�”}”(hŒ!``struct writeback_control *wbc``”h]”jÐ)�”}”(hjzh]”hŒstruct writeback_control *wbc”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjzubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´Møhjzubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.writeback_control of the writeback in progress”h]”hŒ.writeback_control of the writeback in progress”…”�”}”(hj4zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j0zh´Møhj1zubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j0zh´MøhjzubjÄ)�”}”(hŒ0``struct folio *folio`` folio being written out ”h]”(jÊ)�”}”(hŒ``struct folio *folio``”h]”jÐ)�”}”(hjTzh]”hŒstruct folio *folio”…”�”}”(hjVzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjRzubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´MùhjNzubjæ)�”}”(hhh]”hÌ)�”}”(hŒfolio being written out”h]”hŒfolio being written out”…”�”}”(hjmzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jizh´Mùhjjzubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjNzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jizh´MùhjzubjÄ)�”}”(hŒ3``size_t bytes`` number of bytes being written out ”h]”(jÊ)�”}”(hŒ``size_t bytes``”h]”jÐ)�”}”(hj�zh]”hŒ size_t bytes”…”�”}”(hj�zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj‹zubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´Múhj‡zubjæ)�”}”(hhh]”hÌ)�”}”(hŒ!number of bytes being written out”h]”hŒ!number of bytes being written out”…”�”}”(hj¦zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¢zh´Múhj£zubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj‡zubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¢zh´Múhjzubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjöyubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÈzh]”hŒ Description”…”�”}”(hjÊzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÆzubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´MühjöyubhÌ)�”}”(hŒ¢**bytes** from **folio** are about to written out during the writeback controlled by **wbc**. Keep the book for foreign inode detection. See wbc_detach_inode().”h]”(j©)�”}”(hŒ **bytes**”h]”hŒbytes”…”�”}”(hjâzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÞzubhŒ from ”…”�”}”(hjÞzh²hh³Nh´Nubj©)�”}”(hŒ **folio**”h]”hŒfolio”…”�”}”(hjôzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÞzubhŒ= are about to written out during the writeback controlled by ”…”�”}”(hjÞzh²hh³Nh´Nubj©)�”}”(hŒ**wbc**”h]”hŒwbc”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÞzubhŒF. Keep the book for foreign inode detection. See wbc_detach_inode().”…”�”}”(hjÞzh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´Mûhjöyubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ-filemap_dontcache_kick_writeback (C function)”Œ"c.filemap_dontcache_kick_writeback”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒEvoid filemap_dontcache_kick_writeback (struct address_space *mapping)”h]”j)�”}”(hŒDvoid filemap_dontcache_kick_writeback(struct address_space *mapping)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj?{h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj;{h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN{h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj;{h²hh³jM{h´M ubjC)�”}”(hŒ filemap_dontcache_kick_writeback”h]”jI)�”}”(hŒ filemap_dontcache_kick_writeback”h]”hŒ filemap_dontcache_kick_writeback”…”�”}”(hj`{h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj\{ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj;{h²hh³jM{h´M ubj=)�”}”(hŒ(struct address_space *mapping)”h]”jC)�”}”(hŒstruct address_space *mapping”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj|{h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjx{ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰{h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjx{ubh)�”}”(hhh]”jI)�”}”(hŒ address_space”h]”hŒ address_space”…”�”}”(hjš{h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj—{ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jœ{Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjb{sbŒ"c.filemap_dontcache_kick_writeback”†”asbuh1hhjx{ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº{h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjx{ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÈ{h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjx{ubjI)�”}”(hŒmapping”h]”hŒmapping”…”�”}”(hjÕ{h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjx{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjt{ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj;{h²hh³jM{h´M ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj7{h²hh³jM{h´M ubah}”(h]”j2{ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jM{h´M hj4{h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ&kick flusher for IOCB_DONTCACHE writes”h]”hŒ&kick flusher for IOCB_DONTCACHE writes”…”�”}”(hjÿ{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M hjü{h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj4{h²hh³jM{h´M ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j|jšj|j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX£**Parameters** ``struct address_space *mapping`` address_space that was just written to **Description** Kick the writeback flusher thread to expedite writeback of dontcache dirty pages. Queue writeback for the inode's wb for as many pages as there are dontcache pages, but don't restrict writeback to dontcache pages only. This significantly improves performance over either writing all wb's pages or writing only dontcache pages. Although it doesn't guarantee quick writeback and reclaim of dontcache pages, it keeps the amount of dirty pages in check. Over longer term dontcache pages get written and reclaimed by background writeback even with this rough heuristic.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj!|h]”hŒ Parameters”…”�”}”(hj#|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M hj|ubj¿)�”}”(hhh]”jÄ)�”}”(hŒI``struct address_space *mapping`` address_space that was just written to ”h]”(jÊ)�”}”(hŒ!``struct address_space *mapping``”h]”jÐ)�”}”(hj@|h]”hŒstruct address_space *mapping”…”�”}”(hjB|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj>|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M hj:|ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ&address_space that was just written to”h]”hŒ&address_space that was just written to”…”�”}”(hjY|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jU|h´M hjV|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj:|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jU|h´M hj7|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj|ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj{|h]”hŒ Description”…”�”}”(hj}|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjy|ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M hj|ubhÌ)�”}”(hŒÚKick the writeback flusher thread to expedite writeback of dontcache dirty pages. Queue writeback for the inode's wb for as many pages as there are dontcache pages, but don't restrict writeback to dontcache pages only.”h]”hŒÞKick the writeback flusher thread to expedite writeback of dontcache dirty pages. Queue writeback for the inode’s wb for as many pages as there are dontcache pages, but don’t restrict writeback to dontcache pages only.”…”�”}”(hj‘|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M hj|ubhÌ)�”}”(hXZThis significantly improves performance over either writing all wb's pages or writing only dontcache pages. Although it doesn't guarantee quick writeback and reclaim of dontcache pages, it keeps the amount of dirty pages in check. Over longer term dontcache pages get written and reclaimed by background writeback even with this rough heuristic.”h]”hX^This significantly improves performance over either writing all wb’s pages or writing only dontcache pages. Although it doesn’t guarantee quick writeback and reclaim of dontcache pages, it keeps the amount of dirty pages in check. Over longer term dontcache pages get written and reclaimed by background writeback even with this rough heuristic.”…”�”}”(hj |h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M hj|ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ__mark_inode_dirty (C function)”Œc.__mark_inode_dirty”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ8void __mark_inode_dirty (struct inode *inode, int flags)”h]”j)�”}”(hŒ7void __mark_inode_dirty(struct inode *inode, int flags)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÏ|h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjË|h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M‚ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞ|h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjË|h²hh³jÝ|h´M‚ ubjC)�”}”(hŒ__mark_inode_dirty”h]”jI)�”}”(hŒ__mark_inode_dirty”h]”hŒ__mark_inode_dirty”…”�”}”(hjð|h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjì|ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjË|h²hh³jÝ|h´M‚ ubj=)�”}”(hŒ (struct inode *inode, int flags)”h]”(jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj }h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj}ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj}ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj*}h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj'}ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j,}Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjò|sbŒc.__mark_inode_dirty”†”asbuh1hhj}ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJ}h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj}ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjX}h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj}ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hje}h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj}ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj}ubjC)�”}”(hŒ int flags”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj~}h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjz}ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ}h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjz}ubjI)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjš}h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjz}ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj}ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjË|h²hh³jÝ|h´M‚ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÇ|h²hh³jÝ|h´M‚ ubah}”(h]”jÂ|ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÝ|h´M‚ hjÄ|h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ(internal function to mark an inode dirty”h]”hŒ(internal function to mark an inode dirty”…”�”}”(hjÄ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M‚ hjÁ}h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÄ|h²hh³jÝ|h´M‚ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÜ}jšjÜ}j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX¬**Parameters** ``struct inode *inode`` inode to mark ``int flags`` what kind of dirty, e.g. I_DIRTY_SYNC. This can be a combination of multiple I_DIRTY_* flags, except that I_DIRTY_TIME can't be combined with I_DIRTY_PAGES. **Description** Mark an inode as dirty. We notify the filesystem, then update the inode's dirty flags. Then, if needed we add the inode to the appropriate dirty list. Most callers should use mark_inode_dirty() or mark_inode_dirty_sync() instead of calling this directly. CAREFUL! We only add the inode to the dirty list if it is hashed or if it refers to a blockdev. Unhashed inodes will never be added to the dirty list even if they are later hashed, as they will have been marked dirty already. In short, ensure you hash any inodes _before_ you start marking them dirty. Note that for blockdevs, inode->dirtied_when represents the dirtying time of the block-special inode (/dev/hda1) itself. And the ->dirtied_when field of the kernel-internal blockdev inode represents the dirtying time of the blockdev's pages. This is why for I_DIRTY_PAGES we always use page->mapping->host, so the page-dirtying time is recorded in the internal blockdev inode.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjæ}h]”hŒ Parameters”…”�”}”(hjè}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjä}ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M† hjà}ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ&``struct inode *inode`` inode to mark ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj~h]”hŒstruct inode *inode”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M„ hjÿ}ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ inode to mark”h]”hŒ inode to mark”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j~h´M„ hj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÿ}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j~h´M„ hjü}ubjÄ)�”}”(hŒ¬``int flags`` what kind of dirty, e.g. I_DIRTY_SYNC. This can be a combination of multiple I_DIRTY_* flags, except that I_DIRTY_TIME can't be combined with I_DIRTY_PAGES. ”h]”(jÊ)�”}”(hŒ ``int flags``”h]”jÐ)�”}”(hj>~h]”hŒ int flags”…”�”}”(hj@~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj<~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M‡ hj8~ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ�what kind of dirty, e.g. I_DIRTY_SYNC. This can be a combination of multiple I_DIRTY_* flags, except that I_DIRTY_TIME can't be combined with I_DIRTY_PAGES.”h]”hŒŸwhat kind of dirty, e.g. I_DIRTY_SYNC. This can be a combination of multiple I_DIRTY_* flags, except that I_DIRTY_TIME can’t be combined with I_DIRTY_PAGES.”…”�”}”(hjW~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M… hjT~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj8~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jS~h´M‡ hjü}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjà}ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjz~h]”hŒ Description”…”�”}”(hj|~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjx~ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M‰ hjà}ubhÌ)�”}”(hŒ˜Mark an inode as dirty. We notify the filesystem, then update the inode's dirty flags. Then, if needed we add the inode to the appropriate dirty list.”h]”hŒšMark an inode as dirty. We notify the filesystem, then update the inode’s dirty flags. Then, if needed we add the inode to the appropriate dirty list.”…”�”}”(hj�~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´Mˆ hjà}ubhÌ)�”}”(hŒgMost callers should use mark_inode_dirty() or mark_inode_dirty_sync() instead of calling this directly.”h]”hŒgMost callers should use mark_inode_dirty() or mark_inode_dirty_sync() instead of calling this directly.”…”�”}”(hjŸ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M‹ hjà}ubhÌ)�”}”(hŒãCAREFUL! We only add the inode to the dirty list if it is hashed or if it refers to a blockdev. Unhashed inodes will never be added to the dirty list even if they are later hashed, as they will have been marked dirty already.”h]”hŒãCAREFUL! We only add the inode to the dirty list if it is hashed or if it refers to a blockdev. Unhashed inodes will never be added to the dirty list even if they are later hashed, as they will have been marked dirty already.”…”�”}”(hj®~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´MŽ hjà}ubhÌ)�”}”(hŒKIn short, ensure you hash any inodes _before_ you start marking them dirty.”h]”hŒKIn short, ensure you hash any inodes _before_ you start marking them dirty.”…”�”}”(hj½~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M’ hjà}ubhÌ)�”}”(hXzNote that for blockdevs, inode->dirtied_when represents the dirtying time of the block-special inode (/dev/hda1) itself. And the ->dirtied_when field of the kernel-internal blockdev inode represents the dirtying time of the blockdev's pages. This is why for I_DIRTY_PAGES we always use page->mapping->host, so the page-dirtying time is recorded in the internal blockdev inode.”h]”hX|Note that for blockdevs, inode->dirtied_when represents the dirtying time of the block-special inode (/dev/hda1) itself. And the ->dirtied_when field of the kernel-internal blockdev inode represents the dirtying time of the blockdev’s pages. This is why for I_DIRTY_PAGES we always use page->mapping->host, so the page-dirtying time is recorded in the internal blockdev inode.”…”�”}”(hjÌ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M” hjà}ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ#writeback_inodes_sb_nr (C function)”Œc.writeback_inodes_sb_nr”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ]void writeback_inodes_sb_nr (struct super_block *sb, unsigned long nr, enum wb_reason reason)”h]”j)�”}”(hŒ\void writeback_inodes_sb_nr(struct super_block *sb, unsigned long nr, enum wb_reason reason)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjû~h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj÷~h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M£ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj÷~h²hh³j h´M£ ubjC)�”}”(hŒwriteback_inodes_sb_nr”h]”jI)�”}”(hŒwriteback_inodes_sb_nr”h]”hŒwriteback_inodes_sb_nr”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj÷~h²hh³j h´M£ ubj=)�”}”(hŒA(struct super_block *sb, unsigned long nr, enum wb_reason reason)”h]”(jC)�”}”(hŒstruct super_block *sb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj4ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj4ubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjSubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jXŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjsbŒc.writeback_inodes_sb_nr”†”asbuh1hhj4ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj4ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj4ubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj0ubjC)�”}”(hŒunsigned long nr”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¦ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¦ubj�)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¦ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¦ubjI)�”}”(hŒnr”h]”hŒnr”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj0ubjC)�”}”(hŒenum wb_reason reason”h]”(j )�”}”(hj#h]”hŒenum”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj÷ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj÷ubh)�”}”(hhh]”jI)�”}”(hŒ wb_reason”h]”hŒ wb_reason”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj€ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j€Œmodname”NŒ classname”Njj )�”}”j ]”jrŒc.writeback_inodes_sb_nr”†”asbuh1hhj÷ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7€h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj÷ubjI)�”}”(hŒreason”h]”hŒreason”…”�”}”(hjE€h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj÷ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj0ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj÷~h²hh³j h´M£ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjó~h²hh³j h´M£ ubah}”(h]”jî~ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j h´M£ hjð~h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ-writeback dirty inodes from given super_block”h]”hŒ-writeback dirty inodes from given super_block”…”�”}”(hjo€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M£ hjl€h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjð~h²hh³j h´M£ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j‡€jšj‡€j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX|**Parameters** ``struct super_block *sb`` the superblock ``unsigned long nr`` the number of pages to write ``enum wb_reason reason`` reason why some writeback work initiated **Description** Start writeback on some inodes on this super_block. No guarantees are made on how many (if any) will be written, and this function does not wait for IO completion of submitted IO.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj‘€h]”hŒ Parameters”…”�”}”(hj“€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj�€ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M§ hj‹€ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ*``struct super_block *sb`` the superblock ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hj°€h]”hŒstruct super_block *sb”…”�”}”(hj²€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj®€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M¤ hjª€ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe superblock”h]”hŒthe superblock”…”�”}”(hjÉ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÅ€h´M¤ hjÆ€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjª€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÅ€h´M¤ hj§€ubjÄ)�”}”(hŒ2``unsigned long nr`` the number of pages to write ”h]”(jÊ)�”}”(hŒ``unsigned long nr``”h]”jÐ)�”}”(hjé€h]”hŒunsigned long nr”…”�”}”(hjë€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjç€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M¥ hjã€ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe number of pages to write”h]”hŒthe number of pages to write”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jþ€h´M¥ hjÿ€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjã€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jþ€h´M¥ hj§€ubjÄ)�”}”(hŒC``enum wb_reason reason`` reason why some writeback work initiated ”h]”(jÊ)�”}”(hŒ``enum wb_reason reason``”h]”jÐ)�”}”(hj"�h]”hŒenum wb_reason reason”…”�”}”(hj$�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj �ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M¦ hj�ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(reason why some writeback work initiated”h]”hŒ(reason why some writeback work initiated”…”�”}”(hj;�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j7�h´M¦ hj8�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j7�h´M¦ hj§€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj‹€ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj]�h]”hŒ Description”…”�”}”(hj_�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj[�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M¨ hj‹€ubhÌ)�”}”(hŒ³Start writeback on some inodes on this super_block. No guarantees are made on how many (if any) will be written, and this function does not wait for IO completion of submitted IO.”h]”hŒ³Start writeback on some inodes on this super_block. No guarantees are made on how many (if any) will be written, and this function does not wait for IO completion of submitted IO.”…”�”}”(hjs�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M§ hj‹€ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ writeback_inodes_sb (C function)”Œc.writeback_inodes_sb”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒHvoid writeback_inodes_sb (struct super_block *sb, enum wb_reason reason)”h]”j)�”}”(hŒGvoid writeback_inodes_sb(struct super_block *sb, enum wb_reason reason)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¢�h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjž�h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´Mµ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjž�h²hh³j°�h´Mµ ubjC)�”}”(hŒwriteback_inodes_sb”h]”jI)�”}”(hŒwriteback_inodes_sb”h]”hŒwriteback_inodes_sb”…”�”}”(hjÃ�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¿�ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjž�h²hh³j°�h´Mµ ubj=)�”}”(hŒ/(struct super_block *sb, enum wb_reason reason)”h]”(jC)�”}”(hŒstruct super_block *sb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjß�h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÛ�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÛ�ubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hjý�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjú�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÿ�Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÅ�sbŒc.writeback_inodes_sb”†”asbuh1hhjÛ�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÛ�ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj+‚h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÛ�ubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hj8‚h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÛ�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj×�ubjC)�”}”(hŒenum wb_reason reason”h]”(j )�”}”(hj#h]”hŒenum”…”�”}”(hjQ‚h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjM‚ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^‚h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjM‚ubh)�”}”(hhh]”jI)�”}”(hŒ wb_reason”h]”hŒ wb_reason”…”�”}”(hjo‚h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjl‚ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jq‚Œmodname”NŒ classname”Njj )�”}”j ]”j‚Œc.writeback_inodes_sb”†”asbuh1hhjM‚ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�‚h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjM‚ubjI)�”}”(hŒreason”h]”hŒreason”…”�”}”(hj›‚h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjM‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj×�ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjž�h²hh³j°�h´Mµ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjš�h²hh³j°�h´Mµ ubah}”(h]”j•�ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j°�h´Mµ hj—�h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ-writeback dirty inodes from given super_block”h]”hŒ-writeback dirty inodes from given super_block”…”�”}”(hjÅ‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´Mµ hj‚h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj—�h²hh³j°�h´Mµ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÝ‚jšjÝ‚j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXK**Parameters** ``struct super_block *sb`` the superblock ``enum wb_reason reason`` reason why some writeback work was initiated **Description** Start writeback on some inodes on this super_block. No guarantees are made on how many (if any) will be written, and this function does not wait for IO completion of submitted IO.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjç‚h]”hŒ Parameters”…”�”}”(hjé‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjå‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M¹ hjá‚ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ*``struct super_block *sb`` the superblock ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hjƒh]”hŒstruct super_block *sb”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M¶ hjƒubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe superblock”h]”hŒthe superblock”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jƒh´M¶ hjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jƒh´M¶ hjý‚ubjÄ)�”}”(hŒG``enum wb_reason reason`` reason why some writeback work was initiated ”h]”(jÊ)�”}”(hŒ``enum wb_reason reason``”h]”jÐ)�”}”(hj?ƒh]”hŒenum wb_reason reason”…”�”}”(hjAƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj=ƒuba•Éh}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M· hj9ƒubjæ)�”}”(hhh]”hÌ)�”}”(hŒ,reason why some writeback work was initiated”h]”hŒ,reason why some writeback work was initiated”…”�”}”(hjXƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jTƒh´M· hjUƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj9ƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jTƒh´M· hjý‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjá‚ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjzƒh]”hŒ Description”…”�”}”(hj|ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjxƒubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M¹ hjá‚ubhÌ)�”}”(hŒ³Start writeback on some inodes on this super_block. No guarantees are made on how many (if any) will be written, and this function does not wait for IO completion of submitted IO.”h]”hŒ³Start writeback on some inodes on this super_block. No guarantees are made on how many (if any) will be written, and this function does not wait for IO completion of submitted IO.”…”�”}”(hj�ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M¸ hjá‚ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ'try_to_writeback_inodes_sb (C function)”Œc.try_to_writeback_inodes_sb”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒOvoid try_to_writeback_inodes_sb (struct super_block *sb, enum wb_reason reason)”h]”j)�”}”(hŒNvoid try_to_writeback_inodes_sb(struct super_block *sb, enum wb_reason reason)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¿ƒh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj»ƒh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´MÄ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj΃h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj»ƒh²hh³j̓h´MÄ ubjC)�”}”(hŒtry_to_writeback_inodes_sb”h]”jI)�”}”(hŒtry_to_writeback_inodes_sb”h]”hŒtry_to_writeback_inodes_sb”…”�”}”(hjàƒh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj܃ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj»ƒh²hh³j̓h´MÄ ubj=)�”}”(hŒ/(struct super_block *sb, enum wb_reason reason)”h]”(jC)�”}”(hŒstruct super_block *sb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjüƒh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjøƒubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj „h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjøƒubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj„ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j„Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjâƒsbŒc.try_to_writeback_inodes_sb”†”asbuh1hhjøƒubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:„h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjøƒubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjH„h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjøƒubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hjU„h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjøƒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjôƒubjC)�”}”(hŒenum wb_reason reason”h]”(j )�”}”(hj#h]”hŒenum”…”�”}”(hjn„h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjj„ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{„h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjj„ubh)�”}”(hhh]”jI)�”}”(hŒ wb_reason”h]”hŒ wb_reason”…”�”}”(hjŒ„h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‰„ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jŽ„Œmodname”NŒ classname”Njj )�”}”j ]”j6„Œc.try_to_writeback_inodes_sb”†”asbuh1hhjj„ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjª„h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjj„ubjI)�”}”(hŒreason”h]”hŒreason”…”�”}”(hj¸„h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjj„ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjôƒubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj»ƒh²hh³j̓h´MÄ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj·ƒh²hh³j̓h´MÄ ubah}”(h]”j²ƒah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j̓h´MÄ hj´ƒh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ'try to start writeback if none underway”h]”hŒ'try to start writeback if none underway”…”�”}”(hjâ„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´MÄ hjß„h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj´ƒh²hh³j̓h´MÄ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jú„jšjú„j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hŒÞ**Parameters** ``struct super_block *sb`` the superblock ``enum wb_reason reason`` reason why some writeback work was initiated **Description** Invoke __writeback_inodes_sb_nr if no writeback is currently underway.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj…h]”hŒ Parameters”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´MÈ hjþ„ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ*``struct super_block *sb`` the superblock ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hj#…h]”hŒstruct super_block *sb”…”�”}”(hj%…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj!…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´MÅ hj…ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe superblock”h]”hŒthe superblock”…”�”}”(hj<…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j8…h´MÅ hj9…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j8…h´MÅ hj…ubjÄ)�”}”(hŒG``enum wb_reason reason`` reason why some writeback work was initiated ”h]”(jÊ)�”}”(hŒ``enum wb_reason reason``”h]”jÐ)�”}”(hj\…h]”hŒenum wb_reason reason”…”�”}”(hj^…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjZ…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´MÆ hjV…ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ,reason why some writeback work was initiated”h]”hŒ,reason why some writeback work was initiated”…”�”}”(hju…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jq…h´MÆ hjr…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjV…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jq…h´MÆ hj…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjþ„ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj—…h]”hŒ Description”…”�”}”(hj™…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj•…ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´MÈ hjþ„ubhÌ)�”}”(hŒFInvoke __writeback_inodes_sb_nr if no writeback is currently underway.”h]”hŒFInvoke __writeback_inodes_sb_nr if no writeback is currently underway.”…”�”}”(hj­…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´MÇ hjþ„ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œsync_inodes_sb (C function)”Œc.sync_inodes_sb”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ,void sync_inodes_sb (struct super_block *sb)”h]”j)�”}”(hŒ+void sync_inodes_sb(struct super_block *sb)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÜ…h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjØ…h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´MÕ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjë…h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjØ…h²hh³jê…h´MÕ ubjC)�”}”(hŒsync_inodes_sb”h]”jI)�”}”(hŒsync_inodes_sb”h]”hŒsync_inodes_sb”…”�”}”(hjý…h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjù…ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjØ…h²hh³jê…h´MÕ ubj=)�”}”(hŒ(struct super_block *sb)”h]”jC)�”}”(hŒstruct super_block *sb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj†ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&†h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj†ubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hj7†h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj4†ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j9†Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÿ…sbŒc.sync_inodes_sb”†”asbuh1hhj†ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW†h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj†ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hje†h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj†ubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hjr†h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj†ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj†ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjØ…h²hh³jê…h´MÕ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÔ…h²hh³jê…h´MÕ ubah}”(h]”jÏ…ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jê…h´MÕ hjÑ…h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒsync sb inode pages”h]”hŒsync sb inode pages”…”�”}”(hjœ†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´MÕ hj™†h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÑ…h²hh³jê…h´MÕ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j´†jšj´†j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hŒž**Parameters** ``struct super_block *sb`` the superblock **Description** This function writes and waits on any dirty inode belonging to this super_block.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj¾†h]”hŒ Parameters”…”�”}”(hjÀ†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¼†ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´MÙ hj¸†ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ*``struct super_block *sb`` the superblock ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hj݆h]”hŒstruct super_block *sb”…”�”}”(hj߆h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÛ†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´MÖ hj׆ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe superblock”h]”hŒthe superblock”…”�”}”(hjö†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jò†h´MÖ hjó†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj׆ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jò†h´MÖ hjÔ†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj¸†ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj‡h]”hŒ Description”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´MØ hj¸†ubhÌ)�”}”(hŒPThis function writes and waits on any dirty inode belonging to this super_block.”h]”hŒPThis function writes and waits on any dirty inode belonging to this super_block.”…”�”}”(hj.‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M× hj¸†ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œwrite_inode_now (C function)”Œc.write_inode_now”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ3int write_inode_now (struct inode *inode, int sync)”h]”j)�”}”(hŒ2int write_inode_now(struct inode *inode, int sync)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj]‡h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjY‡h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjl‡h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjY‡h²hh³jk‡h´M ubjC)�”}”(hŒwrite_inode_now”h]”jI)�”}”(hŒwrite_inode_now”h]”hŒwrite_inode_now”…”�”}”(hj~‡h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjz‡ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjY‡h²hh³jk‡h´M ubj=)�”}”(hŒ(struct inode *inode, int sync)”h]”(jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjš‡h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj–‡ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§‡h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj–‡ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj¸‡h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjµ‡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jº‡Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj€‡sbŒc.write_inode_now”†”asbuh1hhj–‡ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj؇h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj–‡ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjæ‡h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj–‡ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjó‡h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj–‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj’‡ubjC)�”}”(hŒint sync”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj ˆh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjˆubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjˆubjI)�”}”(hŒsync”h]”hŒsync”…”�”}”(hj(ˆh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjˆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj’‡ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjY‡h²hh³jk‡h´M ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjU‡h²hh³jk‡h´M ubah}”(h]”jP‡ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jk‡h´M hjR‡h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒwrite an inode to disk”h]”hŒwrite an inode to disk”…”�”}”(hjRˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M hjOˆh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjR‡h²hh³jk‡h´M ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jjˆjšjjˆj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXE**Parameters** ``struct inode *inode`` inode to write to disk ``int sync`` whether the write should be synchronous or not **Description** This function commits an inode to disk immediately if it is dirty. This is primarily needed by knfsd. The caller must either have a ref on the inode or must have set I_WILL_FREE.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjtˆh]”hŒ Parameters”…”�”}”(hjvˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjrˆubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M hjnˆubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ/``struct inode *inode`` inode to write to disk ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj“ˆh]”hŒstruct inode *inode”…”�”}”(hj•ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj‘ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M hj�ˆubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode to write to disk”h]”hŒinode to write to disk”…”�”}”(hj¬ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¨ˆh´M hj©ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj�ˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¨ˆh´M hjŠˆubjÄ)�”}”(hŒ<``int sync`` whether the write should be synchronous or not ”h]”(jÊ)�”}”(hŒ ``int sync``”h]”jÐ)�”}”(hj̈h]”hŒint sync”…”�”}”(hjΈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjʈubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M hjƈubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.whether the write should be synchronous or not”h]”hŒ.whether the write should be synchronous or not”…”�”}”(hjåˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jáˆh´M hjâˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjƈubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jáˆh´M hjŠˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjnˆubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj‰h]”hŒ Description”…”�”}”(hj ‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M hjnˆubhÌ)�”}”(hŒeThis function commits an inode to disk immediately if it is dirty. This is primarily needed by knfsd.”h]”hŒeThis function commits an inode to disk immediately if it is dirty. This is primarily needed by knfsd.”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M hjnˆubhÌ)�”}”(hŒLThe caller must either have a ref on the inode or must have set I_WILL_FREE.”h]”hŒLThe caller must either have a ref on the inode or must have set I_WILL_FREE.”…”�”}”(hj,‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M hjnˆubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ sync_inode_metadata (C function)”Œc.sync_inode_metadata”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ7int sync_inode_metadata (struct inode *inode, int wait)”h]”j)�”}”(hŒ6int sync_inode_metadata(struct inode *inode, int wait)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj[‰h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjW‰h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M# ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj‰h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjW‰h²hh³ji‰h´M# ubjC)�”}”(hŒsync_inode_metadata”h]”jI)�”}”(hŒsync_inode_metadata”h]”hŒsync_inode_metadata”…”�”}”(hj|‰h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjx‰ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjW‰h²hh³ji‰h´M# ubj=)�”}”(hŒ(struct inode *inode, int wait)”h]”(jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj˜‰h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj”‰ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥‰h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj”‰ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj¶‰h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj³‰ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¸‰Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj~‰sbŒc.sync_inode_metadata”†”asbuh1hhj”‰ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖ‰h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj”‰ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjä‰h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj”‰ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjñ‰h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj”‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj�‰ubjC)�”}”(hŒint wait”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj Šh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjŠubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjŠubjI)�”}”(hŒwait”h]”hŒwait”…”�”}”(hj&Šh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŠubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj�‰ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjW‰h²hh³ji‰h´M# ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjS‰h²hh³ji‰h´M# ubah}”(h]”jN‰ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³ji‰h´M# hjP‰h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒwrite an inode to disk”h]”hŒwrite an inode to disk”…”�”}”(hjPŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M# hjMŠh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjP‰h²hh³ji‰h´M# ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jhŠjšjhŠj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX **Parameters** ``struct inode *inode`` the inode to sync ``int wait`` wait for I/O to complete. **Description** Write an inode to disk and adjust its dirty state after completion. **Note** only writes the actual inode, no associated data or other metadata.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjrŠh]”hŒ Parameters”…”�”}”(hjtŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjpŠubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M' hjlŠubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ*``struct inode *inode`` the inode to sync ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj‘Šh]”hŒstruct inode *inode”…”�”}”(hj“Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj�Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M$ hj‹Šubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe inode to sync”h]”hŒthe inode to sync”…”�”}”(hjªŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¦Šh´M$ hj§Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj‹Šubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¦Šh´M$ hjˆŠubjÄ)�”}”(hŒ'``int wait`` wait for I/O to complete. ”h]”(jÊ)�”}”(hŒ ``int wait``”h]”jÐ)�”}”(hjÊŠh]”hŒint wait”…”�”}”(hjÌŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÈŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M% hjÄŠubjæ)�”}”(hhh]”hÌ)�”}”(hŒwait for I/O to complete.”h]”hŒwait for I/O to complete.”…”�”}”(hjãŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jߊh´M% hjàŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÄŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jߊh´M% hjˆŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjlŠubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj‹h]”hŒ Description”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M' hjlŠubhÌ)�”}”(hŒCWrite an inode to disk and adjust its dirty state after completion.”h]”hŒCWrite an inode to disk and adjust its dirty state after completion.”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M& hjlŠubhÌ)�”}”(hŒ**Note**”h]”j©)�”}”(hj,‹h]”hŒNote”…”�”}”(hj.‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj*‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M( hjlŠubhÌ)�”}”(hŒConly writes the actual inode, no associated data or other metadata.”h]”hŒConly writes the actual inode, no associated data or other metadata.”…”�”}”(hjB‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M) hjlŠubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œanon_inode_getfile (C function)”Œc.anon_inode_getfile”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒnstruct file * anon_inode_getfile (const char *name, const struct file_operations *fops, void *priv, int flags)”h]”j)�”}”(hŒlstruct file *anon_inode_getfile(const char *name, const struct file_operations *fops, void *priv, int flags)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjq‹h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjm‹h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´K·ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjm‹h²hh³j~‹h´K·ubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj�‹h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�‹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j’‹Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒanon_inode_getfile”sbŒc.anon_inode_getfile”†”asbuh1hhjm‹h²hh³j~‹h´K·ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±‹h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjm‹h²hh³j~‹h´K·ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¿‹h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjm‹h²hh³j~‹h´K·ubjC)�”}”(hŒanon_inode_getfile”h]”jI)�”}”(hj®‹h]”hŒanon_inode_getfile”…”�”}”(hjЋh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÌ‹ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjm‹h²hh³j~‹h´K·ubj=)�”}”(hŒM(const char *name, const struct file_operations *fops, void *priv, int flags)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjë‹h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjç‹ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjø‹h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjç‹ubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjç‹ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjç‹ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj"Œh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjç‹ubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj/Œh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjç‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjã‹ubjC)�”}”(hŒ"const struct file_operations *fops”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjHŒh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjDŒubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUŒh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjDŒubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjcŒh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjDŒubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpŒh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjDŒubh)�”}”(hhh]”jI)�”}”(hŒfile_operations”h]”hŒfile_operations”…”�”}”(hj�Œh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj~Œubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jƒŒŒmodname”NŒ classname”Njj )�”}”j ]”j¬‹Œc.anon_inode_getfile”†”asbuh1hhjDŒubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸŒh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjDŒubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj­Œh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjDŒubjI)�”}”(hŒfops”h]”hŒfops”…”�”}”(hjºŒh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjDŒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjã‹ubjC)�”}”(hŒ void *priv”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÓŒh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÏŒubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáŒh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÏŒubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjïŒh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÏŒubjI)�”}”(hŒpriv”h]”hŒpriv”…”�”}”(hjüŒh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÏŒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjã‹ubjC)�”}”(hŒ int flags”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�ubjI)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj1�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjã‹ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjm‹h²hh³j~‹h´K·ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhji‹h²hh³j~‹h´K·ubah}”(h]”jd‹ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j~‹h´K·hjf‹h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒvcreates a new file instance by hooking it up to an anonymous inode, and a dentry that describe the "class" of the file”h]”hŒzcreates a new file instance by hooking it up to an anonymous inode, and a dentry that describe the “classâ€� of the file”…”�”}”(hj[�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´K·hjX�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjf‹h²hh³j~‹h´K·ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™js�jšjs�j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXš**Parameters** ``const char *name`` [in] name of the "class" of the new file ``const struct file_operations *fops`` [in] file operations for the new file ``void *priv`` [in] private data for the new file (will be file's private_data) ``int flags`` [in] flags **Description** Creates a new file by hooking it on a single inode. This is useful for files that do not need to have a full-fledged inode in order to operate correctly. All the files created with anon_inode_getfile() will share a single inode, hence saving memory and avoiding code duplication for the file/inode/dentry setup. Returns the newly created file* or an error pointer.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj}�h]”hŒ Parameters”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj{�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´K»hjw�ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒA``const char *name`` [in] name of the "class" of the new file ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hjœ�h]”hŒconst char *name”…”�”}”(hjž�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjš�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´K»hj–�ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+[in] name of the "class" of the new file”h]”hŒ/[in] name of the “classâ€� of the new file”…”�”}”(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ŒP``const struct file_operations *fops`` [in] file operations for the new file ”h]”(jÊ)�”}”(hŒ&``const struct file_operations *fops``”h]”jÐ)�”}”(hjÕ�h]”hŒ"const struct file_operations *fops”…”�”}”(hj×�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÓ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´K¼hjÏ�ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ([in] file operations for the new file”h]”hŒ([in] file operations for the new file”…”�”}”(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ŒS``void *priv`` [in] private data for the new file (will be file's private_data) ”h]”(jÊ)�”}”(hŒ``void *priv``”h]”jÐ)�”}”(hjŽh]”hŒ void *priv”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj Žubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´K½hjŽubjæ)�”}”(hhh]”hÌ)�”}”(hŒC[in] private data for the new file (will be file's private_data)”h]”hŒE[in] private data for the new file (will be file’s private_data)”…”�”}”(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Œ``int flags`` [in] flags ”h]”(jÊ)�”}”(hŒ ``int flags``”h]”jÐ)�”}”(hjGŽh]”hŒ int flags”…”�”}”(hjIŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjEŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´K¾hjAŽubjæ)�”}”(hhh]”hÌ)�”}”(hŒ [in] flags”h]”hŒ [in] flags”…”�”}”(hj`Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j\Žh´K¾hj]Žubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjAŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j\Žh´K¾hj“�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjw�ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj‚Žh]”hŒ Description”…”�”}”(hj„Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj€Žubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´KÀhjw�ubhÌ)�”}”(hXmCreates a new file by hooking it on a single inode. This is useful for files that do not need to have a full-fledged inode in order to operate correctly. All the files created with anon_inode_getfile() will share a single inode, hence saving memory and avoiding code duplication for the file/inode/dentry setup. Returns the newly created file* or an error pointer.”h]”hXmCreates a new file by hooking it on a single inode. This is useful for files that do not need to have a full-fledged inode in order to operate correctly. All the files created with anon_inode_getfile() will share a single inode, hence saving memory and avoiding code duplication for the file/inode/dentry setup. Returns the newly created file* or an error pointer.”…”�”}”(hj˜Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´K¿hjw�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ%anon_inode_getfile_fmode (C function)”Œc.anon_inode_getfile_fmode”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ„struct file * anon_inode_getfile_fmode (const char *name, const struct file_operations *fops, void *priv, int flags, fmode_t f_mode)”h]”j)�”}”(hŒ‚struct file *anon_inode_getfile_fmode(const char *name, const struct file_operations *fops, void *priv, int flags, fmode_t f_mode)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÇŽh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÃŽh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´KÏubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕŽh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÃŽh²hh³jÔŽh´KÏubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjæŽh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjãŽubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j莌modname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒanon_inode_getfile_fmode”sbŒc.anon_inode_getfile_fmode”†”asbuh1hhjÃŽh²hh³jÔŽh´KÏubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÃŽh²hh³jÔŽh´KÏubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÃŽh²hh³jÔŽh´KÏubjC)�”}”(hŒanon_inode_getfile_fmode”h]”jI)�”}”(hj�h]”hŒanon_inode_getfile_fmode”…”�”}”(hj&�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj"�ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÃŽh²hh³jÔŽh´KÏubj=)�”}”(hŒ](const char *name, const struct file_operations *fops, void *priv, int flags, fmode_t f_mode)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjA�h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj=�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj=�ubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj\�h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj=�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj=�ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjx�h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj=�ubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj…�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj=�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj9�ubjC)�”}”(hŒ"const struct file_operations *fops”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjž�h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjš�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjš�ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¹�h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjš�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆ�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjš�ubh)�”}”(hhh]”jI)�”}”(hŒfile_operations”h]”hŒfile_operations”…”�”}”(hj×�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÔ�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÙ�Œmodname”NŒ classname”Njj )�”}”j ]”j�Œc.anon_inode_getfile_fmode”†”asbuh1hhjš�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjš�ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjš�ubjI)�”}”(hŒfops”h]”hŒfops”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjš�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj9�ubjC)�”}”(hŒ void *priv”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj)�h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj%�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj%�ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjE�h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj%�ubjI)�”}”(hŒpriv”h]”hŒpriv”…”�”}”(hjR�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj%�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj9�ubjC)�”}”(hŒ int flags”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjk�h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjg�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjg�ubjI)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj‡�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjg�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj9�ubjC)�”}”(hŒfmode_t f_mode”h]”(h)�”}”(hhh]”jI)�”}”(hŒfmode_t”h]”hŒfmode_t”…”�”}”(hj£�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj �ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¥�Œmodname”NŒ classname”Njj )�”}”j ]”j�Œc.anon_inode_getfile_fmode”†”asbuh1hhjœ�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁ�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjœ�ubjI)�”}”(hŒf_mode”h]”hŒf_mode”…”�”}”(hjÏ�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjœ�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj9�ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÃŽh²hh³jÔŽh´KÏubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj¿Žh²hh³jÔŽh´KÏubah}”(h]”jºŽah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÔŽh´KÏhj¼Žh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒvcreates a new file instance by hooking it up to an anonymous inode, and a dentry that describe the "class" of the file”h]”hŒzcreates a new file instance by hooking it up to an anonymous inode, and a dentry that describe the “classâ€� of the file”…”�”}”(hjù�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´KÏhjö�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¼Žh²hh³jÔŽh´KÏubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j‘jšj‘j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX×**Parameters** ``const char *name`` [in] name of the "class" of the new file ``const struct file_operations *fops`` [in] file operations for the new file ``void *priv`` [in] private data for the new file (will be file's private_data) ``int flags`` [in] flags ``fmode_t f_mode`` [in] fmode **Description** Creates a new file by hooking it on a single inode. This is useful for files that do not need to have a full-fledged inode in order to operate correctly. All the files created with anon_inode_getfile() will share a single inode, hence saving memory and avoiding code duplication for the file/inode/dentry setup. Allows setting the fmode. Returns the newly created file* or an error pointer.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj‘h]”hŒ Parameters”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´KÓhj‘ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒA``const char *name`` [in] name of the "class" of the new file ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hj:‘h]”hŒconst char *name”…”�”}”(hj<‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj8‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´KÓhj4‘ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+[in] name of the "class" of the new file”h]”hŒ/[in] name of the “classâ€� of the new file”…”�”}”(hjS‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jO‘h´KÓhjP‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj4‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jO‘h´KÓhj1‘ubjÄ)�”}”(hŒP``const struct file_operations *fops`` [in] file operations for the new file ”h]”(jÊ)�”}”(hŒ&``const struct file_operations *fops``”h]”jÐ)�”}”(hjs‘h]”hŒ"const struct file_operations *fops”…”�”}”(hju‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjq‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´KÔhjm‘ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ([in] file operations for the new file”h]”hŒ([in] file operations for the new file”…”�”}”(hjŒ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jˆ‘h´KÔhj‰‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjm‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jˆ‘h´KÔhj1‘ubjÄ)�”}”(hŒS``void *priv`` [in] private data for the new file (will be file's private_data) ”h]”(jÊ)�”}”(hŒ``void *priv``”h]”jÐ)�”}”(hj¬‘h]”hŒ void *priv”…”�”}”(hj®‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjª‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´KÕhj¦‘ubjæ)�”}”(hhh]”hÌ)�”}”(hŒC[in] private data for the new file (will be file's private_data)”h]”hŒE[in] private data for the new file (will be file’s private_data)”…”�”}”(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Õhj1‘ubjÄ)�”}”(hŒ``int flags`` [in] flags ”h]”(jÊ)�”}”(hŒ ``int flags``”h]”jÐ)�”}”(hjå‘h]”hŒ int flags”…”�”}”(hjç‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjã‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´KÖhjß‘ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ [in] flags”h]”hŒ [in] flags”…”�”}”(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Öhj1‘ubjÄ)�”}”(hŒ!``fmode_t f_mode`` [in] fmode ”h]”(jÊ)�”}”(hŒ``fmode_t f_mode``”h]”jÐ)�”}”(hj’h]”hŒfmode_t f_mode”…”�”}”(hj ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´K×hj’ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ [in] fmode”h]”hŒ [in] fmode”…”�”}”(hj7’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j3’h´K×hj4’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j3’h´K×hj1‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj‘ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjY’h]”hŒ Description”…”�”}”(hj[’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjW’ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´KÙhj‘ubhÌ)�”}”(hX†Creates a new file by hooking it on a single inode. This is useful for files that do not need to have a full-fledged inode in order to operate correctly. All the files created with anon_inode_getfile() will share a single inode, hence saving memory and avoiding code duplication for the file/inode/dentry setup. Allows setting the fmode. Returns the newly created file* or an error pointer.”h]”hX†Creates a new file by hooking it on a single inode. This is useful for files that do not need to have a full-fledged inode in order to operate correctly. All the files created with anon_inode_getfile() will share a single inode, hence saving memory and avoiding code duplication for the file/inode/dentry setup. Allows setting the fmode. Returns the newly created file* or an error pointer.”…”�”}”(hjo’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´KØhj‘ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ&anon_inode_create_getfile (C function)”Œc.anon_inode_create_getfile”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ˜struct file * anon_inode_create_getfile (const char *name, const struct file_operations *fops, void *priv, int flags, const struct inode *context_inode)”h]”j)�”}”(hŒ–struct file *anon_inode_create_getfile(const char *name, const struct file_operations *fops, void *priv, int flags, const struct inode *context_inode)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjž’h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjš’h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´Kïubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬’h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjš’h²hh³j«’h´Kïubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj½’h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjº’ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¿’Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒanon_inode_create_getfile”sbŒc.anon_inode_create_getfile”†”asbuh1hhjš’h²hh³j«’h´Kïubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞ’h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjš’h²hh³j«’h´Kïubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjì’h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjš’h²hh³j«’h´KïubjC)�”}”(hŒanon_inode_create_getfile”h]”jI)�”}”(hjÛ’h]”hŒanon_inode_create_getfile”…”�”}”(hjý’h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjù’ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjš’h²hh³j«’h´Kïubj=)�”}”(hŒp(const char *name, const struct file_operations *fops, void *priv, int flags, const struct inode *context_inode)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj“ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%“h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj“ubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj3“h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj“ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjA“h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj“ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjO“h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj“ubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj\“h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj“ubjC)�”}”(hŒ"const struct file_operations *fops”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hju“h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjq“ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚“h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjq“ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj�“h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjq“ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�“h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjq“ubh)�”}”(hhh]”jI)�”}”(hŒfile_operations”h]”hŒfile_operations”…”�”}”(hj®“h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj«“ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j°“Œmodname”NŒ classname”Njj )�”}”j ]”jÙ’Œc.anon_inode_create_getfile”†”asbuh1hhjq“ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌ“h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjq“ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÚ“h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjq“ubjI)�”}”(hŒfops”h]”hŒfops”…”�”}”(hjç“h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjq“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj“ubjC)�”}”(hŒ void *priv”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjü“ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjü“ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjü“ubjI)�”}”(hŒpriv”h]”hŒpriv”…”�”}”(hj)”h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjü“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj“ubjC)�”}”(hŒ int flags”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjB”h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj>”ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP”h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj>”ubjI)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj^”h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj>”ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj“ubjC)�”}”(hŒ!const struct inode *context_inode”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjw”h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjs”ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„”h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjs”ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj’”h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjs”ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ”h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjs”ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj°”h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj­”ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j²”Œmodname”NŒ classname”Njj )�”}”j ]”jÙ’Œc.anon_inode_create_getfile”†”asbuh1hhjs”ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjΔh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjs”ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÜ”h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjs”ubjI)�”}”(hŒ context_inode”h]”hŒ context_inode”…”�”}”(hjé”h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjs”ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj“ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjš’h²hh³j«’h´Kïubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj–’h²hh³j«’h´Kïubah}”(h]”j‘’ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j«’h´Kïhj“’h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ Like anon_inode_getfile(), but creates a new !S_PRIVATE anon inode rather than reuse the singleton anon inode and calls the inode_init_security_anon() LSM hook.”h]”hŒ Like anon_inode_getfile(), but creates a new !S_PRIVATE anon inode rather than reuse the singleton anon inode and calls the inode_init_security_anon() LSM hook.”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´Kïhj•h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj“’h²hh³j«’h´Kïubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j+•jšj+•j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXT**Parameters** ``const char *name`` [in] name of the "class" of the new file ``const struct file_operations *fops`` [in] file operations for the new file ``void *priv`` [in] private data for the new file (will be file's private_data) ``int flags`` [in] flags ``const struct inode *context_inode`` [in] the logical relationship with the new inode (optional) **Description** Create a new anonymous inode and file pair. This can be done for two reasons: - for the inode to have its own security context, so that LSMs can enforce policy on the inode's creation; - if the caller needs a unique inode, for example in order to customize the size returned by fstat() The LSM may use **context_inode** in inode_init_security_anon(), but a reference to it is not held. Returns the newly created file* or an error pointer.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj5•h]”hŒ Parameters”…”�”}”(hj7•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj3•ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´Kóhj/•ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒA``const char *name`` [in] name of the "class" of the new file ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hjT•h]”hŒconst char *name”…”�”}”(hjV•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjR•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´KôhjN•ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+[in] name of the "class" of the new file”h]”hŒ/[in] name of the “classâ€� of the new file”…”�”}”(hjm•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ji•h´Kôhjj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjN•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³ji•h´KôhjK•ubjÄ)�”}”(hŒP``const struct file_operations *fops`` [in] file operations for the new file ”h]”(jÊ)�”}”(hŒ&``const struct file_operations *fops``”h]”jÐ)�”}”(hj�•h]”hŒ"const struct file_operations *fops”…”�”}”(hj�•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj‹•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´Kõhj‡•ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ([in] file operations for the new file”h]”hŒ([in] file operations for the new file”…”�”}”(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õhjK•ubjÄ)�”}”(hŒS``void *priv`` [in] private data for the new file (will be file's private_data) ”h]”(jÊ)�”}”(hŒ``void *priv``”h]”jÐ)�”}”(hjÆ•h]”hŒ void *priv”…”�”}”(hjÈ•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÄ•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´KöhjÀ•ubjæ)�”}”(hhh]”hÌ)�”}”(hŒC[in] private data for the new file (will be file's private_data)”h]”hŒE[in] private data for the new file (will be file’s private_data)”…”�”}”(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öhjK•ubjÄ)�”}”(hŒ``int flags`` [in] flags ”h]”(jÊ)�”}”(hŒ ``int flags``”h]”jÐ)�”}”(hjÿ•h]”hŒ int flags”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjý•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´K÷hjù•ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ [in] flags”h]”hŒ [in] flags”…”�”}”(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÷hjK•ubjÄ)�”}”(hŒe``const struct inode *context_inode`` [in] the logical relationship with the new inode (optional) ”h]”(jÊ)�”}”(hŒ%``const struct inode *context_inode``”h]”jÐ)�”}”(hj8–h]”hŒ!const struct inode *context_inode”…”�”}”(hj:–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj6–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´Køhj2–ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ>[in] the logical relationship with the new inode (optional)”h]”hŒ>[in] the logical relationship with the new inode (optional)”…”�”}”(hjQ–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jM–h´KøhjN–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj2–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jM–h´KøhjK•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj/•ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjs–h]”hŒ Description”…”�”}”(hju–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjq–ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´Kúhj/•ubhÌ)�”}”(hŒNCreate a new anonymous inode and file pair. This can be done for two reasons:”h]”hŒNCreate a new anonymous inode and file pair. This can be done for two reasons:”…”�”}”(hj‰–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´Kúhj/•ubj‘E)�”}”(hhh]”(j–E)�”}”(hŒifor the inode to have its own security context, so that LSMs can enforce policy on the inode's creation; ”h]”hÌ)�”}”(hŒhfor the inode to have its own security context, so that LSMs can enforce policy on the inode's creation;”h]”hŒjfor the inode to have its own security context, so that LSMs can enforce policy on the inode’s creation;”…”�”}”(hjŸ–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´Kýhj›–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•Ehj˜–ubj–E)�”}”(hŒcif the caller needs a unique inode, for example in order to customize the size returned by fstat() ”h]”hÌ)�”}”(hŒbif the caller needs a unique inode, for example in order to customize the size returned by fstat()”h]”hŒbif the caller needs a unique inode, for example in order to customize the size returned by fstat()”…”�”}”(hj¸–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´Mhj´–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j•Ehj˜–ubeh}”(h]”h ]”h"]”h$]”h&]”jÏEjÍ2uh1j�Eh³j­–h´Kýhj/•ubhÌ)�”}”(hŒcThe LSM may use **context_inode** in inode_init_security_anon(), but a reference to it is not held.”h]”(hŒThe LSM may use ”…”�”}”(hjÓ–h²hh³Nh´Nubj©)�”}”(hŒ**context_inode**”h]”hŒ context_inode”…”�”}”(hjÛ–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÓ–ubhŒB in inode_init_security_anon(), but a reference to it is not held.”…”�”}”(hjÓ–h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´Mhj/•ubhÌ)�”}”(hŒ4Returns the newly created file* or an error pointer.”h]”hŒ4Returns the newly created file* or an error pointer.”…”�”}”(hjô–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´Mhj/•ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œanon_inode_getfd (C function)”Œc.anon_inode_getfd”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒbint anon_inode_getfd (const char *name, const struct file_operations *fops, void *priv, int flags)”h]”j)�”}”(hŒaint anon_inode_getfd(const char *name, const struct file_operations *fops, void *priv, int flags)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj#—h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj—h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2—h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj—h²hh³j1—h´MubjC)�”}”(hŒanon_inode_getfd”h]”jI)�”}”(hŒanon_inode_getfd”h]”hŒanon_inode_getfd”…”�”}”(hjD—h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj@—ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj—h²hh³j1—h´Mubj=)�”}”(hŒM(const char *name, const struct file_operations *fops, void *priv, int flags)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj`—h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj\—ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm—h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj\—ubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj{—h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj\—ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰—h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj\—ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj——h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj\—ubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj¤—h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj\—ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjX—ubjC)�”}”(hŒ"const struct file_operations *fops”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj½—h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¹—ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊ—h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¹—ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjØ—h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¹—ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjå—h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¹—ubh)�”}”(hhh]”jI)�”}”(hŒfile_operations”h]”hŒfile_operations”…”�”}”(hjö—h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjó—ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jø—Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjF—sbŒc.anon_inode_getfd”†”asbuh1hhj¹—ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¹—ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj$˜h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¹—ubjI)�”}”(hŒfops”h]”hŒfops”…”�”}”(hj1˜h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¹—ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjX—ubjC)�”}”(hŒ void *priv”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjJ˜h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjF˜ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX˜h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjF˜ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjf˜h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjF˜ubjI)�”}”(hŒpriv”h]”hŒpriv”…”�”}”(hjs˜h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjF˜ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjX—ubjC)�”}”(hŒ int flags”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjŒ˜h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjˆ˜ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš˜h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjˆ˜ubjI)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj¨˜h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjˆ˜ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjX—ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj—h²hh³j1—h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj—h²hh³j1—h´Mubah}”(h]”j—ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j1—h´Mhj—h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒucreates a new file instance by hooking it up to an anonymous inode and a dentry that describe the "class" of the file”h]”hŒycreates a new file instance by hooking it up to an anonymous inode and a dentry that describe the “classâ€� of the file”…”�”}”(hjÒ˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´MhjϘh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj—h²hh³j1—h´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jê˜jšjê˜j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX¦**Parameters** ``const char *name`` [in] name of the "class" of the new file ``const struct file_operations *fops`` [in] file operations for the new file ``void *priv`` [in] private data for the new file (will be file's private_data) ``int flags`` [in] flags **Description** Creates a new file by hooking it on a single inode. This is useful for files that do not need to have a full-fledged inode in order to operate correctly. All the files created with anon_inode_getfd() will use the same singleton inode, reducing memory use and avoiding code duplication for the file/inode/dentry setup. Returns a newly created file descriptor or an error code.”•h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjô˜h]”hŒ Parameters”…”�”}”(hjö˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjò˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´M"hjî˜ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒA``const char *name`` [in] name of the "class" of the new file ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hj™h]”hŒconst char *name”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´M"hj ™ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+[in] name of the "class" of the new file”h]”hŒ/[in] name of the “classâ€� of the new file”…”�”}”(hj,™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j(™h´M"hj)™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj ™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j(™h´M"hj ™ubjÄ)�”}”(hŒP``const struct file_operations *fops`` [in] file operations for the new file ”h]”(jÊ)�”}”(hŒ&``const struct file_operations *fops``”h]”jÐ)�”}”(hjL™h]”hŒ"const struct file_operations *fops”…”�”}”(hjN™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjJ™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´M#hjF™ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ([in] file operations for the new file”h]”hŒ([in] file operations for the new file”…”�”}”(hje™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ja™h´M#hjb™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjF™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³ja™h´M#hj ™ubjÄ)�”}”(hŒS``void *priv`` [in] private data for the new file (will be file's private_data) ”h]”(jÊ)�”}”(hŒ``void *priv``”h]”jÐ)�”}”(hj…™h]”hŒ void *priv”…”�”}”(hj‡™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjƒ™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´M$hj™ubjæ)�”}”(hhh]”hÌ)�”}”(hŒC[in] private data for the new file (will be file's private_data)”h]”hŒE[in] private data for the new file (will be file’s private_data)”…”�”}”(hjž™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jš™h´M$hj›™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jš™h´M$hj ™ubjÄ)�”}”(hŒ``int flags`` [in] flags ”h]”(jÊ)�”}”(hŒ ``int flags``”h]”jÐ)�”}”(hj¾™h]”hŒ int flags”…”�”}”(hjÀ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¼™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´M%hj¸™ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ [in] flags”h]”hŒ [in] flags”…”�”}”(hj×™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÓ™h´M%hjÔ™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¸™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÓ™h´M%hj ™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjî˜ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjù™h]”hŒ Description”…”�”}”(hjû™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj÷™ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´M'hjî˜ubhÌ)�”}”(hXyCreates a new file by hooking it on a single inode. This is useful for files that do not need to have a full-fledged inode in order to operate correctly. All the files created with anon_inode_getfd() will use the same singleton inode, reducing memory use and avoiding code duplication for the file/inode/dentry setup. Returns a newly created file descriptor or an error code.”h]”hXyCreates a new file by hooking it on a single inode. This is useful for files that do not need to have a full-fledged inode in order to operate correctly. All the files created with anon_inode_getfd() will use the same singleton inode, reducing memory use and avoiding code duplication for the file/inode/dentry setup. Returns a newly created file descriptor or an error code.”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´M&hjî˜ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ%setattr_should_drop_sgid (C function)”Œc.setattr_should_drop_sgid”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒWint setattr_should_drop_sgid (const struct mnt_idmap *idmap, const struct inode *inode)”h]”j)�”}”(hŒVint setattr_should_drop_sgid(const struct mnt_idmap *idmap, const struct inode *inode)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj>šh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj:šh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´Kubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMšh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj:šh²hh³jLšh´KubjC)�”}”(hŒsetattr_should_drop_sgid”h]”jI)�”}”(hŒsetattr_should_drop_sgid”h]”hŒsetattr_should_drop_sgid”…”�”}”(hj_šh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj[šubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj:šh²hh³jLšh´Kubj=)�”}”(hŒ:(const struct mnt_idmap *idmap, const struct inode *inode)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj{šh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjwšubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆšh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjwšubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj–šh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjwšubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£šh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjwšubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hj´šh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj±šubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¶šŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjašsbŒc.setattr_should_drop_sgid”†”asbuh1hhjwšubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔšh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjwšubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjâšh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjwšubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hjïšh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjwšubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjsšubjC)�”}”(hŒconst struct inode *inode”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj›ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj›ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj#›h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj›ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0›h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj›ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjA›h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj>›ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jC›Œmodname”NŒ classname”Njj )�”}”j ]”jКŒc.setattr_should_drop_sgid”†”asbuh1hhj›ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_›h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj›ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjm›h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj›ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjz›h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjsšubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj:šh²hh³jLšh´Kubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj6šh²hh³jLšh´Kubah}”(h]”j1šah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jLšh´Khj3šh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ4determine whether the setgid bit needs to be removed”h]”hŒ4determine whether the setgid bit needs to be removed”…”�”}”(hj¤›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´Khj¡›h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj3šh²hh³jLšh´Kubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j¼›jšj¼›j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXó**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount **inode** was found from ``const struct inode *inode`` inode to check **Description** This function determines whether the setgid bit needs to be removed. We retain backwards compatibility and require setgid bit to be removed unconditionally if S_IXGRP is set. Otherwise we have the exact same requirements as setattr_prepare() and setattr_copy(). **Return** ATTR_KILL_SGID if setgid bit needs to be removed, 0 otherwise.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÆ›h]”hŒ Parameters”…”�”}”(hjÈ›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÄ›ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´KhjÀ›ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒN``const struct mnt_idmap *idmap`` idmap of the mount **inode** was found from ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjå›h]”hŒconst struct mnt_idmap *idmap”…”�”}”(hjç›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjã›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´Khjß›ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+idmap of the mount **inode** was found from”h]”(hŒidmap of the mount ”…”�”}”(hjþ›h²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjþ›ubhŒ was found from”…”�”}”(hjþ›h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jú›h´Khjû›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjß›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jú›h´KhjÜ›ubjÄ)�”}”(hŒ-``const struct inode *inode`` inode to check ”h]”(jÊ)�”}”(hŒ``const struct inode *inode``”h]”jÐ)�”}”(hj0œh]”hŒconst struct inode *inode”…”�”}”(hj2œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj.œubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´Khj*œubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode to check”h]”hŒinode to check”…”�”}”(hjIœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jEœh´KhjFœubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj*œubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jEœh´KhjÜ›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÀ›ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjkœh]”hŒ Description”…”�”}”(hjmœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjiœubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´KhjÀ›ubhÌ)�”}”(hXThis function determines whether the setgid bit needs to be removed. We retain backwards compatibility and require setgid bit to be removed unconditionally if S_IXGRP is set. Otherwise we have the exact same requirements as setattr_prepare() and setattr_copy().”h]”hXThis function determines whether the setgid bit needs to be removed. We retain backwards compatibility and require setgid bit to be removed unconditionally if S_IXGRP is set. Otherwise we have the exact same requirements as setattr_prepare() and setattr_copy().”…”�”}”(hj�œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´KhjÀ›ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj’œh]”hŒReturn”…”�”}”(hj”œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj�œubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´KhjÀ›ubhÌ)�”}”(hŒ>ATTR_KILL_SGID if setgid bit needs to be removed, 0 otherwise.”h]”hŒ>ATTR_KILL_SGID if setgid bit needs to be removed, 0 otherwise.”…”�”}”(hj¨œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´KhjÀ›ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ(setattr_should_drop_suidgid (C function)”Œc.setattr_should_drop_suidgid”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒTint setattr_should_drop_suidgid (const struct mnt_idmap *idmap, struct inode *inode)”h]”j)�”}”(hŒSint setattr_should_drop_suidgid(const struct mnt_idmap *idmap, struct inode *inode)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjלh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÓœh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´K1ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæœh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÓœh²hh³jåœh´K1ubjC)�”}”(hŒsetattr_should_drop_suidgid”h]”jI)�”}”(hŒsetattr_should_drop_suidgid”h]”hŒsetattr_should_drop_suidgid”…”�”}”(hjøœh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjôœubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÓœh²hh³jåœh´K1ubj=)�”}”(hŒ4(const struct mnt_idmap *idmap, struct inode *inode)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj/�h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�ubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hjM�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjJ�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jO�Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjúœsbŒc.setattr_should_drop_suidgid”†”asbuh1hhj�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj{�h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj�ubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hjˆ�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj �ubjC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¡�h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj��ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj��ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj¿�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¼�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÁ�Œmodname”NŒ classname”Njj )�”}”j ]”ji�Œc.setattr_should_drop_suidgid”†”asbuh1hhj��ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝ�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj��ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjë�h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj��ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjø�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj��ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj �ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÓœh²hh³jåœh´K1ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÏœh²hh³jåœh´K1ubah}”(h]”jÊœah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jåœh´K1hjÌœh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ8determine whether the set{g,u}id bit needs to be dropped”h]”hŒ8determine whether the set{g,u}id bit needs to be dropped”…”�”}”(hj"žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´K1hjžh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÌœh²hh³jåœh´K1ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j:žjšj:žj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX.**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount **inode** was found from ``struct inode *inode`` inode to check **Description** This function determines whether the set{g,u}id bits need to be removed. If the setuid bit needs to be removed ATTR_KILL_SUID is returned. If the setgid bit needs to be removed ATTR_KILL_SGID is returned. If both set{g,u}id bits need to be removed the corresponding mask of both flags is returned. **Return** A mask of ATTR_KILL_S{G,U}ID indicating which - if any - setid bits to remove, 0 otherwise.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjDžh]”hŒ Parameters”…”�”}”(hjFžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjBžubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´K5hj>žubj¿)�”}”(hhh]”(jÄ)�”}”(hŒN``const struct mnt_idmap *idmap`` idmap of the mount **inode** was found from ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjcžh]”hŒconst struct mnt_idmap *idmap”…”�”}”(hježh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjažubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´K3hj]žubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+idmap of the mount **inode** was found from”h]”(hŒidmap of the mount ”…”�”}”(hj|žh²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hj„žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj|žubhŒ was found from”…”�”}”(hj|žh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jxžh´K3hjyžubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj]žubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jxžh´K3hjZžubjÄ)�”}”(hŒ'``struct inode *inode`` inode to check ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj®žh]”hŒstruct inode *inode”…”�”}”(hj°žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¬žubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´K4hj¨žubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode to check”h]”hŒinode to check”…”�”}”(hjÇžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÞh´K4hjÄžubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¨žubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÞh´K4hjZžubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj>žubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjéžh]”hŒ Description”…”�”}”(hjëžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjçžubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´K6hj>žubhÌ)�”}”(hX)This function determines whether the set{g,u}id bits need to be removed. If the setuid bit needs to be removed ATTR_KILL_SUID is returned. If the setgid bit needs to be removed ATTR_KILL_SGID is returned. If both set{g,u}id bits need to be removed the corresponding mask of both flags is returned.”h]”hX)This function determines whether the set{g,u}id bits need to be removed. If the setuid bit needs to be removed ATTR_KILL_SUID is returned. If the setgid bit needs to be removed ATTR_KILL_SGID is returned. If both set{g,u}id bits need to be removed the corresponding mask of both flags is returned.”…”�”}”(hjÿžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´K5hj>žubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjŸh]”hŒReturn”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´K;hj>žubhÌ)�”}”(hŒ[A mask of ATTR_KILL_S{G,U}ID indicating which - if any - setid bits to remove, 0 otherwise.”h]”hŒ[A mask of ATTR_KILL_S{G,U}ID indicating which - if any - setid bits to remove, 0 otherwise.”…”�”}”(hj&Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´Kžubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œsetattr_prepare (C function)”Œc.setattr_prepare”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ^int setattr_prepare (const struct mnt_idmap *idmap, struct dentry *dentry, struct iattr *attr)”h]”j)�”}”(hŒ]int setattr_prepare(const struct mnt_idmap *idmap, struct dentry *dentry, struct iattr *attr)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjUŸh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjQŸh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´K�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdŸh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjQŸh²hh³jcŸh´K�ubjC)�”}”(hŒsetattr_prepare”h]”jI)�”}”(hŒsetattr_prepare”h]”hŒsetattr_prepare”…”�”}”(hjvŸh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjrŸubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjQŸh²hh³jcŸh´K�ubj=)�”}”(hŒJ(const struct mnt_idmap *idmap, struct dentry *dentry, struct iattr *attr)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj’Ÿh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjŽŸubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸŸh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjŽŸubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj­Ÿh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjŽŸubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºŸh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjŽŸubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hjËŸh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÈŸubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÍŸŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjxŸsbŒc.setattr_prepare”†”asbuh1hhjŽŸubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëŸh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjŽŸubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjùŸh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjŽŸubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŽŸubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjŠŸubjC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj, h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj= h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj: ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j? Œmodname”NŒ classname”Njj )�”}”j ]”j矌c.setattr_prepare”†”asbuh1hhj ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[ h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hji h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjv h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjŠŸubjC)�”}”(hŒstruct iattr *attr”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj‹ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœ h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‹ ubh)�”}”(hhh]”jI)�”}”(hŒiattr”h]”hŒiattr”…”�”}”(hj­ h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjª ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¯ Œmodname”NŒ classname”Njj )�”}”j ]”j矌c.setattr_prepare”†”asbuh1hhj‹ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjË h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‹ ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÙ h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj‹ ubjI)�”}”(hŒattr”h]”hŒattr”…”�”}”(hjæ h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‹ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjŠŸubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjQŸh²hh³jcŸh´K�ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjMŸh²hh³jcŸh´K�ubah}”(h]”jHŸah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jcŸh´K�hjJŸh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ2check if attribute changes to a dentry are allowed”h]”hŒ2check if attribute changes to a dentry are allowed”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´K�hj ¡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjJŸh²hh³jcŸh´K�ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j(¡jšj(¡j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXì**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ``struct dentry *dentry`` dentry to check ``struct iattr *attr`` attributes to change **Description** Check if we are allowed to change the attributes contained in **attr** in the given dentry. This includes the normal unix access permission checks, as well as checks for rlimits and others. The function also clears SGID bit from mode if user is not allowed to set it. Also file capabilities and IMA extended attributes are cleared if ATTR_KILL_PRIV is set. If the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through **idmap**. This function will then take care to map the inode according to **idmap** before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass **nop_mnt_idmap**. Should be called as the first thing in ->setattr implementations, possibly after taking additional locks.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj2¡h]”hŒ Parameters”…”�”}”(hj4¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj0¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´K‘hj,¡ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒN``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjQ¡h]”hŒconst struct mnt_idmap *idmap”…”�”}”(hjS¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjO¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´KŽhjK¡ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+idmap of the mount the inode was found from”h]”hŒ+idmap of the mount the inode was found from”…”�”}”(hjj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jf¡h´KŽhjg¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjK¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jf¡h´KŽhjH¡ubjÄ)�”}”(hŒ*``struct dentry *dentry`` dentry to check ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hjŠ¡h]”hŒstruct dentry *dentry”…”�”}”(hjŒ¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjˆ¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´K�hj„¡ubjæ)�”}”(hhh]”hÌ)�”}”(hŒdentry to check”h]”hŒdentry to check”…”�”}”(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�hjH¡ubjÄ)�”}”(hŒ,``struct iattr *attr`` attributes to change ”h]”(jÊ)�”}”(hŒ``struct iattr *attr``”h]”jÐ)�”}”(hjáh]”hŒstruct iattr *attr”…”�”}”(hjÅ¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÁ¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´K�hj½¡ubjæ)�”}”(hhh]”hÌ)�”}”(hŒattributes to change”h]”hŒattributes to change”…”�”}”(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�hjH¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj,¡ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjþ¡h]”hŒ Description”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjü¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´K’hj,¡ubhÌ)�”}”(hXeCheck if we are allowed to change the attributes contained in **attr** in the given dentry. This includes the normal unix access permission checks, as well as checks for rlimits and others. The function also clears SGID bit from mode if user is not allowed to set it. Also file capabilities and IMA extended attributes are cleared if ATTR_KILL_PRIV is set.”h]”(hŒ>Check if we are allowed to change the attributes contained in ”…”�”}”(hj¢h²hh³Nh´Nubj©)�”}”(hŒ**attr**”h]”hŒattr”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¢ubhX in the given dentry. This includes the normal unix access permission checks, as well as checks for rlimits and others. The function also clears SGID bit from mode if user is not allowed to set it. Also file capabilities and IMA extended attributes are cleared if ATTR_KILL_PRIV is set.”…”�”}”(hj¢h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´K‘hj,¡ubhÌ)�”}”(hXLIf the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through **idmap**. This function will then take care to map the inode according to **idmap** before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass **nop_mnt_idmap**.”h]”(hŒgIf the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through ”…”�”}”(hj5¢h²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hj=¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj5¢ubhŒB. This function will then take care to map the inode according to ”…”�”}”(hj5¢h²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hjO¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj5¢ubhŒ before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass ”…”�”}”(hj5¢h²hh³Nh´Nubj©)�”}”(hŒ**nop_mnt_idmap**”h]”hŒ nop_mnt_idmap”…”�”}”(hja¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj5¢ubhŒ.”…”�”}”(hj5¢h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´K—hj,¡ubhÌ)�”}”(hŒiShould be called as the first thing in ->setattr implementations, possibly after taking additional locks.”h]”hŒiShould be called as the first thing in ->setattr implementations, possibly after taking additional locks.”…”�”}”(hjz¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´K�hj,¡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œinode_newsize_ok (C function)”Œc.inode_newsize_ok”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ?int inode_newsize_ok (const struct inode *inode, loff_t offset)”h]”j)�”}”(hŒ>int inode_newsize_ok(const struct inode *inode, loff_t offset)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj©¢h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¥¢h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´Kïubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸¢h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¥¢h²hh³j·¢h´KïubjC)�”}”(hŒinode_newsize_ok”h]”jI)�”}”(hŒinode_newsize_ok”h]”hŒinode_newsize_ok”…”�”}”(hjÊ¢h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÆ¢ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj¥¢h²hh³j·¢h´Kïubj=)�”}”(hŒ*(const struct inode *inode, loff_t offset)”h]”(jC)�”}”(hŒconst struct inode *inode”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjæ¢h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjâ¢ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjó¢h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjâ¢ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjâ¢ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjâ¢ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj£ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j!£Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÌ¢sbŒc.inode_newsize_ok”†”asbuh1hhjâ¢ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?£h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjâ¢ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjM£h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjâ¢ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjZ£h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjâ¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÞ¢ubjC)�”}”(hŒ loff_t offset”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjv£h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjs£ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jx£Œmodname”NŒ classname”Njj )�”}”j ]”j;£Œc.inode_newsize_ok”†”asbuh1hhjo£ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”£h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjo£ubjI)�”}”(hŒoffset”h]”hŒoffset”…”�”}”(hj¢£h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjo£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÞ¢ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj¥¢h²hh³j·¢h´Kïubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj¡¢h²hh³j·¢h´Kïubah}”(h]”jœ¢ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j·¢h´Kïhjž¢h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ+may this inode be truncated to a given size”h]”hŒ+may this inode be truncated to a given size”…”�”}”(hjÌ£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´KïhjÉ£h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjž¢h²hh³j·¢h´Kïubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jä£jšjä£j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX}**Parameters** ``const struct inode *inode`` the inode to be truncated ``loff_t offset`` the new size to assign to the inode **Description** inode_newsize_ok must be called with i_rwsem held exclusively. inode_newsize_ok will check filesystem limits and ulimits to check that the new inode size is within limits. inode_newsize_ok will also send SIGXFSZ when necessary. Caller must not proceed with inode size change if failure is returned. **inode** must be a file (not directory), with appropriate permissions to allow truncate (inode_newsize_ok does NOT check these conditions). **Return** 0 on success, -ve errno on failure”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjî£h]”hŒ Parameters”…”�”}”(hjð£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjì£ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´Kóhjè£ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ8``const struct inode *inode`` the inode to be truncated ”h]”(jÊ)�”}”(hŒ``const struct inode *inode``”h]”jÐ)�”}”(hj ¤h]”hŒconst struct inode *inode”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj ¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´Kðhj¤ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe inode to be truncated”h]”hŒthe inode to be truncated”…”�”}”(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Œ6``loff_t offset`` the new size to assign to the inode ”h]”(jÊ)�”}”(hŒ``loff_t offset``”h]”jÐ)�”}”(hjF¤h]”hŒ loff_t offset”…”�”}”(hjH¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjD¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´Kñhj@¤ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ#the new size to assign to the inode”h]”hŒ#the new size to assign to the inode”…”�”}”(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¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjè£ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj�¤h]”hŒ Description”…”�”}”(hjƒ¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´Kóhjè£ubhÌ)�”}”(hŒ>inode_newsize_ok must be called with i_rwsem held exclusively.”h]”hŒ>inode_newsize_ok must be called with i_rwsem held exclusively.”…”�”}”(hj—¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´Kòhjè£ubhÌ)�”}”(hXxinode_newsize_ok will check filesystem limits and ulimits to check that the new inode size is within limits. inode_newsize_ok will also send SIGXFSZ when necessary. Caller must not proceed with inode size change if failure is returned. **inode** must be a file (not directory), with appropriate permissions to allow truncate (inode_newsize_ok does NOT check these conditions).”h]”(hŒìinode_newsize_ok will check filesystem limits and ulimits to check that the new inode size is within limits. inode_newsize_ok will also send SIGXFSZ when necessary. Caller must not proceed with inode size change if failure is returned. ”…”�”}”(hj¦¤h²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hj®¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¦¤ubhŒƒ must be a file (not directory), with appropriate permissions to allow truncate (inode_newsize_ok does NOT check these conditions).”…”�”}”(hj¦¤h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´Kôhjè£ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjɤh]”hŒReturn”…”�”}”(hjˤh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjǤubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´Kûhjè£ubhÌ)�”}”(hŒ"0 on success, -ve errno on failure”h]”hŒ"0 on success, -ve errno on failure”…”�”}”(hjߤh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´Kühjè£ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œsetattr_copy (C function)”Œc.setattr_copy”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ`void setattr_copy (const struct mnt_idmap *idmap, struct inode *inode, const struct iattr *attr)”h]”j)�”}”(hŒ_void setattr_copy(const struct mnt_idmap *idmap, struct inode *inode, const struct iattr *attr)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj ¥h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´M>ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ¥h²hh³j¥h´M>ubjC)�”}”(hŒ setattr_copy”h]”jI)�”}”(hŒ setattr_copy”h]”hŒ setattr_copy”…”�”}”(hj/¥h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj+¥ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj ¥h²hh³j¥h´M>ubj=)�”}”(hŒN(const struct mnt_idmap *idmap, struct inode *inode, const struct iattr *attr)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjK¥h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjG¥ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX¥h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjG¥ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjf¥h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjG¥ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjs¥h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjG¥ubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hj„¥h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j†¥Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj1¥sbŒc.setattr_copy”†”asbuh1hhjG¥ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤¥h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjG¥ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj²¥h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjG¥ubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hj¿¥h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjG¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjC¥ubjC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjØ¥h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÔ¥ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjå¥h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÔ¥ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjö¥h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjó¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jø¥Œmodname”NŒ classname”Njj )�”}”j ]”j ¥Œc.setattr_copy”†”asbuh1hhjÔ¥ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÔ¥ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj"¦h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÔ¥ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj/¦h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÔ¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjC¥ubjC)�”}”(hŒconst struct iattr *attr”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjH¦h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjD¦ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU¦h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjD¦ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjc¦h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjD¦ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp¦h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjD¦ubh)�”}”(hhh]”jI)�”}”(hŒiattr”h]”hŒiattr”…”�”}”(hj�¦h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj~¦ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jƒ¦Œmodname”NŒ classname”Njj )�”}”j ]”j ¥Œc.setattr_copy”†”asbuh1hhjD¦ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ¦h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjD¦ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj­¦h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjD¦ubjI)�”}”(hŒattr”h]”hŒattr”…”�”}”(hjº¦h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjD¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjC¥ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj ¥h²hh³j¥h´M>ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj¥h²hh³j¥h´M>ubah}”(h]”j¥ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j¥h´M>hj¥h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ3copy simple metadata updates into the generic inode”h]”hŒ3copy simple metadata updates into the generic inode”…”�”}”(hjä¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´M>hjá¦h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¥h²hh³j¥h´M>ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jü¦jšjü¦j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX�**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ``struct inode *inode`` the inode to be updated ``const struct iattr *attr`` the new attributes **Description** setattr_copy must be called with i_rwsem held exclusively. setattr_copy updates the inode's metadata with that specified in attr on idmapped mounts. Necessary permission checks to determine whether or not the S_ISGID property needs to be removed are performed with the correct idmapped mount permission helpers. Noticeably missing is inode size update, which is more complex as it requires pagecache updates. If the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through **idmap**. This function will then take care to map the inode according to **idmap** before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass **nop_mnt_idmap**. The inode is not marked as dirty after this operation. The rationale is that for "simple" filesystems, the struct inode is the inode storage. The caller is free to mark the inode dirty afterwards if needed.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj§h]”hŒ Parameters”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´MBhj§ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒN``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj%§h]”hŒconst struct mnt_idmap *idmap”…”�”}”(hj'§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj#§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´M?hj§ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+idmap of the mount the inode was found from”h]”hŒ+idmap of the mount the inode was found from”…”�”}”(hj>§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j:§h´M?hj;§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j:§h´M?hj§ubjÄ)�”}”(hŒ0``struct inode *inode`` the inode to be updated ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj^§h]”hŒstruct inode *inode”…”�”}”(hj`§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj\§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´M@hjX§ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe inode to be updated”h]”hŒthe inode to be updated”…”�”}”(hjw§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³js§h´M@hjt§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjX§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³js§h´M@hj§ubjÄ)�”}”(hŒ0``const struct iattr *attr`` the new attributes ”h]”(jÊ)�”}”(hŒ``const struct iattr *attr``”h]”jÐ)�”}”(hj—§h]”hŒconst struct iattr *attr”…”�”}”(hj™§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj•§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´MAhj‘§ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe new attributes”h]”hŒthe new attributes”…”�”}”(hj°§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¬§h´MAhj­§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj‘§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¬§h´MAhj§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj§ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÒ§h]”hŒ Description”…”�”}”(hjÔ§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjЧubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´MChj§ubhÌ)�”}”(hŒ:setattr_copy must be called with i_rwsem held exclusively.”h]”hŒ:setattr_copy must be called with i_rwsem held exclusively.”…”�”}”(hjè§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´MBhj§ubhÌ)�”}”(hX]setattr_copy updates the inode's metadata with that specified in attr on idmapped mounts. Necessary permission checks to determine whether or not the S_ISGID property needs to be removed are performed with the correct idmapped mount permission helpers. Noticeably missing is inode size update, which is more complex as it requires pagecache updates.”h]”hX_setattr_copy updates the inode’s metadata with that specified in attr on idmapped mounts. Necessary permission checks to determine whether or not the S_ISGID property needs to be removed are performed with the correct idmapped mount permission helpers. Noticeably missing is inode size update, which is more complex as it requires pagecache updates.”…”�”}”(hj÷§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´MDhj§ubhÌ)�”}”(hXLIf the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through **idmap**. This function will then take care to map the inode according to **idmap** before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass **nop_mnt_idmap**.”h]”(hŒgIf the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through ”…”�”}”(hj¨h²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¨ubhŒB. This function will then take care to map the inode according to ”…”�”}”(hj¨h²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hj ¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¨ubhŒ before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass ”…”�”}”(hj¨h²hh³Nh´Nubj©)�”}”(hŒ**nop_mnt_idmap**”h]”hŒ nop_mnt_idmap”…”�”}”(hj2¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¨ubhŒ.”…”�”}”(hj¨h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´MKhj§ubhÌ)�”}”(hŒÎThe inode is not marked as dirty after this operation. The rationale is that for "simple" filesystems, the struct inode is the inode storage. The caller is free to mark the inode dirty afterwards if needed.”h]”hŒÒThe inode is not marked as dirty after this operation. The rationale is that for “simpleâ€� filesystems, the struct inode is the inode storage. The caller is free to mark the inode dirty afterwards if needed.”…”�”}”(hjK¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´MQhj§ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œnotify_change (C function)”Œc.notify_change”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ…int notify_change (const struct mnt_idmap *idmap, struct dentry *dentry, struct iattr *attr, struct delegated_inode *delegated_inode)”h]”j)�”}”(hŒ„int notify_change(const struct mnt_idmap *idmap, struct dentry *dentry, struct iattr *attr, struct delegated_inode *delegated_inode)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjz¨h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjv¨h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´M‘ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰¨h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjv¨h²hh³jˆ¨h´M‘ubjC)�”}”(hŒ notify_change”h]”jI)�”}”(hŒ notify_change”h]”hŒ notify_change”…”�”}”(hj›¨h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj—¨ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjv¨h²hh³jˆ¨h´M‘ubj=)�”}”(hŒs(const struct mnt_idmap *idmap, struct dentry *dentry, struct iattr *attr, struct delegated_inode *delegated_inode)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj·¨h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj³¨ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjĨh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj³¨ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÒ¨h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj³¨ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjߨh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj³¨ubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hjð¨h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjí¨ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jò¨Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj�¨sbŒc.notify_change”†”asbuh1hhj³¨ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj³¨ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj³¨ubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hj+©h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj³¨ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¯¨ubjC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjD©h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj@©ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ©h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj@©ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjb©h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj_©ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jd©Œmodname”NŒ classname”Njj )�”}”j ]”j ©Œc.notify_change”†”asbuh1hhj@©ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€©h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj@©ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjŽ©h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj@©ubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj›©h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj@©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¯¨ubjC)�”}”(hŒstruct iattr *attr”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj´©h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj°©ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁ©h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj°©ubh)�”}”(hhh]”jI)�”}”(hŒiattr”h]”hŒiattr”…”�”}”(hjÒ©h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÏ©ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÔ©Œmodname”NŒ classname”Njj )�”}”j ]”j ©Œc.notify_change”†”asbuh1hhj°©ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð©h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj°©ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjþ©h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj°©ubjI)�”}”(hŒattr”h]”hŒattr”…”�”}”(hj ªh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj°©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¯¨ubjC)�”}”(hŒ'struct delegated_inode *delegated_inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj$ªh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj ªubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1ªh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ªubh)�”}”(hhh]”jI)�”}”(hŒdelegated_inode”h]”hŒdelegated_inode”…”�”}”(hjBªh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj?ªubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jDªŒmodname”NŒ classname”Njj )�”}”j ]”j ©Œc.notify_change”†”asbuh1hhj ªubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`ªh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ªubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjnªh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ªubjI)�”}”(hŒdelegated_inode”h]”hŒdelegated_inode”…”�”}”(hj{ªh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¯¨ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjv¨h²hh³jˆ¨h´M‘ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjr¨h²hh³jˆ¨h´M‘ubah}”(h]”jm¨ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jˆ¨h´M‘hjo¨h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ(modify attributes of a filesystem object”h]”hŒ(modify attributes of a filesystem object”…”�”}”(hj¥ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´M‘hj¢ªh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjo¨h²hh³jˆ¨h´M‘ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j½ªjšj½ªj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ``struct dentry *dentry`` object affected ``struct iattr *attr`` new attributes ``struct delegated_inode *delegated_inode`` returns inode, if the inode is delegated **Description** The caller must hold the i_rwsem exclusively on the affected object. If notify_change discovers a delegation in need of breaking, it will return -EWOULDBLOCK and return a reference to the inode in delegated_inode. The caller should then break the delegation and retry. Because breaking a delegation may take a long time, the caller should drop the i_rwsem before doing so. Alternatively, a caller may pass NULL for delegated_inode. This may be appropriate for callers that expect the underlying filesystem not to be NFS exported. Also, passing NULL is fine for callers holding the file open for write, as there can be no conflicting delegation in that case. If the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through **idmap**. This function will then take care to map the inode according to **idmap** before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass **nop_mnt_idmap**.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjǪh]”hŒ Parameters”…”�”}”(hjɪh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjŪubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´M•hjÁªubj¿)�”}”(hhh]”(jÄ)�”}”(hŒN``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjæªh]”hŒconst struct mnt_idmap *idmap”…”�”}”(hjèªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjäªubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´M’hjàªubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+idmap of the mount the inode was found from”h]”hŒ+idmap of the mount the inode was found from”…”�”}”(hjÿªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jûªh´M’hjüªubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjàªubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jûªh´M’hjݪubjÄ)�”}”(hŒ*``struct dentry *dentry`` object affected ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hj«h]”hŒstruct dentry *dentry”…”�”}”(hj!«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´M“hj«ubjæ)�”}”(hhh]”hÌ)�”}”(hŒobject affected”h]”hŒobject affected”…”�”}”(hj8«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j4«h´M“hj5«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j4«h´M“hjݪubjÄ)�”}”(hŒ&``struct iattr *attr`` new attributes ”h]”(jÊ)�”}”(hŒ``struct iattr *attr``”h]”jÐ)�”}”(hjX«h]”hŒstruct iattr *attr”…”�”}”(hjZ«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjV«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´M”hjR«ubjæ)�”}”(hhh]”hÌ)�”}”(hŒnew attributes”h]”hŒnew attributes”…”�”}”(hjq«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jm«h´M”hjn«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjR«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jm«h´M”hjݪubjÄ)�”}”(hŒU``struct delegated_inode *delegated_inode`` returns inode, if the inode is delegated ”h]”(jÊ)�”}”(hŒ+``struct delegated_inode *delegated_inode``”h]”jÐ)�”}”(hj‘«h]”hŒ'struct delegated_inode *delegated_inode”…”�”}”(hj“«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj�«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´M•hj‹«ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(returns inode, if the inode is delegated”h]”hŒ(returns inode, if the inode is delegated”…”�”}”(hjª«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¦«h´M•hj§«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj‹«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¦«h´M•hjݪubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÁªubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÌ«h]”hŒ Description”…”�”}”(hjΫh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÊ«ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´M—hjÁªubhÌ)�”}”(hŒDThe caller must hold the i_rwsem exclusively on the affected object.”h]”hŒDThe caller must hold the i_rwsem exclusively on the affected object.”…”�”}”(hjâ«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´M–hjÁªubhÌ)�”}”(hX1If notify_change discovers a delegation in need of breaking, it will return -EWOULDBLOCK and return a reference to the inode in delegated_inode. The caller should then break the delegation and retry. Because breaking a delegation may take a long time, the caller should drop the i_rwsem before doing so.”h]”hX1If notify_change discovers a delegation in need of breaking, it will return -EWOULDBLOCK and return a reference to the inode in delegated_inode. The caller should then break the delegation and retry. Because breaking a delegation may take a long time, the caller should drop the i_rwsem before doing so.”…”�”}”(hjñ«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´M˜hjÁªubhÌ)�”}”(hXAlternatively, a caller may pass NULL for delegated_inode. This may be appropriate for callers that expect the underlying filesystem not to be NFS exported. Also, passing NULL is fine for callers holding the file open for write, as there can be no conflicting delegation in that case.”h]”hXAlternatively, a caller may pass NULL for delegated_inode. This may be appropriate for callers that expect the underlying filesystem not to be NFS exported. Also, passing NULL is fine for callers holding the file open for write, as there can be no conflicting delegation in that case.”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´MžhjÁªubhÌ)�”}”(hXLIf the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through **idmap**. This function will then take care to map the inode according to **idmap** before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass **nop_mnt_idmap**.”h]”(hŒgIf the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through ”…”�”}”(hj¬h²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¬ubhŒB. This function will then take care to map the inode according to ”…”�”}”(hj¬h²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hj)¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¬ubhŒ before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass ”…”�”}”(hj¬h²hh³Nh´Nubj©)�”}”(hŒ**nop_mnt_idmap**”h]”hŒ nop_mnt_idmap”…”�”}”(hj;¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¬ubhŒ.”…”�”}”(hj¬h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´M¤hjÁªubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_path (C function)”Œc.d_path”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ>char * d_path (const struct path *path, char *buf, int buflen)”h]”j)�”}”(hŒah"]”h$]”h&]”uh1j1hjp¬h²hh³j‚¬h´Kúubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj‘¬h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjp¬h²hh³j‚¬h´KúubjC)�”}”(hŒd_path”h]”jI)�”}”(hŒd_path”h]”hŒd_path”…”�”•}”(hj¢¬h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjž¬ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjp¬h²hh³j‚¬h´Kúubj=)�”}”(hŒ0(const struct path *path, char *buf, int buflen)”h]”(jC)�”}”(hŒconst struct path *path”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj¾¬h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjº¬ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˬh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjº¬ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÙ¬h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjº¬ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ¬h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjº¬ubh)�”}”(hhh]”jI)�”}”(hŒpath”h]”hŒpath”…”�”}”(hj÷¬h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjô¬ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jù¬Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj¤¬sbŒc.d_path”†”asbuh1hhjº¬ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjº¬ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj%­h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjº¬ubjI)�”}”(hŒpath”h]”hŒpath”…”�”}”(hj2­h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjº¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¶¬ubjC)�”}”(hŒ char *buf”h]”(j�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjK­h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjG­ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY­h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjG­ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjg­h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjG­ubjI)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjt­h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjG­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¶¬ubjC)�”}”(hŒ int buflen”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj�­h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj‰­ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›­h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‰­ubjI)�”}”(hŒbuflen”h]”hŒbuflen”…”�”}”(hj©­h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‰­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¶¬ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjp¬h²hh³j‚¬h´Kúubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjl¬h²hh³j‚¬h´Kúubah}”(h]”jg¬ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j‚¬h´Kúhji¬h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒreturn the path of a dentry”h]”hŒreturn the path of a dentry”…”�”}”(hjÓ­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:80: ./fs/d_path.c”h´KúhjЭh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhji¬h²hh³j‚¬h´Kúubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jë­jšjë­j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXK**Parameters** ``const struct path *path`` path to report ``char *buf`` buffer to return value in ``int buflen`` buffer length **Description** Convert a dentry into an ASCII path name. If the entry has been deleted the string " (deleted)" is appended. Note that this is ambiguous. Returns a pointer into the buffer or an error code if the path was too long. Note: Callers should use the returned pointer, not the passed in buffer, to use the name! The implementation often starts at an offset into the buffer, and may leave 0 bytes at the start. "buflen" should be positive.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjõ­h]”hŒ Parameters”…”�”}”(hj÷­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjó­ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:80: ./fs/d_path.c”h´Kþhjï­ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ+``const struct path *path`` path to report ”h]”(jÊ)�”}”(hŒ``const struct path *path``”h]”jÐ)�”}”(hj®h]”hŒconst struct path *path”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:80: ./fs/d_path.c”h´Kûhj®ubjæ)�”}”(hhh]”hÌ)�”}”(hŒpath to report”h]”hŒpath to report”…”�”}”(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Œ(``char *buf`` buffer to return value in ”h]”(jÊ)�”}”(hŒ ``char *buf``”h]”jÐ)�”}”(hjM®h]”hŒ char *buf”…”�”}”(hjO®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjK®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:80: ./fs/d_path.c”h´KühjG®ubjæ)�”}”(hhh]”hÌ)�”}”(hŒbuffer to return value in”h]”hŒbuffer to return value in”…”�”}”(hjf®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jb®h´Kühjc®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjG®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jb®h´Kühj ®ubjÄ)�”}”(hŒ``int buflen`` buffer length ”h]”(jÊ)�”}”(hŒ``int buflen``”h]”jÐ)�”}”(hj†®h]”hŒ int buflen”…”�”}”(hjˆ®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj„®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:80: ./fs/d_path.c”h´Kýhj€®ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ buffer length”h]”hŒ buffer length”…”�”}”(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 ®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjï­ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÁ®h]”hŒ Description”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¿®ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:80: ./fs/d_path.c”h´Kÿhjï­ubhÌ)�”}”(hŒ‰Convert a dentry into an ASCII path name. If the entry has been deleted the string " (deleted)" is appended. Note that this is ambiguous.”h]”hŒ�Convert a dentry into an ASCII path name. If the entry has been deleted the string “ (deleted)â€� is appended. Note that this is ambiguous.”…”�”}”(hj×®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:80: ./fs/d_path.c”h´Kþhjï­ubhÌ)�”}”(hXReturns a pointer into the buffer or an error code if the path was too long. Note: Callers should use the returned pointer, not the passed in buffer, to use the name! The implementation often starts at an offset into the buffer, and may leave 0 bytes at the start.”h]”hXReturns a pointer into the buffer or an error code if the path was too long. Note: Callers should use the returned pointer, not the passed in buffer, to use the name! The implementation often starts at an offset into the buffer, and may leave 0 bytes at the start.”…”�”}”(hjæ®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:80: ./fs/d_path.c”h´Mhjï­ubhÌ)�”}”(hŒ"buflen" should be positive.”h]”hŒ “buflenâ€� should be positive.”…”�”}”(hjõ®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:80: ./fs/d_path.c”h´Mhjï­ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ"dax_folio_reset_order (C function)”Œc.dax_folio_reset_order”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ/int dax_folio_reset_order (struct folio *folio)”h]”j)�”}”(hŒ.int dax_folio_reset_order(struct folio *folio)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj$¯h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj ¯h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´M}ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3¯h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ¯h²hh³j2¯h´M}ubjC)�”}”(hŒdax_folio_reset_order”h]”jI)�”}”(hŒdax_folio_reset_order”h]”hŒdax_folio_reset_order”…”�”}”(hjE¯h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjA¯ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj ¯h²hh³j2¯h´M}ubj=)�”}”(hŒ(struct folio *folio)”h]”jC)�”}”(hŒstruct folio *folio”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hja¯h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj]¯ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn¯h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj]¯ubh)�”}”(hhh]”jI)�”}”(hŒfolio”h]”hŒfolio”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj|¯ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j�¯Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjG¯sbŒc.dax_folio_reset_order”†”asbuh1hhj]¯ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ¯h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj]¯ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj­¯h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj]¯ubjI)�”}”(hŒfolio”h]”hŒfolio”…”�”}”(hjº¯h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj]¯ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjY¯ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj ¯h²hh³j2¯h´M}ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj¯h²hh³j2¯h´M}ubah}”(h]”j¯ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j2¯h´M}hj¯h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ+Reset a compound DAX folio to order-0 pages”h]”hŒ+Reset a compound DAX folio to order-0 pages”…”�”}”(hjä¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´M}hjá¯h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¯h²hh³j2¯h´M}ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jü¯jšjü¯j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hŒý**Parameters** ``struct folio *folio`` The folio to reset **Description** Splits a compound folio back into individual order-0 pages, clearing compound state and restoring pgmap pointers. **Return** the original folio order (0 if already order-0)”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj°h]”hŒ Parameters”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´M�hj°ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ+``struct folio *folio`` The folio to reset ”h]”(jÊ)�”}”(hŒ``struct folio *folio``”h]”jÐ)�”}”(hj%°h]”hŒstruct folio *folio”…”�”}”(hj'°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj#°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´M~hj°ubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe folio to reset”h]”hŒThe folio to reset”…”�”}”(hj>°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j:°h´M~hj;°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j:°h´M~hj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj°ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj`°h]”hŒ Description”…”�”}”(hjb°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj^°ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´M€hj°ubhÌ)�”}”(hŒqSplits a compound folio back into individual order-0 pages, clearing compound state and restoring pgmap pointers.”h]”hŒqSplits a compound folio back into individual order-0 pages, clearing compound state and restoring pgmap pointers.”…”�”}”(hjv°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´Mhj°ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj‡°h]”hŒReturn”…”�”}”(hj‰°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj…°ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´M‚hj°ubhÌ)�”}”(hŒ/the original folio order (0 if already order-0)”h]”hŒ/the original folio order (0 if already order-0)”…”�”}”(hj�°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´Mƒhj°ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdax_iomap_rw (C function)”Œc.dax_iomap_rw”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ]ssize_t dax_iomap_rw (struct kiocb *iocb, struct iov_iter *iter, const struct iomap_ops *ops)”h]”j)�”}”(hŒ\ssize_t dax_iomap_rw(struct kiocb *iocb, struct iov_iter *iter, const struct iomap_ops *ops)”h]”(h)�”}”(hhh]”jI)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hjϰh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj̰ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jѰŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒ dax_iomap_rw”sbŒc.dax_iomap_rw”†”asbuh1hhjȰh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´M¿ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ°h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjȰh²hh³jð°h´M¿ubjC)�”}”(hŒ dax_iomap_rw”h]”jI)�”}”(hjí°h]”hŒ dax_iomap_rw”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÿ°ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjȰh²hh³jð°h´M¿ubj=)�”}”(hŒH(struct kiocb *iocb, struct iov_iter *iter, const struct iomap_ops *ops)”h]”(jC)�”}”(hŒstruct kiocb *iocb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj±ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+±h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj±ubh)�”}”(hhh]”jI)�”}”(hŒkiocb”h]”hŒkiocb”…”�”}”(hj<±h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj9±ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j>±Œmodname”NŒ classname”Njj )�”}”j ]”jë°Œc.dax_iomap_rw”†”asbuh1hhj±ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ±h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj±ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjh±h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj±ubjI)�”}”(hŒiocb”h]”hŒiocb”…”�”}”(hju±h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj±ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj±ubjC)�”}”(hŒstruct iov_iter *iter”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjޱh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjбubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›±h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjбubh)�”}”(hhh]”jI)�”}”(hŒiov_iter”h]”hŒiov_iter”…”�”}”(hj¬±h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj©±ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j®±Œmodname”NŒ classname”Njj )�”}”j ]”jë°Œc.dax_iomap_rw”†”asbuh1hhjбubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjʱh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjбubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjرh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjбubjI)�”}”(hŒiter”h]”hŒiter”…”�”}”(hjå±h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjбubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj±ubjC)�”}”(hŒconst struct iomap_ops *ops”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjþ±h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjú±ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ²h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjú±ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjú±ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&²h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjú±ubh)�”}”(hhh]”jI)�”}”(hŒ iomap_ops”h]”hŒ iomap_ops”…”�”}”(hj7²h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj4²ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j9²Œmodname”NŒ classname”Njj )�”}”j ]”jë°Œc.dax_iomap_rw”†”asbuh1hhjú±ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU²h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjú±ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjc²h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjú±ubjI)�”}”(hŒops”h]”hŒops”…”�”}”(hjp²h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjú±ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj±ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjȰh²hh³jð°h´M¿ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjİh²hh³jð°h´M¿ubah}”(h]”j¿°ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jð°h´M¿hjÁ°h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒPerform I/O to a DAX file”h]”hŒPerform I/O to a DAX file”…”�”}”(hjš²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´M¿hj—²h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÁ°h²hh³jð°h´M¿ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j²²jšj²²j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX¬**Parameters** ``struct kiocb *iocb`` The control block for this I/O ``struct iov_iter *iter`` The addresses to do I/O from or to ``const struct iomap_ops *ops`` iomap ops passed from the file system **Description** This function performs read and write operations to directly mapped persistent memory. The callers needs to take care of read/write exclusion and evicting any page cache pages in the region under I/O.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj¼²h]”hŒ Parameters”…”�”}”(hj¾²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjº²ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´MÃhj¶²ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ6``struct kiocb *iocb`` The control block for this I/O ”h]”(jÊ)�”}”(hŒ``struct kiocb *iocb``”h]”jÐ)�”}”(hjÛ²h]”hŒstruct kiocb *iocb”…”�”}”(hjݲh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÙ²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´MÀhjÕ²ubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe control block for this I/O”h]”hŒThe control block for this I/O”…”�”}”(hjô²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jð²h´MÀhjñ²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÕ²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jð²h´MÀhjÒ²ubjÄ)�”}”(hŒ=``struct iov_iter *iter`` The addresses to do I/O from or to ”h]”(jÊ)�”}”(hŒ``struct iov_iter *iter``”h]”jÐ)�”}”(hj³h]”hŒstruct iov_iter *iter”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´MÁhj³ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ"The addresses to do I/O from or to”h]”hŒ"The addresses to do I/O from or to”…”�”}”(hj-³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j)³h´MÁhj*³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j)³h´MÁhjÒ²ubjÄ)�”}”(hŒF``const struct iomap_ops *ops`` iomap ops passed from the file system ”h]”(jÊ)�”}”(hŒ``const struct iomap_ops *ops``”h]”jÐ)�”}”(hjM³h]”hŒconst struct iomap_ops *ops”…”�”}”(hjO³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjK³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´MÂhjG³ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ%iomap ops passed from the file system”h]”hŒ%iomap ops passed from the file system”…”�”}”(hjf³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jb³h´MÂhjc³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjG³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jb³h´MÂhjÒ²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj¶²ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjˆ³h]”hŒ Description”…”�”}”(hjгh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj†³ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´MÄhj¶²ubhÌ)�”}”(hŒÉThis function performs read and write operations to directly mapped persistent memory. The callers needs to take care of read/write exclusion and evicting any page cache pages in the region under I/O.”h]”hŒÉThis function performs read and write operations to directly mapped persistent memory. The callers needs to take care of read/write exclusion and evicting any page cache pages in the region under I/O.”…”�”}”(hjž³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´MÃhj¶²ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdax_iomap_fault (C function)”Œc.dax_iomap_fault”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒˆvm_fault_t dax_iomap_fault (struct vm_fault *vmf, unsigned int order, unsigned long *pfnp, int *iomap_errp, const struct iomap_ops *ops)”h]”j)�”}”(hŒ‡vm_fault_t dax_iomap_fault(struct vm_fault *vmf, unsigned int order, unsigned long *pfnp, int *iomap_errp, const struct iomap_ops *ops)”h]”(h)�”}”(hhh]”jI)�”}”(hŒ vm_fault_t”h]”hŒ vm_fault_t”…”�”}”(hjгh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjͳubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÒ³Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒdax_iomap_fault”sbŒc.dax_iomap_fault”†”asbuh1hhjɳh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´M)ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjò³h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjɳh²hh³jñ³h´M)ubjC)�”}”(hŒdax_iomap_fault”h]”jI)�”}”(hjî³h]”hŒdax_iomap_fault”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj´ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjɳh²hh³jñ³h´M)ubj=)�”}”(hŒm(struct vm_fault *vmf, unsigned int order, unsigned long *pfnp, int *iomap_errp, const struct iomap_ops *ops)”h]”(jC)�”}”(hŒstruct vm_fault *vmf”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj´ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,´h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj´ubh)�”}”(hhh]”jI)�”}”(hŒvm_fault”h]”hŒvm_fault”…”�”}”(hj=´h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj:´ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j?´Œmodname”NŒ classname”Njj )�”}”j ]”j쳌c.dax_iomap_fault”†”asbuh1hhj´ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[´h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj´ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hji´h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj´ubjI)�”}”(hŒvmf”h]”hŒvmf”…”�”}”(hjv´h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj´ubjC)�”}”(hŒunsigned int order”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj�´h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj‹´ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�´h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‹´ubj�)�”}”(hŒint”h]”hŒint”…”�”}”(hj«´h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj‹´ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹´h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‹´ubjI)�”}”(hŒorder”h]”hŒorder”…”�”}”(hjÇ´h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‹´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj´ubjC)�”}”(hŒunsigned long *pfnp”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjà´h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÜ´ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjî´h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÜ´ubj�)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjü´h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÜ´ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj µh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÜ´ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÜ´ubjI)�”}”(hŒpfnp”h]”hŒpfnp”…”�”}”(hj%µh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÜ´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj´ubjC)�”}”(hŒint *iomap_errp”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj>µh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj:µubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLµh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj:µubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjZµh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj:µubjI)�”}”(hŒ iomap_errp”h]”hŒ iomap_errp”…”�”}”(hjgµh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj:µubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj´ubjC)�”}”(hŒconst struct iomap_ops *ops”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj€µh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj|µubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�µh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj|µubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj›µh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj|µubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨µh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj|µubh)�”}”(hhh]”jI)�”}”(hŒ iomap_ops”h]”hŒ iomap_ops”…”�”}”(hj¹µh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¶µubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j»µŒmodname”NŒ classname”Njj )�”}”j ]”j쳌c.dax_iomap_fault”†”asbuh1hhj|µubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×µh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj|µubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjåµh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj|µubjI)�”}”(hŒops”h]”hŒops”…”�”}”(hjòµh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj|µubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj´ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjɳh²hh³jñ³h´M)ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjųh²hh³jñ³h´M)ubah}”(h]”jÀ³ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jñ³h´M)hj³h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ!handle a page fault on a DAX file”h]”hŒ!handle a page fault on a DAX file”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´M)hj¶h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj³h²hh³jñ³h´M)ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j4¶jšj4¶j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXH**Parameters** ``struct vm_fault *vmf`` The description of the fault ``unsigned int order`` Order of the page to fault in ``unsigned long *pfnp`` PFN to insert for synchronous faults if fsync is required ``int *iomap_errp`` Storage for detailed error code in case of error ``const struct iomap_ops *ops`` Iomap ops passed from the file system **Description** When a page fault occurs, filesystems may call this helper in their fault handler for DAX files. dax_iomap_fault() assumes the caller has done all the necessary locking for page fault to proceed successfully.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj>¶h]”hŒ Parameters”…”�”}”(hj@¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj<¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´M-hj8¶ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ6``struct vm_fault *vmf`` The description of the fault ”h]”(jÊ)�”}”(hŒ``struct vm_fault *vmf``”h]”jÐ)�”}”(hj]¶h]”hŒstruct vm_fault *vmf”…”�”}”(hj_¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj[¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´M*hjW¶ubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe description of the fault”h]”hŒThe description of the fault”…”�”}”(hjv¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jr¶h´M*hjs¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjW¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jr¶h´M*hjT¶ubjÄ)�”}”(hŒ5``unsigned int order`` Order of the page to fault in ”h]”(jÊ)�”}”(hŒ``unsigned int order``”h]”jÐ)�”}”(hj–¶h]”hŒunsigned int order”…”�”}”(hj˜¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj”¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´M+hj�¶ubjæ)�”}”(hhh]”hÌ)�”}”(hŒOrder of the page to fault in”h]”hŒOrder of the page to fault in”…”�”}”(hj¯¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j«¶h´M+hj¬¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj�¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j«¶h´M+hjT¶ubjÄ)�”}”(hŒR``unsigned long *pfnp`` PFN to insert for synchronous faults if fsync is required ”h]”(jÊ)�”}”(hŒ``unsigned long *pfnp``”h]”jÐ)�”}”(hj϶h]”hŒunsigned long *pfnp”…”�”}”(hjѶh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjͶubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´M,hjɶubjæ)�”}”(hhh]”hÌ)�”}”(hŒ9PFN to insert for synchronous faults if fsync is required”h]”hŒ9PFN to insert for synchronous faults if fsync is required”…”�”}”(hjè¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jä¶h´M,hjå¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjɶubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jä¶h´M,hjT¶ubjÄ)�”}”(hŒE``int *iomap_errp`` Storage for detailed error code in case of error ”h]”(jÊ)�”}”(hŒ``int *iomap_errp``”h]”jÐ)�”}”(hj·h]”hŒint *iomap_errp”…”�”}”(hj ·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´M-hj·ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ0Storage for detailed error code in case of error”h]”hŒ0Storage for detailed error code in case of error”…”�”}”(hj!·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j·h´M-hj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j·h´M-hjT¶ubjÄ)�”}”(hŒF``const struct iomap_ops *ops`` Iomap ops passed from the file system ”h]”(jÊ)�”}”(hŒ``const struct iomap_ops *ops``”h]”jÐ)�”}”(hjA·h]”hŒconst struct iomap_ops *ops”…”�”}”(hjC·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj?·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´M.hj;·ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ%Iomap ops passed from the file system”h]”hŒ%Iomap ops passed from the file system”…”�”}”(hjZ·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jV·h´M.hjW·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj;·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jV·h´M.hjT¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj8¶ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj|·h]”hŒ Description”…”�”}”(hj~·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjz·ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´M0hj8¶ubhÌ)�”}”(hŒÐWhen a page fault occurs, filesystems may call this helper in their fault handler for DAX files. dax_iomap_fault() assumes the caller has done all the necessary locking for page fault to proceed successfully.”h]”hŒÐWhen a page fault occurs, filesystems may call this helper in their fault handler for DAX files. dax_iomap_fault() assumes the caller has done all the necessary locking for page fault to proceed successfully.”…”�”}”(hj’·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´M/hj8¶ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ"dax_finish_sync_fault (C function)”Œc.dax_finish_sync_fault”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ^vm_fault_t dax_finish_sync_fault (struct vm_fault *vmf, unsigned int order, unsigned long pfn)”h]”j)�”}”(hŒ]vm_fault_t dax_finish_sync_fault(struct vm_fault *vmf, unsigned int order, unsigned long pfn)”h]”(h)�”}”(hhh]”jI)�”}”(hŒ vm_fault_t”h]”hŒ vm_fault_t”…”�”}”(hjÄ·h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÁ·ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÆ·Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒdax_finish_sync_fault”sbŒc.dax_finish_sync_fault”†”asbuh1hhj½·h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´Msubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ·h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj½·h²hh³jå·h´MsubjC)�”}”(hŒdax_finish_sync_fault”h]”jI)�”}”(hjâ·h]”hŒdax_finish_sync_fault”…”�”}”(hjø·h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjô·ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj½·h²hh³jå·h´Msubj=)�”}”(hŒ=(struct vm_fault *vmf, unsigned int order, unsigned long pfn)”h]”(jC)�”}”(hŒstruct vm_fault *vmf”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¸ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ¸h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¸ubh)�”}”(hhh]”jI)�”}”(hŒvm_fault”h]”hŒvm_fault”…”�”}”(hj1¸h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj.¸ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j3¸Œmodname”NŒ classname”Njj )�”}”j ]”jà·Œc.dax_finish_sync_fault”†”asbuh1hhj¸ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO¸h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¸ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj]¸h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¸ubjI)�”}”(hŒvmf”h]”hŒvmf”…”�”}”(hjj¸h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¸ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj ¸ubjC)�”}”(hŒunsigned int order”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjƒ¸h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¸ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘¸h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¸ubj�)�”}”(hŒint”h]”hŒint”…”�”}”(hjŸ¸h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¸ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­¸h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¸ubjI)�”}”(hŒorder”h]”hŒorder”…”�”}”(hj»¸h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¸ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj ¸ubjC)�”}”(hŒunsigned long pfn”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÔ¸h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjиubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâ¸h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjиubj�)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjð¸h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjиubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ¸h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjиubjI)�”}”(hŒpfn”h]”hŒpfn”…”�”}”(hj ¹h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjиubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj ¸ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj½·h²hh³jå·h´Msubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj¹·h²hh³jå·h´Msubah}”(h]”j´·ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jå·h´Mshj¶·h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒfinish synchronous page fault”h]”hŒfinish synchronous page fault”…”�”}”(hj6¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´Mshj3¹h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¶·h²hh³jå·h´Msubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jN¹jšjN¹j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXW**Parameters** ``struct vm_fault *vmf`` The description of the fault ``unsigned int order`` Order of entry to be inserted ``unsigned long pfn`` PFN to insert **Description** This function ensures that the file range touched by the page fault is stored persistently on the media and handles inserting of appropriate page table entry.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjX¹h]”hŒ Parameters”…”�”}”(hjZ¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjV¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´MwhjR¹ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ6``struct vm_fault *vmf`` The description of the fault ”h]”(jÊ)�”}”(hŒ``struct vm_fault *vmf``”h]”jÐ)�”}”(hjw¹h]”hŒstruct vm_fault *vmf”…”�”}”(hjy¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhju¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´Mthjq¹ubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe description of the fault”h]”hŒThe description of the fault”…”�”}”(hj�¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jŒ¹h´Mthj�¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjq¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jŒ¹h´Mthjn¹ubjÄ)�”}”(hŒ5``unsigned int order`` Order of entry to be inserted ”h]”(jÊ)�”}”(hŒ``unsigned int order``”h]”jÐ)�”}”(hj°¹h]”hŒunsigned int order”…”�”}”(hj²¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj®¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´Muhjª¹ubjæ)�”}”(hhh]”hÌ)�”}”(hŒOrder of entry to be inserted”h]”hŒOrder of entry to be inserted”…”�”}”(hjɹh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jŹh´Muhjƹubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjª¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jŹh´Muhjn¹ubjÄ)�”}”(hŒ$``unsigned long pfn`` PFN to insert ”h]”(jÊ)�”}”(hŒ``unsigned long pfn``”h]”jÐ)�”}”(hjé¹h]”hŒunsigned long pfn”…”�”}”(hjë¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjç¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´Mvhjã¹ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ PFN to insert”h]”hŒ PFN to insert”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jþ¹h´Mvhjÿ¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjã¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jþ¹h´Mvhjn¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjR¹ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj$ºh]”hŒ Description”…”�”}”(hj&ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj"ºubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´MxhjR¹ubhÌ)�”}”(hŒžThis function ensures that the file range touched by the page fault is stored persistently on the media and handles inserting of appropriate page table entry.”h]”hŒžThis function ensures that the file range touched by the page fault is stored persistently on the media and handles inserting of appropriate page table entry.”…”�”}”(hj:ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´MwhjR¹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ$simple_rename_timestamp (C function)”Œc.simple_rename_timestamp”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ�void simple_rename_timestamp (struct inode *old_dir, struct dentry *old_dentry, struct inode *new_dir, struct dentry *new_dentry)”h]”j)�”}”(hŒ€void simple_rename_timestamp(struct inode *old_dir, struct dentry *old_dentry, struct inode *new_dir, struct dentry *new_dentry)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjiºh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjeºh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M9ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxºh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjeºh²hh³jwºh´M9ubjC)�”}”(hŒsimple_rename_timestamp”h]”jI)�”}”(hŒsimple_rename_timestamp”h]”hŒsimple_rename_timestamp”…”�”}”(hjŠºh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj†ºubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjeºh²hh³jwºh´M9ubj=)�”}”(hŒd(struct inode *old_dir, struct dentry *old_dentry, struct inode *new_dir, struct dentry *new_dentry)”h]”(jC)�”}”(hŒstruct inode *old_dir”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¦ºh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¢ºubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³ºh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¢ºubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjĺh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÁºubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jƺŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjŒºsbŒc.simple_rename_timestamp”†”asbuh1hhj¢ºubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäºh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¢ºubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjòºh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¢ºubjI)�”}”(hŒold_dir”h]”hŒold_dir”…”�”}”(hjÿºh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¢ºubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjžºubjC)�”}”(hŒstruct dentry *old_dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj»ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%»h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj»ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj6»h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj3»ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j8»Œmodname”NŒ classname”Njj )�”}”j ]”jຌc.simple_rename_timestamp”†”asbuh1hhj»ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT»h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj»ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjb»h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj»ubjI)�”}”(hŒ old_dentry”h]”hŒ old_dentry”…”�”}”(hjo»h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjžºubjC)�”}”(hŒstruct inode *new_dir”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjˆ»h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj„»ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•»h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj„»ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj¦»h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj£»ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¨»Œmodname”NŒ classname”Njj )�”}”j ]”jຌc.simple_rename_timestamp”†”asbuh1hhj„»ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄ»h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj„»ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÒ»h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj„»ubjI)�”}”(hŒnew_dir”h]”hŒnew_dir”…”�”}”(hjß»h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj„»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjžºubjC)�”}”(hŒstruct dentry *new_dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjø»h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjô»ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjô»ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¼ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¼Œmodname”NŒ classname”Njj )�”}”j ]”jຌc.simple_rename_timestamp”†”asbuh1hhjô»ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4¼h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjô»ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjB¼h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjô»ubjI)�”}”(hŒ new_dentry”h]”hŒ new_dentry”…”�”}”(hjO¼h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjô»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjžºubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjeºh²hh³jwºh´M9ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjaºh²hh³jwºh´M9ubah}”(h]”j\ºah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jwºh´M9hj^ºh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ.update the various inode timestamps for rename”h]”hŒ.update the various inode timestamps for rename”…”�”}”(hjy¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M9hjv¼h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj^ºh²hh³jwºh´M9ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j‘¼jšj‘¼j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX©**Parameters** ``struct inode *old_dir`` old parent directory ``struct dentry *old_dentry`` dentry that is being renamed ``struct inode *new_dir`` new parent directory ``struct dentry *new_dentry`` target for rename **Description** POSIX mandates that the old and new parent directories have their ctime and mtime updated, and that inodes of **old_dentry** and **new_dentry** (if any), have their ctime updated.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj›¼h]”hŒ Parameters”…”�”}”(hj�¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj™¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M=hj•¼ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ/``struct inode *old_dir`` old parent directory ”h]”(jÊ)�”}”(hŒ``struct inode *old_dir``”h]”jÐ)�”}”(hjº¼h]”hŒstruct inode *old_dir”…”�”}”(hj¼¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¸¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M:hj´¼ubjæ)�”}”(hhh]”hÌ)�”}”(hŒold parent directory”h]”hŒold parent directory”…”�”}”(hjÓ¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jϼh´M:hjмubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj´¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jϼh´M:hj±¼ubjÄ)�”}”(hŒ;``struct dentry *old_dentry`` dentry that is being renamed ”h]”(jÊ)�”}”(hŒ``struct dentry *old_dentry``”h]”jÐ)�”}”(hjó¼h]”hŒstruct dentry *old_dentry”…”�”}”(hjõ¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjñ¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M;hjí¼ubjæ)�”}”(hhh]”hÌ)�”}”(hŒdentry that is being renamed”h]”hŒdentry that is being renamed”…”�”}”(hj ½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j½h´M;hj ½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjí¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j½h´M;hj±¼ubjÄ)�”}”(hŒ/``struct inode *new_dir`` new parent directory ”h]”(jÊ)�”}”(hŒ``struct inode *new_dir``”h]”jÐ)�”}”(hj,½h]”hŒstruct inode *new_dir”…”�”}”(hj.½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj*½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M<hj&½ubjæ)�”}”(hhh]”hÌ)�”}”(hŒnew parent directory”h]”hŒnew parent directory”…”�”}”(hjE½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jA½h´M<hjB½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj&½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jA½h´M<hj±¼ubjÄ)�”}”(hŒ0``struct dentry *new_dentry`` target for rename ”h]”(jÊ)�”}”(hŒ``struct dentry *new_dentry``”h]”jÐ)�”}”(hje½h]”hŒstruct dentry *new_dentry”…”�”}”(hjg½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjc½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M=hj_½ubjæ)�”}”(hhh]”hÌ)�”}”(hŒtarget for rename”h]”hŒtarget for rename”…”�”}”(hj~½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jz½h´M=hj{½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj_½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jz½h´M=hj±¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj•¼ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj ½h]”hŒ Description”…”�”}”(hj¢½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjž½ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M?hj•¼ubhÌ)�”}”(hŒ³POSIX mandates that the old and new parent directories have their ctime and mtime updated, and that inodes of **old_dentry** and **new_dentry** (if any), have their ctime updated.”h]”(hŒnPOSIX mandates that the old and new parent directories have their ctime and mtime updated, and that inodes of ”…”�”}”(hj¶½h²hh³Nh´Nubj©)�”}”(hŒ**old_dentry**”h]”hŒ old_dentry”…”�”}”(hj¾½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¶½ubhŒ and ”…”�”}”(hj¶½h²hh³Nh´Nubj©)�”}”(hŒ**new_dentry**”h]”hŒ new_dentry”…”�”}”(hjнh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¶½ubhŒ$ (if any), have their ctime updated.”…”�”}”(hj¶½h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M>hj•¼ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œsimple_setattr (C function)”Œc.simple_setattr”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ^int simple_setattr (const struct mnt_idmap *idmap, struct dentry *dentry, struct iattr *iattr)”h]”j)�”}”(hŒ]int simple_setattr(const struct mnt_idmap *idmap, struct dentry *dentry, struct iattr *iattr)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj ¾h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¾h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M†ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¾h²hh³j¾h´M†ubjC)�”}”(hŒsimple_setattr”h]”jI)�”}”(hŒsimple_setattr”h]”hŒsimple_setattr”…”�”}”(hj*¾h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj&¾ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj¾h²hh³j¾h´M†ubj=)�”}”(hŒK(const struct mnt_idmap *idmap, struct dentry *dentry, struct iattr *iattr)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjF¾h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjB¾ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS¾h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjB¾ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hja¾h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjB¾ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn¾h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjB¾ubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj|¾ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j�¾Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj,¾sbŒc.simple_setattr”†”asbuh1hhjB¾ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ¾h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjB¾ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj­¾h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjB¾ubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hjº¾h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjB¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj>¾ubjC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÓ¾h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjϾubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà¾h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjϾubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjñ¾h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjî¾ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jó¾Œmodname”NŒ classname”Njj )�”}”j ]”j›¾Œc.simple_setattr”†”asbuh1hhjϾubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjϾubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjϾubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj*¿h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjϾubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj>¾ubjC)�”}”(hŒstruct iattr *iattr”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjC¿h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj?¿ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP¿h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj?¿ubh)�”}”(hhh]”jI)�”}”(hŒiattr”h]”hŒiattr”…”�”}”(hja¿h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj^¿ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jc¿Œmodname”NŒ classname”Njj )�”}”j ]”j›¾Œc.simple_setattr”†”asbuh1hhj?¿ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj?¿ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj�¿h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj?¿ubjI)�”}”(hŒiattr”h]”hŒiattr”…”�”}”(hjš¿h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj?¿ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj>¾ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj¾h²hh³j¾h´M†ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj¾h²hh³j¾h´M†ubah}”(h]”jü½ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j¾h´M†hjþ½h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒsetattr for simple filesystem”h]”hŒsetattr for simple filesystem”…”�”}”(hjÄ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M†hjÁ¿h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjþ½h²hh³j¾h´M†ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÜ¿jšjÜ¿j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX**Parameters** ``const struct mnt_idmap *idmap`` idmap of the target mount ``struct dentry *dentry`` dentry ``struct iattr *iattr`` iattr structure **Description** Returns 0 on success, -error on failure. simple_setattr is a simple ->setattr implementation without a proper implementation of size changes. It can either be used for in-memory filesystems or special files on simple regular filesystems. Anything that needs to change on-disk or wire state on size changes needs its own setattr method.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjæ¿h]”hŒ Parameters”…”�”}”(hjè¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjä¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MŠhjà¿ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ<``const struct mnt_idmap *idmap`` idmap of the target mount ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjÀh]”hŒconst struct mnt_idmap *idmap”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M‡hjÿ¿ubjæ)�”}”(hhh]”hÌ)�”}”(hŒidmap of the target mount”h]”hŒidmap of the target mount”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÀh´M‡hjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÿ¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÀh´M‡hjü¿ubjÄ)�”}”(hŒ!``struct dentry *dentry`` dentry ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hj>Àh]”hŒstruct dentry *dentry”…”�”}”(hj@Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj<Àubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Mˆhj8Àubjæ)�”}”(hhh]”hÌ)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjWÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jSÀh´MˆhjTÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj8Àubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jSÀh´Mˆhjü¿ubjÄ)�”}”(hŒ(``struct iattr *iattr`` iattr structure ”h]”(jÊ)�”}”(hŒ``struct iattr *iattr``”h]”jÐ)�”}”(hjwÀh]”hŒstruct iattr *iattr”…”�”}”(hjyÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjuÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M‰hjqÀubjæ)�”}”(hhh]”hÌ)�”}”(hŒiattr structure”h]”hŒiattr structure”…”�”}”(hj�Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jŒÀh´M‰hj�Àubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjqÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jŒÀh´M‰hjü¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjà¿ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj²Àh]”hŒ Description”…”�”}”(hj´Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj°Àubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M‹hjà¿ubhÌ)�”}”(hŒ(Returns 0 on success, -error on failure.”h]”hŒ(Returns 0 on success, -error on failure.”…”�”}”(hjÈÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MŠhjà¿ubhÌ)�”}”(hŒdsimple_setattr is a simple ->setattr implementation without a proper implementation of size changes.”h]”hŒdsimple_setattr is a simple ->setattr implementation without a proper implementation of size changes.”…”�”}”(hj×Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MŒhjà¿ubhÌ)�”}”(hŒÂIt can either be used for in-memory filesystems or special files on simple regular filesystems. Anything that needs to change on-disk or wire state on size changes needs its own setattr method.”h]”hŒÂIt can either be used for in-memory filesystems or special files on simple regular filesystems. Anything that needs to change on-disk or wire state on size changes needs its own setattr method.”…”�”}”(hjæÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M�hjà¿ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ$simple_read_from_buffer (C function)”Œc.simple_read_from_buffer”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒqssize_t simple_read_from_buffer (void __user *to, size_t count, loff_t *ppos, const void *from, size_t available)”h]”j)�”}”(hŒpssize_t simple_read_from_buffer(void __user *to, size_t count, loff_t *ppos, const void *from, size_t available)”h]”(h)�”}”(hhh]”jI)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÁubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÁŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒsimple_read_from_buffer”sbŒc.simple_read_from_buffer”†”asbuh1hhjÁh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Mlubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:Áh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÁh²hh³j9Áh´MlubjC)�”}”(hŒsimple_read_from_buffer”h]”jI)�”}”(hj6Áh]”hŒsimple_read_from_buffer”…”�”}”(hjLÁh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjHÁubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÁh²hh³j9Áh´Mlubj=)�”}”(hŒQ(void __user *to, size_t count, loff_t *ppos, const void *from, size_t available)”h]”(jC)�”}”(hŒvoid __user *to”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjgÁh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjcÁubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuÁh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjcÁubhŒ__user”…”�”}”(hjcÁh²hh³Nh´Nubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡Áh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjcÁubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj•Áh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjcÁubjI)�”}”(hŒto”h]”hŒto”…”�”}”(hj¢Áh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjcÁubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj_ÁubjC)�”}”(hŒ size_t count”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj¾Áh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj»Áubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÀÁŒmodname”NŒ classname”Njj )�”}”j ]”j4ÁŒc.simple_read_from_buffer”†”asbuh1hhj·Áubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜÁh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj·ÁubjI)�”}”(hŒcount”h]”hŒcount”…”�”}”(hjêÁh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj·Áubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj_ÁubjC)�”}”(hŒ loff_t *ppos”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÂubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÂŒmodname”NŒ classname”Njj )�”}”j ]”j4ÁŒc.simple_read_from_buffer”†”asbuh1hhjÿÁubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$Âh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÿÁubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj2Âh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÿÁubjI)�”}”(hŒppos”h]”hŒppos”…”�”}”(hj?Âh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÿÁubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj_ÁubjC)�”}”(hŒconst void *from”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjXÂh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjTÂubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeÂh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjTÂubj�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjsÂh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjTÂubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Âh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjTÂubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj�Âh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjTÂubjI)�”}”(hŒfrom”h]”hŒfrom”…”�”}”(hjœÂh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjTÂubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj_ÁubjC)�”}”(hŒsize_t available”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj¸Âh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjµÂubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jºÂŒmodname”NŒ classname”Njj )�”}”j ]”j4ÁŒc.simple_read_from_buffer”†”asbuh1hhj±Âubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖÂh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj±ÂubjI)�”}”(hŒ available”h]”hŒ available”…”�”}”(hjäÂh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj±Âubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj_Áubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÁh²hh³j9Áh´Mlubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj Áh²hh³j9Áh´Mlubah}”(h]”jÁah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j9Áh´Mlhj Áh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ'copy data from the buffer to user space”h]”hŒ'copy data from the buffer to user space”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Mlhj Ãh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj Áh²hh³j9Áh´Mlubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j&Ãjšj&Ãj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXS**Parameters** ``void __user *to`` the user space buffer to read to ``size_t count`` the maximum number of bytes to read ``loff_t *ppos`` the current position in the buffer ``const void *from`` the buffer to read from ``size_t available`` the size of the buffer **Description** The simple_read_from_buffer() function reads up to **count** bytes from the buffer **from** at offset **ppos** into the user space address starting at **to**. On success, the number of bytes read is returned and the offset **ppos** is advanced by this number, or negative value is returned on error.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj0Ãh]”hŒ Parameters”…”�”}”(hj2Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj.Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Mphj*Ãubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ5``void __user *to`` the user space buffer to read to ”h]”(jÊ)�”}”(hŒ``void __user *to``”h]”jÐ)�”}”(hjOÃh]”hŒvoid __user *to”…”�”}”(hjQÃh²h•!h³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjMÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MmhjIÃubjæ)�”}”(hhh]”hÌ)�”}”(hŒ the user space buffer to read to”h]”hŒ the user space buffer to read to”…”�”}”(hjhÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jdÃh´MmhjeÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjIÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jdÃh´MmhjFÃubjÄ)�”}”(hŒ5``size_t count`` the maximum number of bytes to read ”h]”(jÊ)�”}”(hŒ``size_t count``”h]”jÐ)�”}”(hjˆÃh]”hŒ size_t count”…”�”}”(hjŠÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj†Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Mnhj‚Ãubjæ)�”}”(hhh]”hÌ)�”}”(hŒ#the maximum number of bytes to read”h]”hŒ#the maximum number of bytes to read”…”�”}”(hj¡Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�Ãh´MnhjžÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj‚Ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j�Ãh´MnhjFÃubjÄ)�”}”(hŒ4``loff_t *ppos`` the current position in the buffer ”h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hjÁÃh]”hŒ loff_t *ppos”…”�”}”(hjÃÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¿Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Mohj»Ãubjæ)�”}”(hhh]”hÌ)�”}”(hŒ"the current position in the buffer”h]”hŒ"the current position in the buffer”…”�”}”(hjÚÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÖÃh´Mohj×Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj»Ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÖÃh´MohjFÃubjÄ)�”}”(hŒ-``const void *from`` the buffer to read from ”h]”(jÊ)�”}”(hŒ``const void *from``”h]”jÐ)�”}”(hjúÃh]”hŒconst void *from”…”�”}”(hjüÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjøÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MphjôÃubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe buffer to read from”h]”hŒthe buffer to read from”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÄh´MphjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjôÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÄh´MphjFÃubjÄ)�”}”(hŒ,``size_t available`` the size of the buffer ”h]”(jÊ)�”}”(hŒ``size_t available``”h]”jÐ)�”}”(hj3Äh]”hŒsize_t available”…”�”}”(hj5Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj1Äubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Mqhj-Äubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe size of the buffer”h]”hŒthe size of the buffer”…”�”}”(hjLÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jHÄh´MqhjIÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj-Äubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jHÄh´MqhjFÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj*ÃubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjnÄh]”hŒ Description”…”�”}”(hjpÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjlÄubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Mshj*ÃubhÌ)�”}”(hŒžThe simple_read_from_buffer() function reads up to **count** bytes from the buffer **from** at offset **ppos** into the user space address starting at **to**.”h]”(hŒ3The simple_read_from_buffer() function reads up to ”…”�”}”(hj„Äh²hh³Nh´Nubj©)�”}”(hŒ **count**”h]”hŒcount”…”�”}”(hjŒÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj„ÄubhŒ bytes from the buffer ”…”�”}”(hj„Äh²hh³Nh´Nubj©)�”}”(hŒ**from**”h]”hŒfrom”…”�”}”(hjžÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj„ÄubhŒ at offset ”…”�”}”(hj„Äh²hh³Nh´Nubj©)�”}”(hŒ**ppos**”h]”hŒppos”…”�”}”(hj°Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj„ÄubhŒ) into the user space address starting at ”…”�”}”(hj„Äh²hh³Nh´Nubj©)�”}”(hŒ**to**”h]”hŒto”…”�”}”(hjÂÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj„ÄubhŒ.”…”�”}”(hj„Äh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Mrhj*ÃubhÌ)�”}”(hŒŒOn success, the number of bytes read is returned and the offset **ppos** is advanced by this number, or negative value is returned on error.”h]”(hŒ@On success, the number of bytes read is returned and the offset ”…”�”}”(hjÛÄh²hh³Nh´Nubj©)�”}”(hŒ**ppos**”h]”hŒppos”…”�”}”(hjãÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÛÄubhŒD is advanced by this number, or negative value is returned on error.”…”�”}”(hjÛÄh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Muhj*Ãubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ#simple_write_to_buffer (C function)”Œc.simple_write_to_buffer”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒpssize_t simple_write_to_buffer (void *to, size_t available, loff_t *ppos, const void __user *from, size_t count)”h]”j)�”}”(hŒossize_t simple_write_to_buffer(void *to, size_t available, loff_t *ppos, const void __user *from, size_t count)”h]”(h)�”}”(hhh]”jI)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÅubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j!ÅŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒsimple_write_to_buffer”sbŒc.simple_write_to_buffer”†”asbuh1hhjÅh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAÅh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÅh²hh³j@Åh´M�ubjC)�”}”(hŒsimple_write_to_buffer”h]”jI)�”}”(hj=Åh]”hŒsimple_write_to_buffer”…”�”}”(hjSÅh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjOÅubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÅh²hh³j@Åh´M�ubj=)�”}”(hŒQ(void *to, size_t available, loff_t *ppos, const void __user *from, size_t count)”h]”(jC)�”}”(hŒvoid *to”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjnÅh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjjÅubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|Åh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjjÅubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjŠÅh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjjÅubjI)�”}”(hŒto”h]”hŒto”…”�”}”(hj—Åh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjjÅubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjfÅubjC)�”}”(hŒsize_t available”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj³Åh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj°Åubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jµÅŒmodname”NŒ classname”Njj )�”}”j ]”j;ÅŒc.simple_write_to_buffer”†”asbuh1hhj¬Åubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑÅh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¬ÅubjI)�”}”(hŒ available”h]”hŒ available”…”�”}”(hjßÅh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¬Åubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjfÅubjC)�”}”(hŒ loff_t *ppos”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjûÅh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjøÅubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jýÅŒmodname”NŒ classname”Njj )�”}”j ]”j;ÅŒc.simple_write_to_buffer”†”asbuh1hhjôÅubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjôÅubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj'Æh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjôÅubjI)�”}”(hŒppos”h]”hŒppos”…”�”}”(hj4Æh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjôÅubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjfÅubjC)�”}”(hŒconst void __user *from”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjMÆh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjIÆubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZÆh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjIÆubj�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjhÆh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjIÆubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvÆh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjIÆubhŒ__user”…”�”}”(hjIÆh²hh³Nh´Nubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆÆh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjIÆubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj–Æh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjIÆubjI)�”}”(hŒfrom”h]”hŒfrom”…”�”}”(hj£Æh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjIÆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjfÅubjC)�”}”(hŒ size_t count”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj¿Æh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¼Æubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÁÆŒmodname”NŒ classname”Njj )�”}”j ]”j;ÅŒc.simple_write_to_buffer”†”asbuh1hhj¸Æubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝÆh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¸ÆubjI)�”}”(hŒcount”h]”hŒcount”…”�”}”(hjëÆh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¸Æubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjfÅubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÅh²hh³j@Åh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÅh²hh³j@Åh´M�ubah}”(h]”jÅah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j@Åh´M�hjÅh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ'copy data from user space to the buffer”h]”hŒ'copy data from user space to the buffer”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M�hjÇh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÅh²hh³j@Åh´M�ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j-Çjšj-Çj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXV**Parameters** ``void *to`` the buffer to write to ``size_t available`` the size of the buffer ``loff_t *ppos`` the current position in the buffer ``const void __user *from`` the user space buffer to read from ``size_t count`` the maximum number of bytes to read **Description** The simple_write_to_buffer() function reads up to **count** bytes from the user space address starting at **from** into the buffer **to** at offset **ppos**. On success, the number of bytes written is returned and the offset **ppos** is advanced by this number, or negative value is returned on error.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj7Çh]”hŒ Parameters”…”�”}”(hj9Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj5Çubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M“hj1Çubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ$``void *to`` the buffer to write to ”h]”(jÊ)�”}”(hŒ ``void *to``”h]”jÐ)�”}”(hjVÇh]”hŒvoid *to”…”�”}”(hjXÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjTÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M�hjPÇubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe buffer to write to”h]”hŒthe buffer to write to”…”�”}”(hjoÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jkÇh´M�hjlÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjPÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jkÇh´M�hjMÇubjÄ)�”}”(hŒ,``size_t available`` the size of the buffer ”h]”(jÊ)�”}”(hŒ``size_t available``”h]”jÐ)�”}”(hj�Çh]”hŒsize_t available”…”�”}”(hj‘Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj�Çubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M‘hj‰Çubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe size of the buffer”h]”hŒthe size of the buffer”…”�”}”(hj¨Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¤Çh´M‘hj¥Çubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj‰Çubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¤Çh´M‘hjMÇubjÄ)�”}”(hŒ4``loff_t *ppos`` the current position in the buffer ”h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hjÈÇh]”hŒ loff_t *ppos”…”�”}”(hjÊÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÆÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M’hjÂÇubjæ)�”}”(hhh]”hÌ)�”}”(hŒ"the current position in the buffer”h]”hŒ"the current position in the buffer”…”�”}”(hjáÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÝÇh´M’hjÞÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÂÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÝÇh´M’hjMÇubjÄ)�”}”(hŒ?``const void __user *from`` the user space buffer to read from ”h]”(jÊ)�”}”(hŒ``const void __user *from``”h]”jÐ)�”}”(hjÈh]”hŒconst void __user *from”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÿÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M“hjûÇubjæ)�”}”(hhh]”hÌ)�”}”(hŒ"the user space buffer to read from”h]”hŒ"the user space buffer to read from”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÈh´M“hjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjûÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÈh´M“hjMÇubjÄ)�”}”(hŒ5``size_t count`` the maximum number of bytes to read ”h]”(jÊ)�”}”(hŒ``size_t count``”h]”jÐ)�”}”(hj:Èh]”hŒ size_t count”…”�”}”(hj<Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj8Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M”hj4Èubjæ)�”}”(hhh]”hÌ)�”}”(hŒ#the maximum number of bytes to read”h]”hŒ#the maximum number of bytes to read”…”�”}”(hjSÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jOÈh´M”hjPÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj4Èubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jOÈh´M”hjMÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj1ÇubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjuÈh]”hŒ Description”…”�”}”(hjwÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjsÈubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M–hj1ÇubhÌ)�”}”(hŒ�The simple_write_to_buffer() function reads up to **count** bytes from the user space address starting at **from** into the buffer **to** at offset **ppos**.”h]”(hŒ2The simple_write_to_buffer() function reads up to ”…”�”}”(hj‹Èh²hh³Nh´Nubj©)�”}”(hŒ **count**”h]”hŒcount”…”�”}”(hj“Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‹ÈubhŒ/ bytes from the user space address starting at ”…”�”}”(hj‹Èh²hh³Nh´Nubj©)�”}”(hŒ**from**”h]”hŒfrom”…”�”}”(hj¥Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‹ÈubhŒ into the buffer ”…”�”}”(hj‹Èh²hh³Nh´Nubj©)�”}”(hŒ**to**”h]”hŒto”…”�”}”(hj·Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‹ÈubhŒ at offset ”…”�”}”(hj‹Èh²hh³Nh´Nubj©)�”}”(hŒ**ppos**”h]”hŒppos”…”�”}”(hjÉÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‹ÈubhŒ.”…”�”}”(hj‹Èh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M•hj1ÇubhÌ)�”}”(hŒ�On success, the number of bytes written is returned and the offset **ppos** is advanced by this number, or negative value is returned on error.”h]”(hŒCOn success, the number of bytes written is returned and the offset ”…”�”}”(hjâÈh²hh³Nh´Nubj©)�”}”(hŒ**ppos**”h]”hŒppos”…”�”}”(hjêÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjâÈubhŒD is advanced by this number, or negative value is returned on error.”…”�”}”(hjâÈh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M˜hj1Çubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ$memory_read_from_buffer (C function)”Œc.memory_read_from_buffer”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒjssize_t memory_read_from_buffer (void *to, size_t count, loff_t *ppos, const void *from, size_t available)”h]”j)�”}”(hŒissize_t memory_read_from_buffer(void *to, size_t count, loff_t *ppos, const void *from, size_t available)”h]”(h)�”}”(hhh]”jI)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hj&Éh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj#Éubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j(ÉŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒmemory_read_from_buffer”sbŒc.memory_read_from_buffer”†”asbuh1hhjÉh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M²ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHÉh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÉh²hh³jGÉh´M²ubjC)�”}”(hŒmemory_read_from_buffer”h]”jI)�”}”(hjDÉh]”hŒmemory_read_from_buffer”…”�”}”(hjZÉh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjVÉubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÉh²hh³jGÉh´M²ubj=)�”}”(hŒJ(void *to, size_t count, loff_t *ppos, const void *from, size_t available)”h]”(jC)�”}”(hŒvoid *to”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjuÉh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjqÉubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒÉh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjqÉubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj‘Éh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjqÉubjI)�”}”(hŒto”h]”hŒto”…”�”}”(hjžÉh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjqÉubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjmÉubjC)�”}”(hŒ size_t count”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjºÉh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj·Éubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¼ÉŒmodname”NŒ classname”Njj )�”}”j ]”jBÉŒc.memory_read_from_buffer”†”asbuh1hhj³Éubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØÉh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj³ÉubjI)�”}”(hŒcount”h]”hŒcount”…”�”}”(hjæÉh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj³Éubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjmÉubjC)�”}”(hŒ loff_t *ppos”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÿÉubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÊŒmodname”NŒ classname”Njj )�”}”j ]”jBÉŒc.memory_read_from_buffer”†”asbuh1hhjûÉubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Êh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjûÉubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj.Êh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjûÉubjI)�”}”(hŒppos”h]”hŒppos”…”�”}”(hj;Êh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjûÉubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjmÉubjC)�”}”(hŒconst void *from”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjTÊh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjPÊubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaÊh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjPÊubj�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjoÊh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjPÊubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}Êh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjPÊubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj‹Êh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjPÊubjI)�”}”(hŒfrom”h]”hŒfrom”…”�”}”(hj˜Êh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjPÊubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjmÉubjC)�”}”(hŒsize_t available”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj´Êh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj±Êubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¶ÊŒmodname”NŒ classname”Njj )�”}”j ]”jBÉŒc.memory_read_from_buffer”†”asbuh1hhj­Êubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒÊh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj­ÊubjI)�”}”(hŒ available”h]”hŒ available”…”�”}”(hjàÊh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj­Êubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjmÉubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÉh²hh³jGÉh´M²ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÉh²hh³jGÉh´M²ubah}”(h]”jÉah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jGÉh´M²hjÉh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒcopy data from the buffer”h]”hŒcopy data from the buffer”…”�”}”(hj Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M²hjËh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÉh²hh³jGÉh´M²ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j"Ëjšj"Ëj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXP**Parameters** ``void *to`` the kernel space buffer to read to ``size_t count`` the maximum number of bytes to read ``loff_t *ppos`` the current position in the buffer ``const void *from`` the buffer to read from ``size_t available`` the size of the buffer **Description** The memory_read_from_buffer() function reads up to **count** bytes from the buffer **from** at offset **ppos** into the kernel space address starting at **to**. On success, the number of bytes read is returned and the offset **ppos** is advanced by this number, or negative value is returned on error.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj,Ëh]”hŒ Parameters”…”�”}”(hj.Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj*Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M¶hj&Ëubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ0``void *to`` the kernel space buffer to read to ”h]”(jÊ)�”}”(hŒ ``void *to``”h]”jÐ)�”}”(hjKËh]”hŒvoid *to”…”�”}”(hjMËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjIËubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M³hjEËubjæ)�”}”(hhh]”hÌ)�”}”(hŒ"the kernel space buffer to read to”h]”hŒ"the kernel space buffer to read to”…”�”}”(hjdËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j`Ëh´M³hjaËubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjEËubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j`Ëh´M³hjBËubjÄ)�”}”(hŒ5``size_t count`` the maximum number of bytes to read ”h]”(jÊ)�”}”(hŒ``size_t count``”h]”jÐ)�”}”(hj„Ëh]”hŒ size_t count”…”�”}”(hj†Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj‚Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M´hj~Ëubjæ)�”}”(hhh]”hÌ)�”}”(hŒ#the maximum number of bytes to read”h]”hŒ#the maximum number of bytes to read”…”�”}”(hj�Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j™Ëh´M´hjšËubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj~Ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j™Ëh´M´hjBËubjÄ)�”}”(hŒ4``loff_t *ppos`` the current position in the buffer ”h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hj½Ëh]”hŒ loff_t *ppos”…”�”}”(hj¿Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj»Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Mµhj·Ëubjæ)�”}”(hhh]”hÌ)�”}”(hŒ"the current position in the buffer”h]”hŒ"the current position in the buffer”…”�”}”(hjÖËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÒËh´MµhjÓËubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj·Ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÒËh´MµhjBËubjÄ)�”}”(hŒ-``const void *from`` the buffer to read from ”h]”(jÊ)�”}”(hŒ``const void *from``”h]”jÐ)�”}”(hjöËh]”hŒconst void *from”…”�”}”(hjøËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjôËubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M¶hjðËubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe buffer to read from”h]”hŒthe buffer to read from”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j Ìh´M¶hj Ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjðËubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j Ìh´M¶hjBËubjÄ)�”}”(hŒ,``size_t available`` the size of the buffer ”h]”(jÊ)�”}”(hŒ``size_t available``”h]”jÐ)�”}”(hj/Ìh]”hŒsize_t available”…”�”}”(hj1Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj-Ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M·hj)Ìubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe size of the buffer”h]”hŒthe size of the buffer”…”�”}”(hjHÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jDÌh´M·hjEÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj)Ìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jDÌh´M·hjBËubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj&ËubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjjÌh]”hŒ Description”…”�”}”(hjlÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjhÌubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M¹hj&ËubhÌ)�”}”(hŒ The memory_read_from_buffer() function reads up to **count** bytes from the buffer **from** at offset **ppos** into the kernel space address starting at **to**.”h]”(hŒ3The memory_read_from_buffer() function reads up to ”…”�”}”(hj€Ìh²hh³Nh´Nubj©)�”}”(hŒ **count**”h]”hŒcount”…”�”}”(hjˆÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj€ÌubhŒ bytes from the buffer ”…”�”}”(hj€Ìh²hh³Nh´Nubj©)�”}”(hŒ**from**”h]”hŒfrom”…”�”}”(hjšÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj€ÌubhŒ at offset ”…”�”}”(hj€Ìh²hh³Nh´Nubj©)�”}”(hŒ**ppos**”h]”hŒppos”…”�”}”(hj¬Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj€ÌubhŒ+ into the kernel space address starting at ”…”�”}”(hj€Ìh²hh³Nh´Nubj©)�”}”(hŒ**to**”h]”hŒto”…”�”}”(hj¾Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj€ÌubhŒ.”…”�”}”(hj€Ìh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M¸hj&ËubhÌ)�”}”(hŒŒOn success, the number of bytes read is returned and the offset **ppos** is advanced by this number, or negative value is returned on error.”h]”(hŒ@On success, the number of bytes read is returned and the offset ”…”�”}”(hj×Ìh²hh³Nh´Nubj©)�”}”(hŒ**ppos**”h]”hŒppos”…”�”}”(hjßÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj×ÌubhŒD is advanced by this number, or negative value is returned on error.”…”�”}”(hj×Ìh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M»hj&Ëubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ$generic_encode_ino32_fh (C function)”Œc.generic_encode_ino32_fh”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ`int generic_encode_ino32_fh (struct inode *inode, __u32 *fh, int *max_len, struct inode *parent)”h]”j)�”}”(hŒ_int generic_encode_ino32_fh(struct inode *inode, __u32 *fh, int *max_len, struct inode *parent)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÍh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'Íh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÍh²hh³j&Íh´M�ubjC)�”}”(hŒgeneric_encode_ino32_fh”h]”jI)�”}”(hŒgeneric_encode_ino32_fh”h]”hŒgeneric_encode_ino32_fh”…”�”}”(hj9Íh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj5Íubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÍh²hh³j&Íh´M�ubj=)�”}”(hŒD(struct inode *inode, __u32 *fh, int *max_len, struct inode *parent)”h]”(jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjUÍh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjQÍubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbÍh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjQÍubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjsÍh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjpÍubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”juÍŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj;ÍsbŒc.generic_encode_ino32_fh”†”asbuh1hhjQÍubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“Íh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjQÍubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¡Íh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjQÍubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj®Íh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjQÍubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjMÍubjC)�”}”(hŒ __u32 *fh”h]”(h)�”}”(hhh]”jI)�”}”(hŒ__u32”h]”hŒ__u32”…”�”}”(hjÊÍh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÇÍubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÌÍŒmodname”NŒ classname”Njj )�”}”j ]”j�ÍŒc.generic_encode_ino32_fh”†”asbuh1hhjÃÍubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèÍh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÃÍubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjöÍh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÃÍubjI)�”}”(hŒfh”h]”hŒfh”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÃÍubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjMÍubjC)�”}”(hŒ int *max_len”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÎubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*Îh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÎubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj8Îh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÎubjI)�”}”(hŒmax_len”h]”hŒmax_len”…”�”}”(hjEÎh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÎubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjMÍubjC)�”}”(hŒstruct inode *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj^Îh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjZÎubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkÎh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjZÎubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj|Îh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjyÎubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j~ÎŒmodname”NŒ classname”Njj )�”}”j ]”j�ÍŒc.generic_encode_ino32_fh”†”asbuh1hhjZÎubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšÎh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjZÎubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¨Îh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjZÎubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjµÎh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjZÎubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjMÍubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÍh²hh³j&Íh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÍh²hh³j&Íh´M�ubah}”(h]”j Íah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j&Íh´M�hj Íh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ-generic export_operations->encode_fh function”h]”hŒ-generic export_operations->encode_fh function”…”�”}”(hjßÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M�hjÜÎh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj Íh²hh³j&Íh´M�ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j÷Îjšj÷Îj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX**Parameters** ``struct inode *inode`` the object to encode ``__u32 *fh`` where to store the file handle fragment ``int *max_len`` maximum length to store there (in 4 byte units) ``struct inode *parent`` parent directory inode, if wanted **Description** This generic encode_fh function assumes that the 32 inode number is suitable for locating an inode, and that the generation number can be used to check that it is still valid. It places them in the filehandle fragment where export_decode_fh expects to find them.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÏh]”hŒ Parameters”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÿÎubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M¡hjûÎubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ-``struct inode *inode`` the object to encode ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj Ïh]”hŒstruct inode *inode”…”�”}”(hj"Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MžhjÏubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe object to encode”h]”hŒthe object to encode”…”�”}”(hj9Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j5Ïh´Mžhj6Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j5Ïh´MžhjÏubjÄ)�”}”(hŒ6``__u32 *fh`` where to store the file handle fragment ”h]”(jÊ)�”}”(hŒ ``__u32 *fh``”h]”jÐ)�”}”(hjYÏh]”hŒ __u32 *fh”…”�”}”(hj[Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjWÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MŸhjSÏubjæ)�”}”(hhh]”hÌ)�”}”(hŒ'where to store the file handle fragment”h]”hŒ'where to store the file handle fragment”…”�”}”(hjrÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jnÏh´MŸhjoÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjSÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jnÏh´MŸhjÏubjÄ)�”}”(hŒA``int *max_len`` maximum length to store there (in 4 byte units) ”h]”(jÊ)�”}”(hŒ``int *max_len``”h]”jÐ)�”}”(hj’Ïh]”hŒ int *max_len”…”�”}”(hj”Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj�Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M hjŒÏubjæ)�”}”(hhh]”hÌ)�”}”(hŒ/maximum length to store there (in 4 byte units)”h]”hŒ/maximum length to store there (in 4 byte units)”…”�”}”(hj«Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j§Ïh´M hj¨Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjŒÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j§Ïh´M hjÏubjÄ)�”}”(hŒ;``struct inode *parent`` parent directory inode, if wanted ”h]”(jÊ)�”}”(hŒ``struct inode *parent``”h]”jÐ)�”}”(hjËÏh]”hŒstruct inode *parent”…”�”}”(hjÍÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÉÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M¡hjÅÏubjæ)�”}”(hhh]”hÌ)�”}”(hŒ!parent directory inode, if wanted”h]”hŒ!parent directory inode, if wanted”…”�”}”(hjäÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jàÏh´M¡hjáÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÅÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jàÏh´M¡hjÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjûÎubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÐh]”hŒ Description”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M£hjûÎubhÌ)�”}”(hXThis generic encode_fh function assumes that the 32 inode number is suitable for locating an inode, and that the generation number can be used to check that it is still valid. It places them in the filehandle fragment where export_decode_fh expects to find them.”h]”hXThis generic encode_fh function assumes that the 32 inode number is suitable for locating an inode, and that the generation number can be used to check that it is still valid. It places them in the filehandle fragment where export_decode_fh expects to find them.”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M¢hjûÎubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ!generic_fh_to_dentry (C function)”Œc.generic_fh_to_dentry”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ®struct dentry * generic_fh_to_dentry (struct super_block *sb, struct fid *fid, int fh_len, int fh_type, struct inode *(*get_inode) (struct super_block *sb, u64 ino, u32 gen))”h]”j)�”}”(hŒ«struct dentry *generic_fh_to_dentry(struct super_block *sb, struct fid *fid, int fh_len, int fh_type, struct inode *(*get_inode)(struct super_block *sb, u64 ino, u32 gen))”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjKÐh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjGÐh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MÆubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYÐh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjGÐh²hh³jXÐh´MÆubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjjÐh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjgÐubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jlÐŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒgeneric_fh_to_dentry”sbŒc.generic_fh_to_dentry”†”asbuh1hhjGÐh²hh³jXÐh´MÆubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹Ðh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjGÐh²hh³jXÐh´MÆubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj™Ðh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjGÐh²hh³jXÐh´MÆubjC)�”}”(hŒgeneric_fh_to_dentry”h]”jI)�”}”(hjˆÐh]”hŒgeneric_fh_to_dentry”…”�”}”(hjªÐh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¦Ðubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjGÐh²hh³jXÐh´MÆubj=)�”}”(hŒˆ(struct super_block *sb, struct fid *fid, int fh_len, int fh_type, struct inode *(*get_inode)(struct super_block *sb, u64 ino, u32 gen))”h]”(jC)�”}”(hŒstruct super_block *sb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÅÐh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÁÐubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒÐh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÁÐubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hjãÐh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjàÐubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jåÐŒmodname”NŒ classname”Njj )�”}”j ]”j†ÐŒc.generic_fh_to_dentry”†”asbuh1hhjÁÐubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÁÐubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÁÐubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÁÐubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj½ÐubjC)�”}”(hŒstruct fid *fid”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj5Ñh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj1Ñubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBÑh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj1Ñubh)�”}”(hhh]”jI)�”}”(hŒfid”h]”hŒfid”…”�”}”(hjSÑh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjPÑubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jUÑŒmodname”NŒ classname”Njj )�”}”j ]”j†ÐŒc.generic_fh_to_dentry”†”asbuh1hhj1Ñubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqÑh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj1Ñubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj1ÑubjI)�”}”(hŒfid”h]”hŒfid”…”�”}”(hjŒÑh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj1Ñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj½ÐubjC)�”}”(hŒ int fh_len”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj¥Ñh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¡Ñubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³Ñh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¡ÑubjI)�”}”(hŒfh_len”h]”hŒfh_len”…”�”}”(hjÁÑh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¡Ñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj½ÐubjC)�”}”(hŒ int fh_type”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjÚÑh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÖÑubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèÑh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÖÑubjI)�”}”(hŒfh_type”h]”hŒfh_type”…”�”}”(hjöÑh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÖÑubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj½ÐubjC)�”}”(hŒDstruct inode *(*get_inode)(struct super_block *sb, u64 ino, u32 gen)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj Òubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj Òubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj-Òh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj*Òubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j/ÒŒmodname”NŒ classname”Njj )�”}”j ]”j†ÐŒc.generic_fh_to_dentry”†”asbuh1hhj Òubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKÒh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj Òubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjYÒh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj Òubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hjfÒh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj Òubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjsÒh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ÒubjI)�”}”(hŒ get_inode”h]”hŒ get_inode”…”�”}”(hj€Òh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj Òubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hjŽÒh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj Òubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hj›Òh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj Òubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¨Òh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj Òubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµÒh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj Òubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hjÆÒh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÃÒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÈÒŒmodname”NŒ classname”Njj )�”}”j ]”j†ÐŒc.generic_fh_to_dentry”†”asbuh1hhj Òubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäÒh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj Òubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjòÒh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ÒubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hjÿÒh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj Òubj¯)�”}”(hjW¦h]”hŒ,”…”�”}”(hj Óh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj Òubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj Òubh)�”}”(hhh]”jI)�”}”(hŒu64”h]”hŒu64”…”�”}”(hj+Óh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj(Óubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j-ÓŒmodname”NŒ classname”Njj )�”}”j ]”j†ÐŒc.generic_fh_to_dentry”†”asbuh1hhj Òubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIÓh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ÒubjI)�”}”(hŒino”h]”hŒino”…”�”}”(hjWÓh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj Òubj¯)�”}”(hjW¦h]”hŒ,”…”�”}”(hjeÓh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj Òubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrÓh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj Òubh)�”}”(hhh]”jI)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjƒÓh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj€Óubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j…ÓŒmodname”NŒ classname”Njj )�”}”j ]”j†ÐŒc.generic_fh_to_dentry”†”asbuh1hhj Òubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡Óh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ÒubjI)�”}”(hŒgen”h]”hŒgen”…”�”}”(hj¯Óh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj Òubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hj½Óh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj Òubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj½Ðubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjGÐh²hh³jXÐh´MÆubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjCÐh²hh³jXÐh´MÆubah}”(h]”j>Ðah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jXÐh´MÆhj@Ðh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ4generic helper for the fh_to_dentry export operation”h]”hŒ4generic helper for the fh_to_dentry export operation”…”�”}”(hjæÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MÆhjãÓh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj@Ðh²hh³jXÐh´MÆubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jþÓjšjþÓj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX(**Parameters** ``struct super_block *sb`` filesystem to do the file handle conversion on ``struct fid *fid`` file handle to convert ``int fh_len`` length of the file handle in bytes ``int fh_type`` type of file handle ``struct inode *(*get_inode) (struct super_block *sb, u64 ino, u32 gen)`` filesystem callback to retrieve inode **Description** This function decodes **fid** as long as it has one of the well-known Linux filehandle types and calls **get_inode** on it to retrieve the inode for the object specified in the file handle.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÔh]”hŒ Parameters”…”�”}”(hj Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MÊhjÔubj¿)�”}”(hhh]”(jÄ)�”}”(hŒJ``struct super_block *sb`` filesystem to do the file handle conversion on ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hj'Ôh]”hŒstruct super_block *sb”…”�”}”(hj)Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj%Ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MÇhj!Ôubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.filesystem to do the file handle conversion on”h]”hŒ.filesystem to do the file handle conversion on”…”�”}”(hj@Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j<Ôh´MÇhj=Ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj!Ôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j<Ôh´MÇhjÔubjÄ)�”}”(hŒ+``struct fid *fid`` file handle to convert ”h]”(jÊ)�”}”(hŒ``struct fid *fid``”h]”jÐ)�”}”(hj`Ôh]”hŒstruct fid *fid”…”�”}”(hjbÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj^Ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MÈhjZÔubjæ)�”}”(hhh]”hÌ)�”}”(hŒfile handle to convert”h]”hŒfile handle to convert”…”�”}”(hjyÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³juÔh´MÈhjvÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjZÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³juÔh´MÈhjÔubjÄ)�”}”(hŒ2``int fh_len`` length of the file handle in bytes ”h]”(jÊ)�”}”(hŒ``int fh_len``”h]”jÐ)�”}”(hj™Ôh]”hŒ int fh_len”…”�”}”(hj›Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj—Ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MÉhj“Ôubjæ)�”}”(hhh]”hÌ)�”}”(hŒ"length of the file handle in bytes”h]”hŒ"length of the file handle in bytes”…”�”}”(hj²Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j®Ôh´MÉhj¯Ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj“Ôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j®Ôh´MÉhjÔubjÄ)�”}”(hŒ$``int fh_type`` type of file handle ”h]”(jÊ)�”}”(hŒ``int fh_type``”h]”jÐ)�”}”(hjÒÔh]”hŒ int fh_type”…”�”}”(hjÔÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÐÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MÊhjÌÔubjæ)�”}”(hhh]”hÌ)�”}”(hŒtype of file handle”h]”hŒtype of file handle”…”�”}”(hjëÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jçÔh´MÊhjèÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÌÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jçÔh´MÊhjÔubjÄ)�”}”(hŒp``struct inode *(*get_inode) (struct super_block *sb, u64 ino, u32 gen)`` filesystem callback to retrieve inode ”h]”(jÊ)�”}”(hŒI``struct inode *(*get_inode) (struct super_block *sb, u64 ino, u32 gen)``”h]”jÐ)�”}”(hj Õh]”hŒEstruct inode *(*get_inode) (struct super_block *sb, u64 ino, u32 gen)”…”�”}”(hj Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj Õubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MËhjÕubjæ)�”}”(hhh]”hÌ)�”}”(hŒ%filesystem callback to retrieve inode”h]”hŒ%filesystem callback to retrieve inode”…”�”}”(hj$Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j Õh´MËhj!Õubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j Õh´MËhjÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÔubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjFÕh]”hŒ Description”…”�”}”(hjHÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjDÕubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MÍhjÔubhÌ)�”}”(hŒ½This function decodes **fid** as long as it has one of the well-known Linux filehandle types and calls **get_inode** on it to retrieve the inode for the object specified in the file handle.”h]”(hŒThis function decodes ”…”�”}”(hj\Õh²hh³Nh´Nubj©)�”}”(hŒ**fid**”h]”hŒfid”…”�”}”(hjdÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj\ÕubhŒJ as long as it has one of the well-known Linux filehandle types and calls ”…”�”}”(hj\Õh²hh³Nh´Nubj©)�”}”(hŒ **get_inode**”h]”hŒ get_inode”…”�”}”(hjvÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj\ÕubhŒI on it to retrieve the inode for the object specified in the file handle.”…”�”}”(hj\Õh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MÌhjÔubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ!generic_fh_to_parent (C function)”Œc.generic_fh_to_parent”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ®struct dentry * generic_fh_to_parent (struct super_block *sb, struct fid *fid, int fh_len, int fh_type, struct inode *(*get_inode) (struct super_block *sb, u64 ino, u32 gen))”h]”j)�”}”(hŒ«struct dentry *generic_fh_to_parent(struct super_block *sb, struct fid *fid, int fh_len, int fh_type, struct inode *(*get_inode)(struct super_block *sb, u64 ino, u32 gen))”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¯Õh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj«Õh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Mæubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½Õh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj«Õh²hh³j¼Õh´Mæubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjÎÕh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjËÕubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÐÕŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒgeneric_fh_to_parent”sbŒc.generic_fh_to_parent”†”asbuh1hhj«Õh²hh³j¼Õh´Mæubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïÕh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj«Õh²hh³j¼Õh´Mæubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjýÕh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj«Õh²hh³j¼Õh´MæubjC)�”}”(hŒgeneric_fh_to_parent”h]”jI)�”}”(hjìÕh]”hŒgeneric_fh_to_parent”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj Öubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj«Õh²hh³j¼Õh´Mæubj=)�”}”(hŒˆ(struct super_block *sb, struct fid *fid, int fh_len, int fh_type, struct inode *(*get_inode)(struct super_block *sb, u64 ino, u32 gen))”h]”(jC)�”}”(hŒstruct super_block *sb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj)Öh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj%Öubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6Öh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj%Öubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hjGÖh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjDÖubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jIÖŒmodname”NŒ classname”Njj )�”}”j ]”jêÕŒc.generic_fh_to_parent”†”asbuh1hhj%Öubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeÖh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj%Öubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjsÖh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj%ÖubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hj€Öh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj%Öubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj!ÖubjC)�”}”(hŒstruct fid *fid”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj™Öh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj•Öubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦Öh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj•Öubh)�”}”(hhh]”jI)�”}”(hŒfid”h]”hŒfid”…”�”}”(hj·Öh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj´Öubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¹ÖŒmodname”NŒ classname”Njj )�”}”j ]”jêÕŒc.generic_fh_to_parent”†”asbuh1hhj•Öubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕÖh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj•Öubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjãÖh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj•ÖubjI)�”}”(hŒfid”h]”hŒfid”…”�”}”(hjðÖh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj•Öubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj!ÖubjC)�”}”(hŒ int fh_len”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj ×h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj×ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj×ubjI)�”}”(hŒfh_len”h]”hŒfh_len”…”�”}”(hj%×h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj!ÖubjC)�”}”(hŒ int fh_type”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj>×h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj:×ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjL×h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj:×ubjI)�”}”(hŒfh_type”h]”hŒfh_type”…”�”}”(hjZ×h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj:×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj!ÖubjC)�”}”(hŒDstruct inode *(*get_inode)(struct super_block *sb, u64 ino, u32 gen)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjs×h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjo×ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€×h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjo×ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj‘×h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŽ×ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j“׌modname”NŒ classname”Njj )�”}”j ]”jêÕŒc.generic_fh_to_parent”†”asbuh1hhjo×ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯×h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjo×ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj½×h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjo×ubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hjÊ×h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjo×ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj××h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjo×ubjI)�”}”(hŒ get_inode”h]”hŒ get_inode”…”�”}”(hjä×h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjo×ubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hjò×h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjo×ubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hjÿ×h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjo×ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj Øh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjo×ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjo×ubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hj*Øh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj'Øubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j,ØŒmodname”NŒ classname”Njj )�”}”j ]”jêÕŒc.generic_fh_to_parent”†”asbuh1hhjo×ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHØh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjo×ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjVØh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjo×ubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hjcØh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjo×ubj¯)�”}”(hjW¦h]”hŒ,”…”�”}”(hjqØh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjo×ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~Øh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjo×ubh)�”}”(hhh]”jI)�”}”(hŒu64”h]”hŒu64”…”�”}”(hj�Øh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŒØubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j‘ØŒmodname”NŒ classname”Njj )�”}”j ]”jêÕŒc.generic_fh_to_parent”†”asbuh1hhjo×ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­Øh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjo×ubjI)�”}”(hŒino”h]”hŒino”…”�”}”(hj»Øh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjo×ubj¯)�”}”(hjW¦h]”hŒ,”…”�”}”(hjÉØh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjo×ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖØh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjo×ubh)�”}”(hhh]”jI)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjçØh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjäØubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jéØŒmodname”NŒ classname”Njj )�”}”j ]”jêÕŒc.generic_fh_to_parent”†”asbuh1hhjo×ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjo×ubjI)�”}”(hŒgen”h]”hŒgen”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjo×ubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hj!Ùh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjo×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj!Öubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj«Õh²hh³j¼Õh´Mæubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj§Õh²hh³j¼Õh´Mæubah}”(h]”j¢Õah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j¼Õh´Mæhj¤Õh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ4generic helper for the fh_to_parent export operation”h]”hŒ4generic helper for the fh_to_parent export operation”…”�”}”(hjJÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MæhjGÙh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¤Õh²hh³j¼Õh´Mæubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jbÙjšjbÙj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXj**Parameters** ``struct super_block *sb`` filesystem to do the file handle conversion on ``struct fid *fid`` file handle to convert ``int fh_len`` length of the file handle in bytes ``int fh_type`` type of file handle ``struct inode *(*get_inode) (struct super_block *sb, u64 ino, u32 gen)`` filesystem callback to retrieve inode **Description** This function decodes **fid** as long as it has one of the well-known Linux filehandle types and calls **get_inode** on it to retrieve the inode for the _parent_ object specified in the file handle if it is specified in the file handle, or NULL otherwise.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjlÙh]”hŒ Parameters”…”�”}”(hjnÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MêhjfÙubj¿)�”}”(hhh]”(jÄ)�”}”(hŒJ``struct super_block *sb`` filesystem to do the file handle conversion on ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hj‹Ùh]”hŒstruct super_block *sb”…”�”}”(hj�Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj‰Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Mçhj…Ùubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.filesystem to do the file handle conversion on”h]”hŒ.filesystem to do the file handle conversion on”…”�”}”(hj¤Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j Ùh´Mçhj¡Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj…Ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j Ùh´Mçhj‚ÙubjÄ)�”}”(hŒ+``struct fid *fid`` file handle to convert ”h]”(jÊ)�”}”(hŒ``struct fid *fid``”h]”jÐ)�”}”(hjÄÙh]”hŒstruct fid *fid”…”�”}”(hjÆÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÂÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Mèhj¾Ùubjæ)�”}”(hhh]”hÌ)�”}”(hŒfile handle to convert”h]”hŒfile handle to convert”…”�”}”(hjÝÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÙÙh´MèhjÚÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¾Ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÙÙh´Mèhj‚ÙubjÄ)�”}”(hŒ2``int fh_len`` length of the file handle in bytes ”h]”(jÊ)�”}”(hŒ``int fh_len``”h]”jÐ)�”}”(hjýÙh]”hŒ int fh_len”…”�”}”(hjÿÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjûÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Méhj÷Ùubjæ)�”}”(hhh]”hÌ)�”}”(hŒ"length of the file handle in bytes”h]”hŒ"length of the file handle in bytes”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÚh´MéhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj÷Ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÚh´Méhj‚ÙubjÄ)�”}”(hŒ$``int fh_type`` type of file handle ”h]”(jÊ)�”}”(hŒ``int fh_type``”h]”jÐ)�”}”(hj6Úh]”hŒ int fh_type”…”�”}”(hj8Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj4Úubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Mêhj0Úubjæ)�”}”(hhh]”hÌ)�”}”(hŒtype of file handle”h]”hŒtype of file handle”…”�”}”(hjOÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jKÚh´MêhjLÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj0Úubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jKÚh´Mêhj‚ÙubjÄ)�”}”(hŒp``struct inode *(*get_inode) (struct super_block *sb, u64 ino, u32 gen)`` filesystem callback to retrieve inode ”h]”(jÊ)�”}”(hŒI``struct inode *(*get_inode) (struct super_block *sb, u64 ino, u32 gen)``”h]”jÐ)�”}”(hjoÚh]”hŒEstruct inode *(*get_inode) (struct super_block *sb, u64 ino, u32 gen)”…”�”}”(hjqÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjmÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MëhjiÚubjæ)�”}”(hhh]”hÌ)�”}”(hŒ%filesystem callback to retrieve inode”h]”hŒ%filesystem callback to retrieve inode”…”�”}”(hjˆÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j„Úh´Mëhj…Úubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjiÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j„Úh´Mëhj‚Ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjfÙubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjªÚh]”hŒ Description”…”�”}”(hj¬Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¨Úubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MíhjfÙubhÌ)�”}”(hŒÿThis function decodes **fid** as long as it has one of the well-known Linux filehandle types and calls **get_inode** on it to retrieve the inode for the _parent_ object specified in the file handle if it is specified in the file handle, or NULL otherwise.”h]”(hŒThis function decodes ”…”�”}”(hjÀÚh²hh³Nh´Nubj©)�”}”(hŒ**fid**”h]”hŒfid”…”�”}”(hjÈÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÀÚubhŒJ as long as it has one of the well-known Linux filehandle types and calls ”…”�”•ý}”(hjÀÚh²hh³Nh´Nubj©)�”}”(hŒ **get_inode**”h]”hŒ get_inode”…”�”}”(hjÚÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÀÚubhŒ‹ on it to retrieve the inode for the _parent_ object specified in the file handle if it is specified in the file handle, or NULL otherwise.”…”�”}”(hjÀÚh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MìhjfÙubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ!simple_fsync_noflush (C function)”Œc.simple_fsync_noflush”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒTint simple_fsync_noflush (struct file *file, loff_t start, loff_t end, int datasync)”h]”j)�”}”(hŒSint simple_fsync_noflush(struct file *file, loff_t start, loff_t end, int datasync)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÛh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"Ûh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÛh²hh³j!Ûh´MubjC)�”}”(hŒsimple_fsync_noflush”h]”jI)�”}”(hŒsimple_fsync_noflush”h]”hŒsimple_fsync_noflush”…”�”}”(hj4Ûh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj0Ûubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÛh²hh³j!Ûh´Mubj=)�”}”(hŒ;(struct file *file, loff_t start, loff_t end, int datasync)”h]”(jC)�”}”(hŒstruct file *file”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjPÛh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjLÛubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]Ûh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjLÛubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjnÛh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjkÛubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jpÛŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj6ÛsbŒc.simple_fsync_noflush”†”asbuh1hhjLÛubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽÛh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjLÛubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjœÛh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjLÛubjI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj©Ûh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjLÛubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjHÛubjC)�”}”(hŒ loff_t start”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjÅÛh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÂÛubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÇÛŒmodname”NŒ classname”Njj )�”}”j ]”jŠÛŒc.simple_fsync_noflush”†”asbuh1hhj¾Ûubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãÛh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¾ÛubjI)�”}”(hŒstart”h]”hŒstart”…”�”}”(hjñÛh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¾Ûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjHÛubjC)�”}”(hŒ loff_t end”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hj Üh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj Üubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÜŒmodname”NŒ classname”Njj )�”}”j ]”jŠÛŒc.simple_fsync_noflush”†”asbuh1hhjÜubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+Üh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÜubjI)�”}”(hŒend”h]”hŒend”…”�”}”(hj9Üh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÜubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjHÛubjC)�”}”(hŒ int datasync”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjRÜh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjNÜubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`Üh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjNÜubjI)�”}”(hŒdatasync”h]”hŒdatasync”…”�”}”(hjnÜh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjNÜubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjHÛubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÛh²hh³j!Ûh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj Ûh²hh³j!Ûh´Mubah}”(h]”jÛah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j!Ûh´MhjÛh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ3generic fsync implementation for simple filesystems”h]”hŒ3generic fsync implementation for simple filesystems”…”�”}”(hj˜Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Mhj•Üh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÛh²hh³j!Ûh´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j°Üjšj°Üj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXq**Parameters** ``struct file *file`` file to synchronize ``loff_t start`` start offset in bytes ``loff_t end`` end offset in bytes (inclusive) ``int datasync`` only synchronize essential metadata if true **Description** This function is an fsync handler for simple filesystems. It writes out dirty data, inode (if dirty), but does not issue a cache flush.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjºÜh]”hŒ Parameters”…”�”}”(hj¼Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¸Üubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M hj´Üubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ*``struct file *file`` file to synchronize ”h]”(jÊ)�”}”(hŒ``struct file *file``”h]”jÐ)�”}”(hjÙÜh]”hŒstruct file *file”…”�”}”(hjÛÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj×Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M hjÓÜubjæ)�”}”(hhh]”hÌ)�”}”(hŒfile to synchronize”h]”hŒfile to synchronize”…”�”}”(hjòÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jîÜh´M hjïÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÓÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jîÜh´M hjÐÜubjÄ)�”}”(hŒ'``loff_t start`` start offset in bytes ”h]”(jÊ)�”}”(hŒ``loff_t start``”h]”jÐ)�”}”(hjÝh]”hŒ loff_t start”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M hj Ýubjæ)�”}”(hhh]”hÌ)�”}”(hŒstart offset in bytes”h]”hŒstart offset in bytes”…”�”}”(hj+Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j'Ýh´M hj(Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj Ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j'Ýh´M hjÐÜubjÄ)�”}”(hŒ/``loff_t end`` end offset in bytes (inclusive) ”h]”(jÊ)�”}”(hŒ``loff_t end``”h]”jÐ)�”}”(hjKÝh]”hŒ loff_t end”…”�”}”(hjMÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjIÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M hjEÝubjæ)�”}”(hhh]”hÌ)�”}”(hŒend offset in bytes (inclusive)”h]”hŒend offset in bytes (inclusive)”…”�”}”(hjdÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j`Ýh´M hjaÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjEÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j`Ýh´M hjÐÜubjÄ)�”}”(hŒ=``int datasync`` only synchronize essential metadata if true ”h]”(jÊ)�”}”(hŒ``int datasync``”h]”jÐ)�”}”(hj„Ýh]”hŒ int datasync”…”�”}”(hj†Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj‚Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M hj~Ýubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+only synchronize essential metadata if true”h]”hŒ+only synchronize essential metadata if true”…”�”}”(hj�Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j™Ýh´M hjšÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj~Ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j™Ýh´M hjÐÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj´ÜubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj¿Ýh]”hŒ Description”…”�”}”(hjÁÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj½Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Mhj´ÜubhÌ)�”}”(hŒ‡This function is an fsync handler for simple filesystems. It writes out dirty data, inode (if dirty), but does not issue a cache flush.”h]”hŒ‡This function is an fsync handler for simple filesystems. It writes out dirty data, inode (if dirty), but does not issue a cache flush.”…”�”}”(hjÕÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M hj´Üubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œsimple_fsync (C function)”Œc.simple_fsync”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒLint simple_fsync (struct file *file, loff_t start, loff_t end, int datasync)”h]”j)�”}”(hŒKint simple_fsync(struct file *file, loff_t start, loff_t end, int datasync)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÞh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M/ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÞh²hh³jÞh´M/ubjC)�”}”(hŒ simple_fsync”h]”jI)�”}”(hŒ simple_fsync”h]”hŒ simple_fsync”…”�”}”(hj%Þh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj!Þubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÞh²hh³jÞh´M/ubj=)�”}”(hŒ;(struct file *file, loff_t start, loff_t end, int datasync)”h]”(jC)�”}”(hŒstruct file *file”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjAÞh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj=Þubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNÞh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj=Þubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj_Þh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj\Þubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jaÞŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj'ÞsbŒc.simple_fsync”†”asbuh1hhj=Þubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj=Þubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj�Þh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj=ÞubjI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjšÞh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj=Þubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj9ÞubjC)�”}”(hŒ loff_t start”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hj¶Þh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj³Þubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¸ÞŒmodname”NŒ classname”Njj )�”}”j ]”j{ÞŒc.simple_fsync”†”asbuh1hhj¯Þubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔÞh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¯ÞubjI)�”}”(hŒstart”h]”hŒstart”…”�”}”(hjâÞh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¯Þubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj9ÞubjC)�”}”(hŒ loff_t end”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjþÞh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjûÞubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jߌmodname”NŒ classname”Njj )�”}”j ]”j{ÞŒc.simple_fsync”†”asbuh1hhj÷Þubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj÷ÞubjI)�”}”(hŒend”h]”hŒend”…”�”}”(hj*ßh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj÷Þubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj9ÞubjC)�”}”(hŒ int datasync”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjCßh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj?ßubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQßh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj?ßubjI)�”}”(hŒdatasync”h]”hŒdatasync”…”�”}”(hj_ßh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj?ßubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj9Þubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÞh²hh³jÞh´M/ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjüÝh²hh³jÞh´M/ubah}”(h]”j÷Ýah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÞh´M/hjùÝh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ6fsync implementation for simple filesystems with flush”h]”hŒ6fsync implementation for simple filesystems with flush”…”�”}”(hj‰ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M/hj†ßh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjùÝh²hh³jÞh´M/ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j¡ßjšj¡ßj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXi**Parameters** ``struct file *file`` file to synchronize ``loff_t start`` start offset in bytes ``loff_t end`` end offset in bytes (inclusive) ``int datasync`` only synchronize essential metadata if true **Description** This function is an fsync handler for simple filesystems. It writes out dirty data, inode (if dirty), and issues a cache flush.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj«ßh]”hŒ Parameters”…”�”}”(hj­ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj©ßubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M3hj¥ßubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ*``struct file *file`` file to synchronize ”h]”(jÊ)�”}”(hŒ``struct file *file``”h]”jÐ)�”}”(hjÊßh]”hŒstruct file *file”…”�”}”(hjÌßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÈßubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M0hjÄßubjæ)�”}”(hhh]”hÌ)�”}”(hŒfile to synchronize”h]”hŒfile to synchronize”…”�”}”(hjãßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jßßh´M0hjàßubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÄßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jßßh´M0hjÁßubjÄ)�”}”(hŒ'``loff_t start`` start offset in bytes ”h]”(jÊ)�”}”(hŒ``loff_t start``”h]”jÐ)�”}”(hjàh]”hŒ loff_t start”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjàubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M1hjýßubjæ)�”}”(hhh]”hÌ)�”}”(hŒstart offset in bytes”h]”hŒstart offset in bytes”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jàh´M1hjàubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjýßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jàh´M1hjÁßubjÄ)�”}”(hŒ/``loff_t end`` end offset in bytes (inclusive) ”h]”(jÊ)�”}”(hŒ``loff_t end``”h]”jÐ)�”}”(hj<àh]”hŒ loff_t end”…”�”}”(hj>àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj:àubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M2hj6àubjæ)�”}”(hhh]”hÌ)�”}”(hŒend offset in bytes (inclusive)”h]”hŒend offset in bytes (inclusive)”…”�”}”(hjUàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jQàh´M2hjRàubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj6àubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jQàh´M2hjÁßubjÄ)�”}”(hŒ=``int datasync`` only synchronize essential metadata if true ”h]”(jÊ)�”}”(hŒ``int datasync``”h]”jÐ)�”}”(hjuàh]”hŒ int datasync”…”�”}”(hjwàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjsàubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M3hjoàubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+only synchronize essential metadata if true”h]”hŒ+only synchronize essential metadata if true”…”�”}”(hjŽàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jŠàh´M3hj‹àubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjoàubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jŠàh´M3hjÁßubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj¥ßubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj°àh]”hŒ Description”…”�”}”(hj²àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj®àubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M5hj¥ßubhÌ)�”}”(hŒThis function is an fsync handler for simple filesystems. It writes out dirty data, inode (if dirty), and issues a cache flush.”h]”hŒThis function is an fsync handler for simple filesystems. It writes out dirty data, inode (if dirty), and issues a cache flush.”…”�”}”(hjÆàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M4hj¥ßubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ&generic_check_addressable (C function)”Œc.generic_check_addressable”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒGint generic_check_addressable (unsigned blocksize_bits, u64 num_blocks)”h]”j)�”}”(hŒFint generic_check_addressable(unsigned blocksize_bits, u64 num_blocks)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjõàh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjñàh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MEubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjñàh²hh³jáh´MEubjC)�”}”(hŒgeneric_check_addressable”h]”jI)�”}”(hŒgeneric_check_addressable”h]”hŒgeneric_check_addressable”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjáubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjñàh²hh³jáh´MEubj=)�”}”(hŒ)(unsigned blocksize_bits, u64 num_blocks)”h]”(jC)�”}”(hŒunsigned blocksize_bits”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj2áh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj.áubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@áh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj.áubjI)�”}”(hŒblocksize_bits”h]”hŒblocksize_bits”…”�”}”(hjNáh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj.áubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj*áubjC)�”}”(hŒu64 num_blocks”h]”(h)�”}”(hhh]”jI)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjjáh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjgáubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jláŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjásbŒc.generic_check_addressable”†”asbuh1hhjcáubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠáh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjcáubjI)�”}”(hŒ num_blocks”h]”hŒ num_blocks”…”�”}”(hj˜áh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjcáubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj*áubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjñàh²hh³jáh´MEubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjíàh²hh³jáh´MEubah}”(h]”jèàah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jáh´MEhjêàh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ#Check addressability of file system”h]”hŒ#Check addressability of file system”…”�”}”(hjÂáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MEhj¿áh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjêàh²hh³jáh´MEubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÚájšjÚáj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX]**Parameters** ``unsigned blocksize_bits`` log of file system block size ``u64 num_blocks`` number of blocks in file system **Description** Determine whether a file system with **num_blocks** blocks (and a block size of 2****blocksize_bits**) is addressable by the sector_t and page cache of the system. Return 0 if so and -EFBIG otherwise.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjäáh]”hŒ Parameters”…”�”}”(hjæáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjâáubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MIhjÞáubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ:``unsigned blocksize_bits`` log of file system block size ”h]”(jÊ)�”}”(hŒ``unsigned blocksize_bits``”h]”jÐ)�”}”(hjâh]”hŒunsigned blocksize_bits”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjâubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MFhjýáubjæ)�”}”(hhh]”hÌ)�”}”(hŒlog of file system block size”h]”hŒlog of file system block size”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jâh´MFhjâubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjýáubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jâh´MFhjúáubjÄ)�”}”(hŒ3``u64 num_blocks`` number of blocks in file system ”h]”(jÊ)�”}”(hŒ``u64 num_blocks``”h]”jÐ)�”}”(hj<âh]”hŒu64 num_blocks”…”�”}”(hj>âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj:âubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MGhj6âubjæ)�”}”(hhh]”hÌ)�”}”(hŒnumber of blocks in file system”h]”hŒnumber of blocks in file system”…”�”}”(hjUâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jQâh´MGhjRâubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj6âubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jQâh´MGhjúáubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÞáubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjwâh]”hŒ Description”…”�”}”(hjyâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjuâubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MIhjÞáubhÌ)�”}”(hŒÉDetermine whether a file system with **num_blocks** blocks (and a block size of 2****blocksize_bits**) is addressable by the sector_t and page cache of the system. Return 0 if so and -EFBIG otherwise.”h]”(hŒ%Determine whether a file system with ”…”�”}”(hj�âh²hh³Nh´Nubj©)�”}”(hŒ**num_blocks**”h]”hŒ num_blocks”…”�”}”(hj•âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj�âubhŒ– blocks (and a block size of 2****blocksize_bits**) is addressable by the sector_t and page cache of the system. Return 0 if so and -EFBIG otherwise.”…”�”}”(hj�âh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MHhjÞáubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œsimple_get_link (C function)”Œc.simple_get_link”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒdconst char * simple_get_link (struct dentry *dentry, struct inode *inode, struct delayed_call *done)”h]”j)�”}”(hŒbconst char *simple_get_link(struct dentry *dentry, struct inode *inode, struct delayed_call *done)”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjÎâh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÊâh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M£ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜâh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÊâh²hh³jÛâh´M£ubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjêâh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÊâh²hh³jÛâh´M£ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøâh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÊâh²hh³jÛâh´M£ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÊâh²hh³jÛâh´M£ubjC)�”}”(hŒsimple_get_link”h]”jI)�”}”(hŒsimple_get_link”h]”hŒsimple_get_link”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjãubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÊâh²hh³jÛâh´M£ubj=)�”}”(hŒG(struct dentry *dentry, struct inode *inode, struct delayed_call *done)”h]”(jC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj3ãh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj/ãubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@ãh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj/ãubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjQãh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjNãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jSãŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjãsbŒc.simple_get_link”†”asbuh1hhj/ãubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqãh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj/ãubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj/ãubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjŒãh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj/ãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj+ãubjC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¥ãh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¡ãubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²ãh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¡ãubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjÃãh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÀãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÅãŒmodname”NŒ classname”Njj )�”}”j ]”jmãŒc.simple_get_link”†”asbuh1hhj¡ãubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáãh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¡ãubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjïãh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¡ãubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjüãh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¡ãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj+ãubjC)�”}”(hŒstruct delayed_call *done”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjäubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"äh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjäubh)�”}”(hhh]”jI)�”}”(hŒ delayed_call”h]”hŒ delayed_call”…”�”}”(hj3äh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj0äubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j5äŒmodname”NŒ classname”Njj )�”}”j ]”jmãŒc.simple_get_link”†”asbuh1hhjäubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQäh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjäubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj_äh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjäubjI)�”}”(hŒdone”h]”hŒdone”…”�”}”(hjläh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjäubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj+ãubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÊâh²hh³jÛâh´M£ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÆâh²hh³jÛâh´M£ubah}”(h]”jÁâah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÛâh´M£hjÃâh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ3generic helper to get the target of "fast" symlinks”h]”hŒ7generic helper to get the target of “fastâ€� symlinks”…”�”}”(hj–äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M£hj“äh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÃâh²hh³jÛâh´M£ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j®äjšj®äj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX+**Parameters** ``struct dentry *dentry`` not used here ``struct inode *inode`` the symlink inode ``struct delayed_call *done`` not used here **Description** Generic helper for filesystems to use for symlink inodes where a pointer to the symlink target is stored in ->i_link. NOTE: this isn't normally called, since as an optimization the path lookup code uses any non-NULL ->i_link directly, without calling ->get_link(). But ->get_link() still must be set, to mark the inode_operations as being for a symlink. **Return** the symlink target”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj¸äh]”hŒ Parameters”…”�”}”(hjºäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¶äubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M§hj²äubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ(``struct dentry *dentry`` not used here ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hj×äh]”hŒstruct dentry *dentry”…”�”}”(hjÙäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÕäubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M¤hjÑäubjæ)�”}”(hhh]”hÌ)�”}”(hŒ not used here”h]”hŒ not used here”…”�”}”(hjðäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jìäh´M¤hjíäubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÑäubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jìäh´M¤hjÎäubjÄ)�”}”(hŒ*``struct inode *inode`` the symlink inode ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjåh]”hŒstruct inode *inode”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjåubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M¥hj åubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe symlink inode”h]”hŒthe symlink inode”…”�”}”(hj)åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j%åh´M¥hj&åubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj åubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j%åh´M¥hjÎäubjÄ)�”}”(hŒ,``struct delayed_call *done`` not used here ”h]”(jÊ)�”}”(hŒ``struct delayed_call *done``”h]”jÐ)�”}”(hjIåh]”hŒstruct delayed_call *done”…”�”}”(hjKåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjGåubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M¦hjCåubjæ)�”}”(hhh]”hÌ)�”}”(hŒ not used here”h]”hŒ not used here”…”�”}”(hjbåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j^åh´M¦hj_åubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjCåubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j^åh´M¦hjÎäubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj²äubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj„åh]”hŒ Description”…”�”}”(hj†åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‚åubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M¨hj²äubhÌ)�”}”(hXcGeneric helper for filesystems to use for symlink inodes where a pointer to the symlink target is stored in ->i_link. NOTE: this isn't normally called, since as an optimization the path lookup code uses any non-NULL ->i_link directly, without calling ->get_link(). But ->get_link() still must be set, to mark the inode_operations as being for a symlink.”h]”hXeGeneric helper for filesystems to use for symlink inodes where a pointer to the symlink target is stored in ->i_link. NOTE: this isn’t normally called, since as an optimization the path lookup code uses any non-NULL ->i_link directly, without calling ->get_link(). But ->get_link() still must be set, to mark the inode_operations as being for a symlink.”…”�”}”(hjšåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M§hj²äubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj«åh]”hŒReturn”…”�”}”(hj­åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj©åubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M­hj²äubhÌ)�”}”(hŒthe symlink target”h]”hŒthe symlink target”…”�”}”(hjÁåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M®hj²äubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ!generic_ci_d_compare (C function)”Œc.generic_ci_d_compare”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒrint generic_ci_d_compare (const struct dentry *dentry, unsigned int len, const char *str, const struct qstr *name)”h]”j)�”}”(hŒqint generic_ci_d_compare(const struct dentry *dentry, unsigned int len, const char *str, const struct qstr *name)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjðåh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjìåh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿåh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjìåh²hh³jþåh´MubjC)�”}”(hŒgeneric_ci_d_compare”h]”jI)�”}”(hŒgeneric_ci_d_compare”h]”hŒgeneric_ci_d_compare”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj æubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjìåh²hh³jþåh´Mubj=)�”}”(hŒY(const struct dentry *dentry, unsigned int len, const char *str, const struct qstr *name)”h]”(jC)�”}”(hŒconst struct dentry *dentry”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj-æh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj)æubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:æh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj)æubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjHæh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj)æubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUæh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj)æubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjfæh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjcæubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jhæŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjæsbŒc.generic_ci_d_compare”†”asbuh1hhj)æubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†æh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj)æubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj”æh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj)æubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj¡æh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj)æubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj%æubjC)�”}”(hŒunsigned int len”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjºæh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¶æubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈæh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¶æubj�)�”}”(hŒint”h]”hŒint”…”�”}”(hjÖæh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¶æubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäæh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¶æubjI)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjòæh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¶æubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj%æubjC)�”}”(hŒconst char *str”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj çh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjçubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjçubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj&çh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjçubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4çh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjçubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjBçh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjçubjI)�”}”(hŒstr”h]”hŒstr”…”�”}”(hjOçh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjçubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj%æubjC)�”}”(hŒconst struct qstr *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjhçh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjdçubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuçh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjdçubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjƒçh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjdçubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�çh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjdçubh)�”}”(hhh]”jI)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(hj¡çh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjžçubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j£çŒmodname”NŒ classname”Njj )�”}”j ]”j‚æŒc.generic_ci_d_compare”†”asbuh1hhjdçubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿çh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjdçubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÍçh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjdçubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hjÚçh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjdçubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj%æubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjìåh²hh³jþåh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjèåh²hh³jþåh´Mubah}”(h]”jãåah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jþåh´Mhjååh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒah"]”h$]”h&]”uh1j1hjléh²hh³j~éh´M9ubjC)�”}”(hŒgeneric_ci_d_hash”h]”jI)�”}”(hŒgeneric_ci_d_hash”h]”hŒgeneric_ci_d_hash”…”�”}”(hj‘éh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�éubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjléh²hh³j~éh´M9ubj=)�”}”(hŒ/(const struct dentry *dentry, struct qstr *str)”h]”(jC)�”}”(hŒconst struct dentry *dentry”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj­éh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj©éubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºéh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj©éubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÈéh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj©éubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕéh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj©éubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjæéh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjãéubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jèéŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj“ésbŒc.generic_ci_d_hash”†”asbuh1hhj©éubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj©éubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj©éubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj!êh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj©éubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¥éubjC)�”}”(hŒstruct qstr *str”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj:êh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj6êubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGêh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj6êubh)�”}”(hhh]”jI)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(hjXêh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjUêubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jZêŒmodname”NŒ classname”Njj )�”}”j ]”jêŒc.generic_ci_d_hash”†”asbuh1hhj6êubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvêh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj6êubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj„êh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj6êubjI)�”}”(hŒstr”h]”hŒstr”…”�”}”(hj‘êh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj6êubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¥éubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjléh²hh³j~éh´M9ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjhéh²hh³j~éh´M9ubah}”(h]”jcéah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j~éh´M9hjeéh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ9generic d_hash implementation for casefolding filesystems”h]”hŒ9generic d_hash implementation for casefolding filesystems”…”�”}”(hj»êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M9hj¸êh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjeéh²hh³j~éh´M9ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÓêjšjÓêj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hŒÛ**Parameters** ``const struct dentry *dentry`` dentry of the parent directory ``struct qstr *str`` qstr of name whose hash we should fill in **Return** 0 if hash was successful or unchanged, and -EINVAL on error”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÝêh]”hŒ Parameters”…”�”}”(hjßêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÛêubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M=hj×êubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ?``const struct dentry *dentry`` dentry of the parent directory ”h]”(jÊ)�”}”(hŒ``const struct dentry *dentry``”h]”jÐ)�”}”(hjüêh]”hŒconst struct dentry *dentry”…”�”}”(hjþêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjúêubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M:hjöêubjæ)�”}”(hhh]”hÌ)�”}”(hŒdentry of the parent directory”h]”hŒdentry of the parent directory”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jëh´M:hjëubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjöêubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jëh´M:hjóêubjÄ)�”}”(hŒ?``struct qstr *str`` qstr of name whose hash we should fill in ”h]”(jÊ)�”}”(hŒ``struct qstr *str``”h]”jÐ)�”}”(hj5ëh]”hŒstruct qstr *str”…”�”}”(hj7ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj3ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M;hj/ëubjæ)�”}”(hhh]”hÌ)�”}”(hŒ)qstr of name whose hash we should fill in”h]”hŒ)qstr of name whose hash we should fill in”…”�”}”(hjNëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jJëh´M;hjKëubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj/ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jJëh´M;hjóêubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj×êubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjpëh]”hŒReturn”…”�”}”(hjrëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjnëubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M=hj×êubhÌ)�”}”(hŒ;0 if hash was successful or unchanged, and -EINVAL on error”h]”hŒ;0 if hash was successful or unchanged, and -EINVAL on error”…”�”}”(hj†ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M=hj×êubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œgeneric_ci_match (C function)”Œc.generic_ci_match”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒŽint generic_ci_match (const struct inode *parent, const struct qstr *name, const struct qstr *folded_name, const u8 *de_name, u32 de_name_len)”h]”j)�”}”(hŒ�int generic_ci_match(const struct inode *parent, const struct qstr *name, const struct qstr *folded_name, const u8 *de_name, u32 de_name_len)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjµëh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj±ëh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MYubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄëh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj±ëh²hh³jÃëh´MYubjC)�”}”(hŒgeneric_ci_match”h]”jI)�”}”(hŒgeneric_ci_match”h]”hŒgeneric_ci_match”…”�”}”(hjÖëh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÒëubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj±ëh²hh³jÃëh´MYubj=)�”}”(hŒy(const struct inode *parent, const struct qstr *name, const struct qstr *folded_name, const u8 *de_name, u32 de_name_len)”h]”(jC)�”}”(hŒconst struct inode *parent”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjòëh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjîëubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿëh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjîëubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj ìh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjîëubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjîëubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj+ìh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj(ìubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j-ìŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjØësbŒc.generic_ci_match”†”asbuh1hhjîëubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKìh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjîëubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjYìh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjîëubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjfìh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjîëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjêëubjC)�”}”(hŒconst struct qstr *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj{ìubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒìh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj{ìubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjšìh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj{ìubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§ìh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj{ìubh)�”}”(hhh]”jI)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(hj¸ìh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjµìubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jºìŒmodname”NŒ classname”Njj )�”}”j ]”jGìŒc.generic_ci_match”†”asbuh1hhj{ìubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖìh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj{ìubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjäìh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj{ìubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hjñìh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj{ìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjêëubjC)�”}”(hŒconst struct qstr *folded_name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj íh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjíubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjíubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj%íh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjíubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2íh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjíubh)�”}”(hhh]”jI)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(hjCíh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj@íubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jEíŒmodname”NŒ classname”Njj )�”}”j ]”jGìŒc.generic_ci_match”†”asbuh1hhjíubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaíh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjíubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjoíh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjíubjI)�”}”(hŒ folded_name”h]”hŒ folded_name”…”�”}”(hj|íh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjíubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjêëubjC)�”}”(hŒconst u8 *de_name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj•íh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj‘íubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢íh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‘íubh)�”}”(hhh]”jI)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj³íh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj°íubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jµíŒmodname”NŒ classname”Njj )�”}”j ]”jGìŒc.generic_ci_match”†”asbuh1hhj‘íubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑíh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‘íubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjßíh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj‘íubjI)�”}”(hŒde_name”h]”hŒde_name”…”�”}”(hjìíh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‘íubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjêëubjC)�”}”(hŒu32 de_name_len”h]”(h)�”}”(hhh]”jI)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjîubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j îŒmodname”NŒ classname”Njj )�”}”j ]”jGìŒc.generic_ci_match”†”asbuh1hhjîubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&îh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjîubjI)�”}”(hŒ de_name_len”h]”hŒ de_name_len”…”�”}”(hj4îh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjîubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjêëubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj±ëh²hh³jÃëh´MYubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj­ëh²hh³jÃëh´MYubah}”(h]”j¨ëah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÃëh´MYhjªëh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ´Match a name (case-insensitively) with a dirent. This is a filesystem helper for comparison with directory entries. generic_ci_d_compare should be used in VFS' ->d_compare instead.”h]”hŒ¶Match a name (case-insensitively) with a dirent. This is a filesystem helper for comparison with directory entries. generic_ci_d_compare should be used in VFS’ ->d_compare instead.”…”�”}”(hj^îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MYhj[îh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjªëh²hh³jÃëh´MYubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jvîjšjvîj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXQ**Parameters** ``const struct inode *parent`` Inode of the parent of the dirent under comparison ``const struct qstr *name`` name under lookup. ``const struct qstr *folded_name`` Optional pre-folded name under lookup ``const u8 *de_name`` Dirent name. ``u32 de_name_len`` dirent name length. **Description** Test whether a case-insensitive directory entry matches the filename being searched. If **folded_name** is provided, it is used instead of recalculating the casefold of **name**. **Return** > 0 if the directory entry matches, 0 if it doesn't match, or < 0 on error.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj€îh]”hŒ Parameters”…”�”}”(hj‚îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj~îubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M]hjzîubj¿)�”}”(hhh]”(jÄ)�”}”(hŒR``const struct inode *parent`` Inode of the parent of the dirent under comparison ”h]”(jÊ)�”}”(hŒ``const struct inode *parent``”h]”jÐ)�”}”(hjŸîh]”hŒconst struct inode *parent”…”�”}”(hj¡îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj�îubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M]hj™îubjæ)�”}”(hhh]”hÌ)�”}”(hŒ2Inode of the parent of the dirent under comparison”h]”hŒ2Inode of the parent of the dirent under comparison”…”�”}”(hj¸îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j´îh´M]hjµîubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj™îubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j´îh´M]hj–îubjÄ)�”}”(hŒ/``const struct qstr *name`` name under lookup. ”h]”(jÊ)�”}”(hŒ``const struct qstr *name``”h]”jÐ)�”}”(hjØîh]”hŒconst struct qstr *name”…”�”}”(hjÚîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÖîubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M^hjÒîubjæ)�”}”(hhh]”hÌ)�”}”(hŒname under lookup.”h]”hŒname under lookup.”…”�”}”(hjñîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jíîh´M^hjîîubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÒîubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jíîh´M^hj–îubjÄ)�”}”(hŒI``const struct qstr *folded_name`` Optional pre-folded name under lookup ”h]”(jÊ)�”}”(hŒ"``const struct qstr *folded_name``”h]”jÐ)�”}”(hjïh]”hŒconst struct qstr *folded_name”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjïubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M_hj ïubjæ)�”}”(hhh]”hÌ)�”}”(hŒ%Optional pre-folded name under lookup”h]”hŒ%Optional pre-folded name under lookup”…”�”}”(hj*ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j&ïh´M_hj'ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j&ïh´M_hj–îubjÄ)�”}”(hŒ#``const u8 *de_name`` Dirent name. ”h]”(jÊ)�”}”(hŒ``const u8 *de_name``”h]”jÐ)�”}”(hjJïh]”hŒconst u8 *de_name”…”�”}”(hjLïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjHïubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M`hjDïubjæ)�”}”(hhh]”hÌ)�”}”(hŒ Dirent name.”h]”hŒ Dirent name.”…”�”}”(hjcïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j_ïh´M`hj`ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjDïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j_ïh´M`hj–îubjÄ)�”}”(hŒ(``u32 de_name_len`` dirent name length. ”h]”(jÊ)�”}”(hŒ``u32 de_name_len``”h]”jÐ)�”}”(hjƒïh]”hŒu32 de_name_len”…”�”}”(hj…ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj�ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Mahj}ïubjæ)�”}”(hhh]”hÌ)�”}”(hŒdirent name length.”h]”hŒdirent name length.”…”�”}”(hjœïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j˜ïh´Mahj™ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj}ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j˜ïh´Mahj–îubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjzîubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj¾ïh]”hŒ Description”…”�”}”(hjÀïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¼ïubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MchjzîubhÌ)�”}”(hŒ³Test whether a case-insensitive directory entry matches the filename being searched. If **folded_name** is provided, it is used instead of recalculating the casefold of **name**.”h]”(hŒYTest whether a case-insensitive directory entry matches the filename being searched. If ”…”�”}”(hjÔïh²hh³Nh´Nubj©)�”}”(hŒ**folded_name**”h]”hŒ folded_name”…”�”}”(hjÜïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÔïubhŒB is provided, it is used instead of recalculating the casefold of ”…”�”}”(hjÔïh²hh³Nh´Nubj©)�”}”(hŒ**name**”h]”hŒname”…”�”}”(hjîïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÔïubhŒ.”…”�”}”(hjÔïh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MbhjzîubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj ðh]”hŒReturn”…”�”}”(hj ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjðubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MfhjzîubhÌ)�”}”(hŒK> 0 if the directory entry matches, 0 if it doesn't match, or < 0 on error.”h]”hŒM> 0 if the directory entry matches, 0 if it doesn’t match, or < 0 on error.”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Mghjzîubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ!generic_set_sb_d_ops (C function)”Œc.generic_set_sb_d_ops”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ2void generic_set_sb_d_ops (struct super_block *sb)”h]”j)�”}”(hŒ1void generic_set_sb_d_ops(struct super_block *sb)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjNðh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjJðh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Mªubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]ðh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjJðh²hh³j\ðh´MªubjC)�”}”(hŒgeneric_set_sb_d_ops”h]”jI)�”}”(hŒgeneric_set_sb_d_ops”h]”hŒgeneric_set_sb_d_ops”…”�”}”(hjoðh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjkðubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjJðh²hh³j\ðh´Mªubj=)�”}”(hŒ(struct super_block *sb)”h]”jC)�”}”(hŒstruct super_block *sb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj‹ðh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj‡ðubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜ðh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‡ðubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hj©ðh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¦ðubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j«ðŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjqðsbŒc.generic_set_sb_d_ops”†”asbuh1hhj‡ðubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉðh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‡ðubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj×ðh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj‡ðubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hjäðh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‡ðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjƒðubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjJðh²hh³j\ðh´Mªubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjFðh²hh³j\ðh´Mªubah}”(h]”jAðah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j\ðh´MªhjCðh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒYhelper for choosing the set of filesystem-wide dentry operations for the enabled features”h]”hŒYhelper for choosing the set of filesystem-wide dentry operations for the enabled features”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Mªhj ñh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjCðh²hh³j\ðh´Mªubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j&ñjšj&ñj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX�**Parameters** ``struct super_block *sb`` superblock to be configured **Description** Filesystems supporting casefolding and/or fscrypt can call this helper at mount-time to configure default dentry_operations to the best set of dentry operations required for the enabled features. The helper must be called after these have been configured, but before the root dentry is created.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj0ñh]”hŒ Parameters”…”�”}”(hj2ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj.ñubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M®hj*ñubj¿)�”}”(hhh]”jÄ)�”}”(hŒ7``struct super_block *sb`` superblock to be configured ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hjOñh]”hŒstruct super_block *sb”…”�”}”(hjQñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjMñubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M¬hjIñubjæ)�”}”(hhh]”hÌ)�”}”(hŒsuperblock to be configured”h]”hŒsuperblock to be configured”…”�”}”(hjhñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jdñh´M¬hjeñubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjIñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jdñh´M¬hjFñubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj*ñubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjŠñh]”hŒ Description”…”�”}”(hjŒñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjˆñubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M®hj*ñubhÌ)�”}”(hX&Filesystems supporting casefolding and/or fscrypt can call this helper at mount-time to configure default dentry_operations to the best set of dentry operations required for the enabled features. The helper must be called after these have been configured, but before the root dentry is created.”•h]”hX&Filesystems supporting casefolding and/or fscrypt can call this helper at mount-time to configure default dentry_operations to the best set of dentry operations required for the enabled features. The helper must be called after these have been configured, but before the root dentry is created.”…”�”}”(hj ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M­hj*ñubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ%inode_maybe_inc_iversion (C function)”Œc.inode_maybe_inc_iversion”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ?bool inode_maybe_inc_iversion (struct inode *inode, bool force)”h]”j)�”}”(hŒ>bool inode_maybe_inc_iversion(struct inode *inode, bool force)”h]”(j�)�”}”(hj„h]”hŒbool”…”�”}”(hjÏñh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjËñh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MÆubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝñh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjËñh²hh³jÜñh´MÆubjC)�”}”(hŒinode_maybe_inc_iversion”h]”jI)�”}”(hŒinode_maybe_inc_iversion”h]”hŒinode_maybe_inc_iversion”…”�”}”(hjïñh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjëñubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjËñh²hh³jÜñh´MÆubj=)�”}”(hŒ!(struct inode *inode, bool force)”h]”(jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj òh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjòubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjòubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj)òh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj&òubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j+òŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjññsbŒc.inode_maybe_inc_iversion”†”asbuh1hhjòubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIòh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjòubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjWòh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjòubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjdòh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjòubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjòubjC)�”}”(hŒ bool force”h]”(j�)�”}”(hj„h]”hŒbool”…”�”}”(hj}òh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjyòubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠòh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjyòubjI)�”}”(hŒforce”h]”hŒforce”…”�”}”(hj˜òh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjyòubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjòubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjËñh²hh³jÜñh´MÆubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÇñh²hh³jÜñh´MÆubah}”(h]”jÂñah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÜñh´MÆhjÄñh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒincrements i_version”h]”hŒincrements i_version”…”�”}”(hjÂòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MÆhj¿òh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÄñh²hh³jÜñh´MÆubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÚòjšjÚòj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXT**Parameters** ``struct inode *inode`` inode with the i_version that should be updated ``bool force`` increment the counter even if it's not necessary? **Description** Every time the inode is modified, the i_version field must be seen to have changed by any observer. If "force" is set or the QUERIED flag is set, then ensure that we increment the value, and clear the queried flag. In the common case where neither is set, then we can return "false" without updating i_version. If this function returns false, and no other metadata has changed, then we can avoid logging the metadata.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjäòh]”hŒ Parameters”…”�”}”(hjæòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjâòubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MÊhjÞòubj¿)�”}”(hhh]”(jÄ)�”}”(hŒH``struct inode *inode`` inode with the i_version that should be updated ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjóh]”hŒstruct inode *inode”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjóubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MÇhjýòubjæ)�”}”(hhh]”hÌ)�”}”(hŒ/inode with the i_version that should be updated”h]”hŒ/inode with the i_version that should be updated”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jóh´MÇhjóubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjýòubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jóh´MÇhjúòubjÄ)�”}”(hŒA``bool force`` increment the counter even if it's not necessary? ”h]”(jÊ)�”}”(hŒ``bool force``”h]”jÐ)�”}”(hj<óh]”hŒ bool force”…”�”}”(hj>óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj:óubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MÈhj6óubjæ)�”}”(hhh]”hÌ)�”}”(hŒ1increment the counter even if it's not necessary?”h]”hŒ3increment the counter even if it’s not necessary?”…”�”}”(hjUóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jQóh´MÈhjRóubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj6óubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jQóh´MÈhjúòubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÞòubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjwóh]”hŒ Description”…”�”}”(hjyóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjuóubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MÊhjÞòubhÌ)�”}”(hŒcEvery time the inode is modified, the i_version field must be seen to have changed by any observer.”h]”hŒcEvery time the inode is modified, the i_version field must be seen to have changed by any observer.”…”�”}”(hj�óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MÉhjÞòubhÌ)�”}”(hŒrIf "force" is set or the QUERIED flag is set, then ensure that we increment the value, and clear the queried flag.”h]”hŒvIf “forceâ€� is set or the QUERIED flag is set, then ensure that we increment the value, and clear the queried flag.”…”�”}”(hjœóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MÌhjÞòubhÌ)�”}”(hŒ_In the common case where neither is set, then we can return "false" without updating i_version.”h]”hŒcIn the common case where neither is set, then we can return “falseâ€� without updating i_version.”…”�”}”(hj«óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MÏhjÞòubhÌ)�”}”(hŒjIf this function returns false, and no other metadata has changed, then we can avoid logging the metadata.”h]”hŒjIf this function returns false, and no other metadata has changed, then we can avoid logging the metadata.”…”�”}”(hjºóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MÒhjÞòubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ!inode_query_iversion (C function)”Œc.inode_query_iversion”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ.u64 inode_query_iversion (struct inode *inode)”h]”j)�”}”(hŒ-u64 inode_query_iversion(struct inode *inode)”h]”(h)�”}”(hhh]”jI)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjìóh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjéóubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jîóŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒinode_query_iversion”sbŒc.inode_query_iversion”†”asbuh1hhjåóh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Mùubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjåóh²hh³j ôh´MùubjC)�”}”(hŒinode_query_iversion”h]”jI)�”}”(hj ôh]”hŒinode_query_iversion”…”�”}”(hj ôh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjôubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjåóh²hh³j ôh´Mùubj=)�”}”(hŒ(struct inode *inode)”h]”jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj;ôh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj7ôubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHôh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj7ôubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjYôh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjVôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j[ôŒmodname”NŒ classname”Njj )�”}”j ]”jôŒc.inode_query_iversion”†”asbuh1hhj7ôubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwôh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj7ôubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj…ôh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj7ôubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj’ôh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj7ôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj3ôubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjåóh²hh³j ôh´Mùubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjáóh²hh³j ôh´Mùubah}”(h]”jÜóah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j ôh´MùhjÞóh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒread i_version for later use”h]”hŒread i_version for later use”…”�”}”(hj¼ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Mùhj¹ôh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÞóh²hh³j ôh´Mùubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÔôjšjÔôj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX:**Parameters** ``struct inode *inode`` inode from which i_version should be read **Description** Read the inode i_version counter. This should be used by callers that wish to store the returned i_version for later comparison. This will guarantee that a later query of the i_version will result in a different value if anything has changed. In this implementation, we fetch the current value, set the QUERIED flag and then try to swap it into place with a cmpxchg, if it wasn't already set. If that fails, we try again with the newly fetched value from the cmpxchg.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÞôh]”hŒ Parameters”…”�”}”(hjàôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÜôubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MýhjØôubj¿)�”}”(hhh]”jÄ)�”}”(hŒB``struct inode *inode`` inode from which i_version should be read ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjýôh]”hŒstruct inode *inode”…”�”}”(hjÿôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjûôubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Múhj÷ôubjæ)�”}”(hhh]”hÌ)�”}”(hŒ)inode from which i_version should be read”h]”hŒ)inode from which i_version should be read”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jõh´Múhjõubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj÷ôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jõh´Múhjôôubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjØôubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj8õh]”hŒ Description”…”�”}”(hj:õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj6õubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MühjØôubhÌ)�”}”(hŒòRead the inode i_version counter. This should be used by callers that wish to store the returned i_version for later comparison. This will guarantee that a later query of the i_version will result in a different value if anything has changed.”h]”hŒòRead the inode i_version counter. This should be used by callers that wish to store the returned i_version for later comparison. This will guarantee that a later query of the i_version will result in a different value if anything has changed.”…”�”}”(hjNõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MûhjØôubhÌ)�”}”(hŒàIn this implementation, we fetch the current value, set the QUERIED flag and then try to swap it into place with a cmpxchg, if it wasn't already set. If that fails, we try again with the newly fetched value from the cmpxchg.”h]”hŒâIn this implementation, we fetch the current value, set the QUERIED flag and then try to swap it into place with a cmpxchg, if it wasn’t already set. If that fails, we try again with the newly fetched value from the cmpxchg.”…”�”}”(hj]õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MhjØôubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ!simple_inode_init_ts (C function)”Œc.simple_inode_init_ts”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒah"]”h$]”h&]”uh1j1hjˆõh²hh³j™õh´MIubh)�”}”(hhh]”jI)�”}”(hŒ timespec64”h]”hŒ timespec64”…”�”}”(hj«õh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¨õubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j­õŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒsimple_inode_init_ts”sbŒc.simple_inode_init_ts”†”asbuh1hhjˆõh²hh³j™õh´MIubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌõh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjˆõh²hh³j™õh´MIubjC)�”}”(hŒsimple_inode_init_ts”h]”jI)�”}”(hjÉõh]”hŒsimple_inode_init_ts”…”�”}”(hjÞõh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÚõubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjˆõh²hh³j™õh´MIubj=)�”}”(hŒ(struct inode *inode)”h]”jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjùõh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjõõubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjõõubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjöubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jöŒmodname”NŒ classname”Njj )�”}”j ]”jÇõŒc.simple_inode_init_ts”†”asbuh1hhjõõubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5öh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjõõubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjCöh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjõõubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjPöh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjõõubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjñõubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjˆõh²hh³j™õh´MIubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj„õh²hh³j™õh´MIubah}”(h]”jõah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j™õh´MIhj�õh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ)initialize the timestamps for a new inode”h]”hŒ)initialize the timestamps for a new inode”…”�”}”(hjzöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MIhjwöh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj�õh²hh³j™õh´MIubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j’öjšj’öj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hŒÂ**Parameters** ``struct inode *inode`` inode to be initialized **Description** When a new inode is created, most filesystems set the timestamps to the current time. Add a helper to do this.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjœöh]”hŒ Parameters”…”�”}”(hjžöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjšöubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MMhj–öubj¿)�”}”(hhh]”jÄ)�”}”(hŒ0``struct inode *inode`` inode to be initialized ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj»öh]”hŒstruct inode *inode”…”�”}”(hj½öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¹öubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MJhjµöubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode to be initialized”h]”hŒinode to be initialized”…”�”}”(hjÔöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÐöh´MJhjÑöubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjµöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÐöh´MJhj²öubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj–öubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjööh]”hŒ Description”…”�”}”(hjøöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjôöubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MLhj–öubhÌ)�”}”(hŒnWhen a new inode is created, most filesystems set the timestamps to the current time. Add a helper to do this.”h]”hŒnWhen a new inode is created, most filesystems set the timestamps to the current time. Add a helper to do this.”…”�”}”(hj ÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MKhj–öubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ"simple_start_creating (C function)”Œc.simple_start_creating”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒOstruct dentry * simple_start_creating (struct dentry *parent, const char *name)”h]”j)�”}”(hŒMstruct dentry *simple_start_creating(struct dentry *parent, const char *name)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj;÷h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj7÷h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Môubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI÷h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj7÷h²hh³jH÷h´Môubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjZ÷h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjW÷ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j\÷Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒsimple_start_creating”sbŒc.simple_start_creating”†”asbuh1hhj7÷h²hh³jH÷h´Môubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{÷h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj7÷h²hh³jH÷h´Môubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj‰÷h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj7÷h²hh³jH÷h´MôubjC)�”}”(hŒsimple_start_creating”h]”jI)�”}”(hjx÷h]”hŒsimple_start_creating”…”�”}”(hjš÷h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj–÷ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj7÷h²hh³jH÷h´Môubj=)�”}”(hŒ)(struct dentry *parent, const char *name)”h]”(jC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjµ÷h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj±÷ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂ÷h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj±÷ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjÓ÷h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÐ÷ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÕ÷Œmodname”NŒ classname”Njj )�”}”j ]”jv÷Œc.simple_start_creating”†”asbuh1hhj±÷ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ÷h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj±÷ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÿ÷h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj±÷ubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hj øh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj±÷ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj­÷ubjC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj%øh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj!øubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2øh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj!øubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj@øh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj!øubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNøh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj!øubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj\øh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj!øubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hjiøh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj!øubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj­÷ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj7÷h²hh³jH÷h´Môubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj3÷h²hh³jH÷h´Môubah}”(h]”j.÷ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jH÷h´Môhj0÷h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒprepare to create a given name”h]”hŒprepare to create a given name”…”�”}”(hj“øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Môhj�øh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj0÷h²hh³jH÷h´Môubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j«øjšj«øj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX**Parameters** ``struct dentry *parent`` directory in which to prepare to create the name ``const char *name`` the name to be created **Description** Required lock is taken and a lookup in performed prior to creating an object in a directory. No permission checking is performed. **Return** a negative dentry on which vfs_create() or similar may be attempted, or an error.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjµøh]”hŒ Parameters”…”�”}”(hj·øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj³øubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Møhj¯øubj¿)�”}”(hhh]”(jÄ)�”}”(hŒK``struct dentry *parent`` directory in which to prepare to create the name ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hjÔøh]”hŒstruct dentry *parent”…”�”}”(hjÖøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÒøubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MõhjÎøubjæ)�”}”(hhh]”hÌ)�”}”(hŒ0directory in which to prepare to create the name”h]”hŒ0directory in which to prepare to create the name”…”�”}”(hjíøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jéøh´Mõhjêøubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÎøubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jéøh´MõhjËøubjÄ)�”}”(hŒ,``const char *name`` the name to be created ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hj ùh]”hŒconst char *name”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Möhjùubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe name to be created”h]”hŒthe name to be created”…”�”}”(hj&ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j"ùh´Möhj#ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j"ùh´MöhjËøubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj¯øubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjHùh]”hŒ Description”…”�”}”(hjJùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjFùubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Møhj¯øubhÌ)�”}”(hŒ‚Required lock is taken and a lookup in performed prior to creating an object in a directory. No permission checking is performed.”h]”hŒ‚Required lock is taken and a lookup in performed prior to creating an object in a directory. No permission checking is performed.”…”�”}”(hj^ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M÷hj¯øubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjoùh]”hŒReturn”…”�”}”(hjqùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjmùubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Múhj¯øubhÌ)�”}”(hŒQa negative dentry on which vfs_create() or similar may be attempted, or an error.”h]”hŒQa negative dentry on which vfs_create() or similar may be attempted, or an error.”…”�”}”(hj…ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Mûhj¯øubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œposix_acl_chmod (C function)”Œc.posix_acl_chmod”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒYint posix_acl_chmod (const struct mnt_idmap *idmap, struct dentry *dentry, umode_t mode)”h]”j)�”}”(hŒWint posix_acl_chmod(const struct mnt_idmap *idmap, struct dentry *dentry, umode_t mode)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj´ùh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj°ùh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´MVubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃùh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj°ùh²hh³jÂùh´MVubjC)�”}”(hŒposix_acl_chmod”h]”jI)�”}”(hŒposix_acl_chmod”h]”hŒposix_acl_chmod”…”�”}”(hjÕùh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÑùubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj°ùh²hh³jÂùh´MVubj=)�”}”(hŒD(const struct mnt_idmap *idmap, struct dentry *dentry, umode_t mode)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjñùh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjíùubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþùh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjíùubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj úh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjíùubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjíùubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hj*úh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj'úubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j,úŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj×ùsbŒc.posix_acl_chmod”†”asbuh1hhjíùubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJúh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjíùubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjXúh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjíùubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hjeúh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjíùubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjéùubjC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj~úh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjzúubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹úh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjzúubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjœúh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj™úubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jžúŒmodname”NŒ classname”Njj )�”}”j ]”jFúŒc.posix_acl_chmod”†”asbuh1hhjzúubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºúh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjzúubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÈúh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjzúubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjÕúh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjzúubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjéùubjC)�”}”(hŒ umode_t mode”h]”(h)�”}”(hhh]”jI)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hjñúh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjîúubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jóúŒmodname”NŒ classname”Njj )�”}”j ]”jFúŒc.posix_acl_chmod”†”asbuh1hhjêúubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjêúubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjêúubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjéùubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj°ùh²hh³jÂùh´MVubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj¬ùh²hh³jÂùh´MVubah}”(h]”j§ùah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÂùh´MVhj©ùh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒchmod a posix acl”h]”hŒchmod a posix acl”…”�”}”(hjGûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´MVhjDûh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj©ùh²hh³jÂùh´MVubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j_ûjšj_ûj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX)**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount **inode** was found from ``struct dentry *dentry`` dentry to check permissions on ``umode_t mode`` the new mode of **inode** **Description** If the dentry has been found through an idmapped mount the idmap of the vfsmount must be passed through **idmap**. This function will then take care to map the inode according to **idmap** before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass **nop_mnt_idmap**.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjiûh]”hŒ Parameters”…”�”}”(hjkûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjgûubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´MZhjcûubj¿)�”}”(hhh]”(jÄ)�”}”(hŒN``const struct mnt_idmap *idmap`` idmap of the mount **inode** was found from ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjˆûh]”hŒconst struct mnt_idmap *idmap”…”�”}”(hjŠûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj†ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´MXhj‚ûubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+idmap of the mount **inode** was found from”h]”(hŒidmap of the mount ”…”�”}”(hj¡ûh²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hj©ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¡ûubhŒ was found from”…”�”}”(hj¡ûh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�ûh´MXhjžûubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj‚ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j�ûh´MXhjûubjÄ)�”}”(hŒ9``struct dentry *dentry`` dentry to check permissions on ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hjÓûh]”hŒstruct dentry *dentry”…”�”}”(hjÕûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÑûubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´MYhjÍûubjæ)�”}”(hhh]”hÌ)�”}”(hŒdentry to check permissions on”h]”hŒdentry to check permissions on”…”�”}”(hjìûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jèûh´MYhjéûubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÍûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jèûh´MYhjûubjÄ)�”}”(hŒ+``umode_t mode`` the new mode of **inode** ”h]”(jÊ)�”}”(hŒ``umode_t mode``”h]”jÐ)�”}”(hj üh]”hŒ umode_t mode”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj üubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´MZhjüubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe new mode of **inode**”h]”(hŒthe new mode of ”…”�”}”(hj%üh²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hj-üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj%üubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j!üh´MZhj"üubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjüubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j!üh´MZhjûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjcûubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjUüh]”hŒ Description”…”�”}”(hjWüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjSüubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M\hjcûubhÌ)�”}”(hXMIf the dentry has been found through an idmapped mount the idmap of the vfsmount must be passed through **idmap**. This function will then take care to map the inode according to **idmap** before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass **nop_mnt_idmap**.”h]”(hŒhIf the dentry has been found through an idmapped mount the idmap of the vfsmount must be passed through ”…”�”}”(hjküh²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hjsüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjküubhŒB. This function will then take care to map the inode according to ”…”�”}”(hjküh²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hj…üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjküubhŒ before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass ”…”�”}”(hjküh²hh³Nh´Nubj©)�”}”(hŒ**nop_mnt_idmap**”h]”hŒ nop_mnt_idmap”…”�”}”(hj—üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjküubhŒ.”…”�”}”(hjküh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M[hjcûubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ"posix_acl_update_mode (C function)”Œc.posix_acl_update_mode”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒwint posix_acl_update_mode (const struct mnt_idmap *idmap, struct inode *inode, umode_t *mode_p, struct posix_acl **acl)”h]”j)�”}”(hŒvint posix_acl_update_mode(const struct mnt_idmap *idmap, struct inode *inode, umode_t *mode_p, struct posix_acl **acl)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjÐüh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÌüh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M³ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßüh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÌüh²hh³jÞüh´M³ubjC)�”}”(hŒposix_acl_update_mode”h]”jI)�”}”(hŒposix_acl_update_mode”h]”hŒposix_acl_update_mode”…”�”}”(hjñüh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjíüubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÌüh²hh³jÞüh´M³ubj=)�”}”(hŒ](const struct mnt_idmap *idmap, struct inode *inode, umode_t *mode_p, struct posix_acl **acl)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj ýh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj ýubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ýubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj(ýh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj ýubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5ýh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ýubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hjFýh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjCýubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jHýŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjóüsbŒc.posix_acl_update_mode”†”asbuh1hhj ýubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfýh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ýubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjtýh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ýubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hj�ýh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjýubjC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjšýh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj–ýubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§ýh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj–ýubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj¸ýh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjµýubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jºýŒmodname”NŒ classname”Njj )�”}”j ]”jbýŒc.posix_acl_update_mode”†”asbuh1hhj–ýubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖýh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj–ýubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjäýh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj–ýubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjñýh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj–ýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjýubjC)�”}”(hŒumode_t *mode_p”h]”(h)�”}”(hhh]”jI)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hj þh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj þubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jþŒmodname”NŒ classname”Njj )�”}”j ]”jbýŒc.posix_acl_update_mode”†”asbuh1hhjþubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+þh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjþubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj9þh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjþubjI)�”}”(hŒmode_p”h]”hŒmode_p”…”�”}”(hjFþh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjþubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjýubjC)�”}”(hŒstruct posix_acl **acl”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj_þh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj[þubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlþh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj[þubh)�”}”(hhh]”jI)�”}”(hŒ posix_acl”h]”hŒ posix_acl”…”�”}”(hj}þh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjzþubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jþŒmodname”NŒ classname”Njj )�”}”j ]”jbýŒc.posix_acl_update_mode”†”asbuh1hhj[þubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›þh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj[þubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj©þh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj[þubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¶þh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj[þubjI)�”}”(hŒacl”h]”hŒacl”…”�”}”(hjÃþh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj[þubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjýubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÌüh²hh³jÞüh´M³ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÈüh²hh³jÞüh´M³ubah}”(h]”jÃüah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÞüh´M³hjÅüh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒupdate mode in set_acl”h]”hŒupdate mode in set_acl”…”�”}”(hjíþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M³hjêþh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÅüh²hh³jÞüh´M³ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÿjšjÿj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXÁ**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount **inode** was found from ``struct inode *inode`` target inode ``umode_t *mode_p`` mode (pointer) for update ``struct posix_acl **acl`` acl pointer **Description** Update the file mode when setting an ACL: compute the new file permission bits based on the ACL. In addition, if the ACL is equivalent to the new file mode, set ***acl** to NULL to indicate that no ACL should be set. As with chmod, clear the setgid bit if the caller is not in the owning group or capable of CAP_FSETID (see inode_change_ok). If the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through **idmap**. This function will then take care to map the inode according to **idmap** before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass **nop_mnt_idmap**. Called from set_acl inode operations.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÿh]”hŒ Parameters”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M·hj ÿubj¿)�”}”(hhh]”(jÄ)�”}”(hŒN``const struct mnt_idmap *idmap`` idmap of the mount **inode** was found from ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj.ÿh]”hŒconst struct mnt_idmap *idmap”…”�”}”(hj0ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj,ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M´hj(ÿubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+idmap of the mount **inode** was found from”h]”(hŒidmap of the mount ”…”�”}”(hjGÿh²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hjOÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjGÿubhŒ was found from”…”�”}”(hjGÿh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jCÿh´M´hjDÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj(ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jCÿh´M´hj%ÿubjÄ)�”}”(hŒ%``struct inode *inode`` target inode ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjyÿh]”hŒstruct inode *inode”…”�”}”(hj{ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjwÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´Mµhjsÿubjæ)�”}”(hhh]”hÌ)�”}”(hŒ target inode”h]”hŒ target inode”…”�”}”(hj’ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jŽÿh´Mµhj�ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjsÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jŽÿh´Mµhj%ÿubjÄ)�”}”(hŒ.``umode_t *mode_p`` mode (pointer) for update ”h]”(jÊ)�”}”(hŒ``umode_t *mode_p``”h]”jÐ)�”}”(hj²ÿh]”hŒumode_t *mode_p”…”�”}”(hj´ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj°ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M¶hj¬ÿubjæ)�”}”(hhh]”hÌ)�”}”(hŒmode (pointer) for update”h]”hŒmode (pointer) for update”…”�”}”(hjËÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÇÿh´M¶hjÈÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¬ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÇÿh´M¶hj%ÿubjÄ)�”}”(hŒ'``struct posix_acl **acl`` acl pointer ”h]”(jÊ)�”}”(hŒ``struct posix_acl **acl``”h]”jÐ)�”}”(hjëÿh]”hŒstruct posix_acl **acl”…”�”}”(hjíÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjéÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M·hjåÿubjæ)�”}”(hhh]”hÌ)�”}”(hŒ acl pointer”h]”hŒ acl pointer”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´M·hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjåÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jh´M·hj%ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj ÿubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj&h]”hŒ Description”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M¹hj ÿubhÌ)�”}”(hŒÙUpdate the file mode when setting an ACL: compute the new file permission bits based on the ACL. In addition, if the ACL is equivalent to the new file mode, set ***acl** to NULL to indicate that no ACL should be set.”h]”(hŒ¢Update the file mode when setting an ACL: compute the new file permission bits based on the ACL. In addition, if the ACL is equivalent to the new file mode, set ”…”�”}”(hj<h²hh³Nh´Nubj©)�”}”(hŒ***acl**”h]”hŒ*acl”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj<ubhŒ/ to NULL to indicate that no ACL should be set.”…”�”}”(hj<h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M¸hj ÿubhÌ)�”}”(hŒ|As with chmod, clear the setgid bit if the caller is not in the owning group or capable of CAP_FSETID (see inode_change_ok).”h]”hŒ|As with chmod, clear the setgid bit if the caller is not in the owning group or capable of CAP_FSETID (see inode_change_ok).”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M¼hj ÿubhÌ)�”}”(hXLIf the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through **idmap**. This function will then take care to map the inode according to **idmap** before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass **nop_mnt_idmap**.”h]”(hŒgIf the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through ”…”�”}”(hjlh²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjlubhŒB. This function will then take care to map the inode according to ”…”�”}”(hjlh²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjlubhŒ before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass ”…”�”}”(hjlh²hh³Nh´Nubj©)�”}”(hŒ**nop_mnt_idmap**”h]”hŒ nop_mnt_idmap”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjlubhŒ.”…”�”}”(hjlh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M¿hj ÿubhÌ)�”}”(hŒ%Called from set_acl inode operations.”h]”hŒ%Called from set_acl inode operations.”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´MÅhj ÿubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ!posix_acl_from_xattr (C function)”Œc.posix_acl_from_xattr”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒgstruct posix_acl * posix_acl_from_xattr (struct user_namespace *userns, const void *value, size_t size)”h]”j)�”}”(hŒestruct posix_acl *posix_acl_from_xattr(struct user_namespace *userns, const void *value, size_t size)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÜh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´Móubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÜh²hh³jíh´Móubh)�”}”(hhh]”jI)�”}”(hŒ posix_acl”h]”hŒ posix_acl”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjüubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒposix_acl_from_xattr”sbŒc.posix_acl_from_xattr”†”asbuh1hhjÜh²hh³jíh´Móubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÜh²hh³jíh´Móubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÜh²hh³jíh´MóubjC)�”}”(hŒposix_acl_from_xattr”h]”jI)�”}”(hjh]”hŒposix_acl_from_xattr”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj;ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÜh²hh³jíh´Móubj=)�”}”(hŒ?(struct user_namespace *userns, const void *value, size_t size)”h]”(jC)�”}”(hŒstruct user_namespace *userns”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjVubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjVubh)�”}”(hhh]”jI)�”}”(hŒuser_namespace”h]”hŒuser_namespace”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjuubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jzŒmodname”NŒ classname”Njj )�”}”j ]”jŒc.posix_acl_from_xattr”†”asbuh1hhjVubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjVubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjVubjI)�”}”(hŒuserns”h]”hŒuserns”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjVubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjRubjC)�”}”(hŒconst void *value”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÆubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÆubj�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÆubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÆubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÆubjI)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjRubjC)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j,Œmodname”NŒ classname”Njj )�”}”j ]”jŒc.posix_acl_from_xattr”†”asbuh1hhj#ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj#ubjI)�”}”(hŒsize”h]”hŒsize”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjRubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÜh²hh³jíh´Móubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjØh²hh³jíh´Móubah}”(h]”jÓah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jíh´MóhjÕh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ3convert POSIX ACLs from backing store to VFS format”h]”hŒ3convert POSIX ACLs from backing store to VFS format”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´Móhj}h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÕh²hh³jíh´Móubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j˜jšj˜j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX˜**Parameters** ``struct user_namespace *userns`` the filesystem's idmapping ``const void *value`` the uapi representation of POSIX ACLs ``size_t size`` the size of **void** **Description** Filesystems that store POSIX ACLs in the unaltered uapi format should use posix_acl_from_xattr() when reading them from the backing store and converting them into the struct posix_acl VFS format. The helper is specifically intended to be called from the acl inode operation. The posix_acl_from_xattr() function will map the raw {g,u}id values stored in ACL_{GROUP,USER} entries into idmapping in **userns**. Note that posix_acl_from_xattr() does not take idmapped mounts into account. If it did it calling it from the get acl inode operation would return POSIX ACLs mapped according to an idmapped mount which would mean that the value couldn't be cached for the filesystem. Idmapped mounts are taken into account on the fly during permission checking or right at the VFS - userspace boundary before reporting them to the user. **Return** Allocated struct posix_acl on success, NULL for a valid header but without actual POSIX ACL entries, or ERR_PTR() encoded error code.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj¢h]”hŒ Parameters”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M÷hjœubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ=``struct user_namespace *userns`` the filesystem's idmapping ”h]”(jÊ)�”}”(hŒ!``struct user_namespace *userns``”h]”jÐ)�”}”(hjÁh]”hŒstruct user_namespace *userns”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´Môhj»ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe filesystem's idmapping”h]”hŒthe filesystem’s idmapping”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÖh´Môhj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÖh´Môhj¸ubjÄ)�”}”(hŒ<``const void *value`` the uapi representation of POSIX ACLs ”h]”(jÊ)�”}”(hŒ``const void *value``”h]”jÐ)�”}”(hjúh]”hŒconst void *value”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjøubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´Mõhjôubjæ)�”}”(hhh]”hÌ)�”}”(hŒ%the uapi representation of POSIX ACLs”h]”hŒ%the uapi representation of POSIX ACLs”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´Mõhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jh´Mõhj¸ubjÄ)�”}”(hŒ%``size_t size`` the size of **void** ”h]”(jÊ)�”}”(hŒ``size_t size``”h]”jÐ)�”}”(hj3h]”hŒ size_t size”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´Möhj-ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe size of **void**”h]”(hŒ the size of ”…”�”}”(hjLh²hh³Nh´Nubj©)�”}”(hŒ**void**”h]”hŒvoid”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjLubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jHh´MöhjIubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jHh´Möhj¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjœubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj|h]”hŒ Description”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjzubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´MøhjœubhÌ)�”}”(hXFilesystems that store POSIX ACLs in the unaltered uapi format should use posix_acl_from_xattr() when reading them from the backing store and converting them into the struct posix_acl VFS format. The helper is specifically intended to be called from the acl inode operation.”h]”hXFilesystems that store POSIX ACLs in the unaltered uapi format should use posix_acl_from_xattr() when reading them from the backing store and converting them into the struct posix_acl VFS format. The helper is specifically intended to be called from the acl inode operation.”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M÷hjœubhÌ)�”}”(hŒ„The posix_acl_from_xattr() function will map the raw {g,u}id values stored in ACL_{GROUP,USER} entries into idmapping in **userns**.”h]”(hŒyThe posix_acl_from_xattr() function will map the raw {g,u}id values stored in ACL_{GROUP,USER} entries into idmapping in ”…”�”}”(hj¡h²hh³Nh´Nubj©)�”}”(hŒ **userns**”h]”hŒuserns”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¡ubhŒ.”…”�”}”(hj¡h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´MühjœubhÌ)�”}”(hX£Note that posix_acl_from_xattr() does not take idmapped mounts into account. If it did it calling it from the get acl inode operation would return POSIX ACLs mapped according to an idmapped mount which would mean that the value couldn't be cached for the filesystem. Idmapped mounts are taken into account on the fly during permission checking or right at the VFS - userspace boundary before reporting them to the user.”h]”hX¥Note that posix_acl_from_xattr() does not take idmapped mounts into account. If it did it calling it from the get acl inode operation would return POSIX ACLs mapped according to an idmapped mount which would mean that the value couldn’t be cached for the filesystem. Idmapped mounts are taken into account on the fly during permission checking or right at the VFS - userspace boundary before reporting them to the user.”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´MÿhjœubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjÓh]”hŒReturn”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´MhjœubhÌ)�”}”(hŒ…Allocated struct posix_acl on success, NULL for a valid header but without actual POSIX ACL entries, or ERR_PTR() encoded error code.”h]”hŒ…Allocated struct posix_acl on success, NULL for a valid header but without actual POSIX ACL entries, or ERR_PTR() encoded error code.”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´Mhjœubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_set_acl (C function)”Œ c.vfs_set_acl”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒtint vfs_set_acl (const struct mnt_idmap *idmap, struct dentry *dentry, const char *acl_name, struct posix_acl *kacl)”h]”j)�”}”(hŒsint vfs_set_acl(const struct mnt_idmap *idmap, struct dentry *dentry, const char *acl_name, struct posix_acl *kacl)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M;ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjh²hh³j&h´M;ubjC)�”}”(hŒ vfs_set_acl”h]”jI)�”}”(hŒ vfs_set_acl”h]”hŒ vfs_set_acl”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj5ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjh²hh³j&h´M;ubj=)�”}”(hŒd(const struct mnt_idmap *idmap, struct dentry *dentry, const char *acl_name, struct posix_acl *kacl)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjQubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjQubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjQubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjQubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j�Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj;sbŒ c.vfs_set_acl”†”asbuh1hhjQubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjQubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjQubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjMubjC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÞubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÞubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjýubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jŒmodname”NŒ classname”Njj )�”}”j ]”jªŒ c.vfs_set_acl”†”asbuh1hhjÞubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÞubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÞubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÞubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjMubjC)�”}”(hŒconst char *acl_name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjNubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjNubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjNubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjNubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjNubjI)�”}”(hŒacl_name”h]”hŒacl_name”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjNubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjMubjC)�”}”(hŒstruct posix_acl *kacl”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj«ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj«ubh)�”}”(hhh]”jI)�”}”(hŒ posix_acl”h]”hŒ posix_acl”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÊubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÏŒmodname”NŒ classname”Njj )�”}”j ]”jªŒ c.vfs_set_acl”†”asbuh1hhj«ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj«ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj«ubjI)�”}”(hŒkacl”h]”hŒkacl”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj«ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjMubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjh²hh³j&h´M;ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjh²hh³j&h´M;ubah}”(h]”j ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j&h´M;hj h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒset posix acls”h]”hŒset posix acls”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M;hj-h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj h²hh³j&h´M;ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jHjšjHj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX·**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount ``struct dentry *dentry`` the dentry based on which to set the posix acls ``const char *acl_name`` the name of the posix acl ``struct posix_acl *kacl`` the posix acls in the appropriate VFS format **Description** This function sets **kacl**. The caller must all posix_acl_release() on **kacl** afterwards. **Return** On success 0, on error negative errno.”•h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjRh]”hŒ Parameters”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M?hjLubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ5``const struct mnt_idmap *idmap`` idmap of the mount ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjqh]”hŒconst struct mnt_idmap *idmap”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M<hjkubjæ)�”}”(hhh]”hÌ)�”}”(hŒidmap of the mount”h]”hŒidmap of the mount”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j†h´M<hj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjkubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j†h´M<hjhubjÄ)�”}”(hŒJ``struct dentry *dentry`` the dentry based on which to set the posix acls ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hjªh]”hŒstruct dentry *dentry”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M=hj¤ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ/the dentry based on which to set the posix acls”h]”hŒ/the dentry based on which to set the posix acls”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¿h´M=hjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¿h´M=hjhubjÄ)�”}”(hŒ3``const char *acl_name`` the name of the posix acl ”h]”(jÊ)�”}”(hŒ``const char *acl_name``”h]”jÐ)�”}”(hjãh]”hŒconst char *acl_name”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjáubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M>hjÝubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe name of the posix acl”h]”hŒthe name of the posix acl”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jøh´M>hjùubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jøh´M>hjhubjÄ)�”}”(hŒH``struct posix_acl *kacl`` the posix acls in the appropriate VFS format ”h]”(jÊ)�”}”(hŒ``struct posix_acl *kacl``”h]”jÐ)�”}”(hjh]”hŒstruct posix_acl *kacl”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M?hjubjæ)�”}”(hhh]”hÌ)�”}”(hŒ,the posix acls in the appropriate VFS format”h]”hŒ,the posix acls in the appropriate VFS format”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j1h´M?hj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j1h´M?hjhubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjLubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjWh]”hŒ Description”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjUubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´MAhjLubhÌ)�”}”(hŒ\This function sets **kacl**. The caller must all posix_acl_release() on **kacl** afterwards.”h]”(hŒThis function sets ”…”�”}”(hjmh²hh³Nh´Nubj©)�”}”(hŒ**kacl**”h]”hŒkacl”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjmubhŒ-. The caller must all posix_acl_release() on ”…”�”}”(hjmh²hh³Nh´Nubj©)�”}”(hŒ**kacl**”h]”hŒkacl”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjmubhŒ afterwards.”…”�”}”(hjmh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M@hjLubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj¢h]”hŒReturn”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´MChjLubhÌ)�”}”(hŒ&On success 0, on error negative errno.”h]”hŒ&On success 0, on error negative errno.”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´MDhjLubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_get_acl (C function)”Œ c.vfs_get_acl”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒkstruct posix_acl * vfs_get_acl (const struct mnt_idmap *idmap, struct dentry *dentry, const char *acl_name)”h]”j)�”}”(hŒistruct posix_acl *vfs_get_acl(const struct mnt_idmap *idmap, struct dentry *dentry, const char *acl_name)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjãh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M‰ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjãh²hh³jôh´M‰ubh)�”}”(hhh]”jI)�”}”(hŒ posix_acl”h]”hŒ posix_acl”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒ vfs_get_acl”sbŒ c.vfs_get_acl”†”asbuh1hhjãh²hh³jôh´M‰ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjãh²hh³jôh´M‰ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjãh²hh³jôh´M‰ubjC)�”}”(hŒ vfs_get_acl”h]”jI)�”}”(hj$h]”hŒ vfs_get_acl”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjBubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjãh²hh³jôh´M‰ubj=)�”}”(hŒL(const struct mnt_idmap *idmap, struct dentry *dentry, const char *acl_name)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj]ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj]ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj]ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj]ubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj—ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jœŒmodname”NŒ classname”Njj )�”}”j ]”j"Œ c.vfs_get_acl”†”asbuh1hhj]ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj]ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj]ubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjYubjC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjèubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjèubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j Œmodname”NŒ classname”Njj )�”}”j ]”j"Œ c.vfs_get_acl”†”asbuh1hhjèubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj( h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjèubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj6 h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjèubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjC h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjèubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjYubjC)�”}”(hŒconst char *acl_name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj\ h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjX ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hji h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjX ubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjw h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjX ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj… h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjX ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj“ h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjX ubjI)�”}”(hŒacl_name”h]”hŒacl_name”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjX ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjYubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjãh²hh³jôh´M‰ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjßh²hh³jôh´M‰ubah}”(h]”jÚah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jôh´M‰hjÜh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒget posix acls”h]”hŒget posix acls”…”�”}”(hjÊ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M‰hjÇ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÜh²hh³jôh´M‰ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jâ jšjâ j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX–**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount ``struct dentry *dentry`` the dentry based on which to retrieve the posix acls ``const char *acl_name`` the name of the posix acl **Description** This function retrieves **kacl** from the filesystem. The caller must all posix_acl_release() on **kacl**. **Return** On success POSIX ACLs in VFS format, on error negative errno.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjì h]”hŒ Parameters”…”�”}”(hjî h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjê ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M�hjæ ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ5``const struct mnt_idmap *idmap`` idmap of the mount ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj h]”hŒconst struct mnt_idmap *idmap”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´MŠhj ubjæ)�”}”(hhh]”hÌ)�”}”(hŒidmap of the mount”h]”hŒidmap of the mount”…”�”}”(hj$ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j h´MŠhj! ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j h´MŠhj ubjÄ)�”}”(hŒO``struct dentry *dentry`` the dentry based on which to retrieve the posix acls ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hjD h]”hŒstruct dentry *dentry”…”�”}”(hjF h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjB ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M‹hj> ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ4the dentry based on which to retrieve the posix acls”h]”hŒ4the dentry based on which to retrieve the posix acls”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jY h´M‹hjZ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj> ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jY h´M‹hj ubjÄ)�”}”(hŒ3``const char *acl_name`` the name of the posix acl ”h]”(jÊ)�”}”(hŒ``const char *acl_name``”h]”jÐ)�”}”(hj} h]”hŒconst char *acl_name”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj{ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´MŒhjw ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe name of the posix acl”h]”hŒthe name of the posix acl”…”�”}”(hj– h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j’ h´MŒhj“ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjw ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j’ h´MŒhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjæ ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj¸ h]”hŒ Description”…”�”}”(hjº h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¶ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´MŽhjæ ubhÌ)�”}”(hŒjThis function retrieves **kacl** from the filesystem. The caller must all posix_acl_release() on **kacl**.”h]”(hŒThis function retrieves ”…”�”}”(hjÎ h²hh³Nh´Nubj©)�”}”(hŒ**kacl**”h]”hŒkacl”…”�”}”(hjÖ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÎ ubhŒA from the filesystem. The caller must all posix_acl_release() on ”…”�”}”(hjÎ h²hh³Nh´Nubj©)�”}”(hŒ**kacl**”h]”hŒkacl”…”�”}”(hjè h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÎ ubhŒ.”…”�”}”(hjÎ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M�hjæ ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj h]”hŒReturn”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M�hjæ ubhÌ)�”}”(hŒ=On success POSIX ACLs in VFS format, on error negative errno.”h]”hŒ=On success POSIX ACLs in VFS format, on error negative errno.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M‘hjæ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_remove_acl (C function)”Œc.vfs_remove_acl”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ_int vfs_remove_acl (const struct mnt_idmap *idmap, struct dentry *dentry, const char *acl_name)”h]”j)�”}”(hŒ^int vfs_remove_acl(const struct mnt_idmap *idmap, struct dentry *dentry, const char *acl_name)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjH h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjD h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M¶ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjD h²hh³jV h´M¶ubjC)�”}”(hŒvfs_remove_acl”h]”jI)�”}”(hŒvfs_remove_acl”h]”hŒvfs_remove_acl”…”�”}”(hji h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhje ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjD h²hh³jV h´M¶ubj=)�”}”(hŒL(const struct mnt_idmap *idmap, struct dentry *dentry, const char *acl_name)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj… h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj� ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’ h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj� ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj� ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­ h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj� ubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hj¾ h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj» ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÀ Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjk sbŒc.vfs_remove_acl”†”asbuh1hhj� ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞ h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj� ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjì h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj� ubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hjù h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj� ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj} ubjC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj0 h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj- ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j2 Œmodname”NŒ classname”Njj )�”}”j ]”jÚ Œc.vfs_remove_acl”†”asbuh1hhj ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj\ h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hji h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj} ubjC)�”}”(hŒconst char *acl_name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj‚ h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj~ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj~ ubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj~ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj« h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj~ ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¹ h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj~ ubjI)�”}”(hŒacl_name”h]”hŒacl_name”…”�”}”(hjÆ h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj~ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj} ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjD h²hh³jV h´M¶ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj@ h²hh³jV h´M¶ubah}”(h]”j; ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jV h´M¶hj= h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒremove posix acls”h]”hŒremove posix acls”…”�”}”(hjð h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M¶hjí h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj= h²hh³jV h´M¶ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j jšj j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX6**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount ``struct dentry *dentry`` the dentry based on which to retrieve the posix acls ``const char *acl_name`` the name of the posix acl **Description** This function removes posix acls. **Return** On success 0, on error negative errno.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj h]”hŒ Parameters”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´Mºhj ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ5``const struct mnt_idmap *idmap`` idmap of the mount ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj1 h]”hŒconst struct mnt_idmap *idmap”…”�”}”(hj3 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj/ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M·hj+ ubjæ)�”}”(hhh]”hÌ)�”}”(hŒidmap of the mount”h]”hŒidmap of the mount”…”�”}”(hjJ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jF h´M·hjG ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj+ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jF h´M·hj( ubjÄ)�”}”(hŒO``struct dentry *dentry`` the dentry based on which to retrieve the posix acls ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hjj h]”hŒstruct dentry *dentry”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjh ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M¸hjd ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ4the dentry based on which to retrieve the posix acls”h]”hŒ4the dentry based on which to retrieve the posix acls”…”�”}”(hjƒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j h´M¸hj€ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjd ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j h´M¸hj( ubjÄ)�”}”(hŒ3``const char *acl_name`` the name of the posix acl ”h]”(jÊ)�”}”(hŒ``const char *acl_name``”h]”jÐ)�”}”(hj£ h]”hŒconst char *acl_name”…”�”}”(hj¥ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¡ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M¹hj� ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe name of the posix acl”h]”hŒthe name of the posix acl”…”�”}”(hj¼ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¸ h´M¹hj¹ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj� ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¸ h´M¹hj( ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÞ h]”hŒ Description”…”�”}”(hjà h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÜ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M»hj ubhÌ)�”}”(hŒ!This function removes posix acls.”h]”hŒ!This function removes posix acls.”…”�”}”(hjô h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´Mºhj ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjh]”hŒReturn”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M¼hj ubhÌ)�”}”(hŒ&On success 0, on error negative errno.”h]”hŒ&On success 0, on error negative errno.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M½hj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œfill_mg_cmtime (C function)”Œc.fill_mg_cmtime”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒOvoid fill_mg_cmtime (struct kstat *stat, u32 request_mask, struct inode *inode)”h]”j)�”}”(hŒNvoid fill_mg_cmtime(struct kstat *stat, u32 request_mask, struct inode *inode)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjFh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´K ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjFh²hh³jXh´K ubjC)�”}”(hŒfill_mg_cmtime”h]”jI)�”}”(hŒfill_mg_cmtime”h]”hŒfill_mg_cmtime”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjgubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjFh²hh³jXh´K ubj=)�”}”(hŒ;(struct kstat *stat, u32 request_mask, struct inode *inode)”h]”(jC)�”}”(hŒstruct kstat *stat”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjƒubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjƒubh)�”}”(hhh]”jI)�”}”(hŒkstat”h]”hŒkstat”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¢ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j§Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjmsbŒc.fill_mg_cmtime”†”asbuh1hhjƒubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjƒubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjƒubjI)�”}”(hŒstat”h]”hŒstat”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjƒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjubjC)�”}”(hŒu32 request_mask”h]”(h)�”}”(hhh]”jI)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjùubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jþŒmodname”NŒ classname”Njj )�”}”j ]”jÁŒc.fill_mg_cmtime”†”asbuh1hhjõubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjõubjI)�”}”(hŒ request_mask”h]”hŒ request_mask”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjõubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjubjC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj=ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj=ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj\ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jaŒmodname”NŒ classname”Njj )�”}”j ]”jÁŒc.fill_mg_cmtime”†”asbuh1hhj=ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj=ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj=ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjFh²hh³jXh´K ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjBh²hh³jXh´K ubah}”(h]”j=ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jXh´K hj?h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ5Fill in the mtime and ctime and flag ctime as QUERIED”h]”hŒ5Fill in the mtime and ctime and flag ctime as QUERIED”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´K hj¿h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj?h²hh³jXh´K ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÚjšjÚj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX<**Parameters** ``struct kstat *stat`` where to store the resulting values ``u32 request_mask`` STATX_* values requested ``struct inode *inode`` inode from which to grab the c/mtime **Description** Given **inode**, grab the ctime and mtime out if it and store the result in **stat**. When fetching the value, flag it as QUERIED (if not already) so the next write will record a distinct timestamp. NB: The QUERIED flag is tracked in the ctime, but we set it there even if only the mtime was requested, as that ensures that the next mtime change will be distinct.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjäh]”hŒ Parameters”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjâubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´K$hjÞubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ;``struct kstat *stat`` where to store the resulting values ”h]”(jÊ)�”}”(hŒ``struct kstat *stat``”h]”jÐ)�”}”(hjh]”hŒstruct kstat *stat”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´K!hjýubjæ)�”}”(hhh]”hÌ)�”}”(hŒ#where to store the resulting values”h]”hŒ#where to store the resulting values”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´K!hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jh´K!hjúubjÄ)�”}”(hŒ.``u32 request_mask`` STATX_* values requested ”h]”(jÊ)�”}”(hŒ``u32 request_mask``”h]”jÐ)�”}”(hj<h]”hŒu32 request_mask”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´K"hj6ubjæ)�”}”(hhh]”hÌ)�”}”(hŒSTATX_* values requested”h]”hŒSTATX_* values requested”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jQh´K"hjRubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jQh´K"hjúubjÄ)�”}”(hŒ=``struct inode *inode`` inode from which to grab the c/mtime ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjuh]”hŒstruct inode *inode”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjsubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´K#hjoubjæ)�”}”(hhh]”hÌ)�”}”(hŒ$inode from which to grab the c/mtime”h]”hŒ$inode from which to grab the c/mtime”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jŠh´K#hj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjoubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jŠh´K#hjúubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÞubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj°h]”hŒ Description”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´K%hjÞubhÌ)�”}”(hŒÆGiven **inode**, grab the ctime and mtime out if it and store the result in **stat**. When fetching the value, flag it as QUERIED (if not already) so the next write will record a distinct timestamp.”h]”(hŒGiven ”…”�”}”(hjÆh²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÆubhŒ=, grab the ctime and mtime out if it and store the result in ”…”�”}”(hjÆh²hh³Nh´Nubj©)�”}”(hŒ**stat**”h]”hŒstat”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÆubhŒr. When fetching the value, flag it as QUERIED (if not already) so the next write will record a distinct timestamp.”…”�”}”(hjÆh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´K$hjÞubhÌ)�”}”(hŒ¤NB: The QUERIED flag is tracked in the ctime, but we set it there even if only the mtime was requested, as that ensures that the next mtime change will be distinct.”h]”hŒ¤NB: The QUERIED flag is tracked in the ctime, but we set it there even if only the mtime was requested, as that ensures that the next mtime change will be distinct.”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´K(hjÞubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œgeneric_fillattr (C function)”Œc.generic_fillattr”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒpvoid generic_fillattr (const struct mnt_idmap *idmap, u32 request_mask, struct inode *inode, struct kstat *stat)”h]”j)�”}”(hŒovoid generic_fillattr(const struct mnt_idmap *idmap, u32 request_mask, struct inode *inode, struct kstat *stat)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj$h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´KBubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj$h²hh³j6h´KBubjC)�”}”(hŒgeneric_fillattr”h]”jI)�”}”(hŒgeneric_fillattr”h]”hŒgeneric_fillattr”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjEubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj$h²hh³j6h´KBubj=)�”}”(hŒZ(const struct mnt_idmap *idmap, u32 request_mask, struct inode *inode, struct kstat *stat)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjaubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjaubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjaubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjaubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj›ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjKsbŒc.generic_fillattr”†”asbuh1hhjaubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjaubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjaubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjaubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj]ubjC)�”}”(hŒu32 request_mask”h]”(h)�”}”(hhh]”jI)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjòubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j÷Œmodname”NŒ classname”Njj )�”}”j ]”jºŒc.generic_fillattr”†”asbuh1hhjîubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjîubjI)�”}”(hŒ request_mask”h]”hŒ request_mask”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjîubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj]ubjC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj6ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj6ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjUubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jZŒmodname”NŒ classname”Njj )�”}”j ]”jºŒc.generic_fillattr”†”asbuh1hhj6ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj6ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj6ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj]ubjC)�”}”(hŒstruct kstat *stat”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¦ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¦ubh)�”}”(hhh]”jI)�”}”(hŒkstat”h]”hŒkstat”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÅubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÊŒmodname”NŒ classname”Njj )�”}”j ]”jºŒc.generic_fillattr”†”asbuh1hhj¦ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¦ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¦ubjI)�”}”(hŒstat”h]”hŒstat”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj]ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj$h²hh³j6h´KBubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj h²hh³j6h´KBubah}”(h]”jah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j6h´KBhjh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ2Fill in the basic attributes from the inode struct”h]”hŒ2Fill in the basic attributes from the inode struct”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´KBhj(h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjh²hh³j6h´KBubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jCjšjCj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ``u32 request_mask`` statx request_mask ``struct inode *inode`` Inode to use as the source ``struct kstat *stat`` Where to fill in the attributes **Description** Fill in the basic attributes in the kstat structure from data that's to be found on the VFS inode structure. This is the default if no getattr inode operation is supplied. If the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through **idmap**. This function will then take care to map the inode according to **idmap** before filling in the uid and gid filds. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass **nop_mnt_idmap**.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjMh]”hŒ Parameters”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjKubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´KFhjGubj¿)�”}”(hhh]”(jÄ)�”}”(hŒN``const struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjlh]”hŒconst struct mnt_idmap *idmap”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´KChjfubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+idmap of the mount the inode was found from”h]”hŒ+idmap of the mount the inode was found from”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�h´KChj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjfubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j�h´KChjcubjÄ)�”}”(hŒ(``u32 request_mask`` statx request_mask ”h]”(jÊ)�”}”(hŒ``u32 request_mask``”h]”jÐ)�”}”(hj¥h]”hŒu32 request_mask”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´KDhjŸubjæ)�”}”(hhh]”hÌ)�”}”(hŒstatx request_mask”h]”hŒstatx request_mask”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jºh´KDhj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jºh´KDhjcubjÄ)�”}”(hŒ3``struct inode *inode`` Inode to use as the source ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjÞh]”hŒstruct inode *inode”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´KEhjØubjæ)�”}”(hhh]”hÌ)�”}”(hŒInode to use as the source”h]”hŒInode to use as the source”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jóh´KEhjôubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjØubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jóh´KEhjcubjÄ)�”}”(hŒ7``struct kstat *stat`` Where to fill in the attributes ”h]”(jÊ)�”}”(hŒ``struct kstat *stat``”h]”jÐ)�”}”(hjh]”hŒstruct kstat *stat”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´KFhjubjæ)�”}”(hhh]”hÌ)�”}”(hŒWhere to fill in the attributes”h]”hŒWhere to fill in the attributes”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j,h´KFhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j,h´KFhjcubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjGubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjRh]”hŒ Description”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´KHhjGubhÌ)�”}”(hŒ¬Fill in the basic attributes in the kstat structure from data that's to be found on the VFS inode structure. This is the default if no getattr inode operation is supplied.”h]”hŒ®Fill in the basic attributes in the kstat structure from data that’s to be found on the VFS inode structure. This is the default if no getattr inode operation is supplied.”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´KGhjGubhÌ)�”}”(hXXIf the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through **idmap**. This function will then take care to map the inode according to **idmap** before filling in the uid and gid filds. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass **nop_mnt_idmap**.”h]”(hŒgIf the inode has been found through an idmapped mount the idmap of the vfsmount must be passed through ”…”�”}”(hjwh²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjwubhŒB. This function will then take care to map the inode according to ”…”�”}”(hjwh²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjwubhŒ‹ before filling in the uid and gid filds. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass ”…”�”}”(hjwh²hh³Nh´Nubj©)�”}”(hŒ**nop_mnt_idmap**”h]”hŒ nop_mnt_idmap”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjwubhŒ.”…”�”}”(hjwh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´KKhjGubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ$generic_fill_statx_attr (C function)”Œc.generic_fill_statx_attr”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒFvoid generic_fill_statx_attr (struct inode *inode, struct kstat *stat)”h]”j)�”}”(hŒEvoid generic_fill_statx_attr(struct inode *inode, struct kstat *stat)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjØh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´Kuubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjØh²hh³jêh´KuubjC)�”}”(hŒgeneric_fill_statx_attr”h]”jI)�”}”(hŒgeneric_fill_statx_attr”h]”hŒgeneric_fill_statx_attr”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjùubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjØh²hh³jêh´Kuubj=)�”}”(hŒ)(struct inode *inode, struct kstat *stat)”h]”(jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j9Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÿsbŒc.generic_fill_statx_attr”†”asbuh1hhjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjubjC)�”}”(hŒstruct kstat *stat”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj‡ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‡ubh)�”}”(hhh]”jI)�”}”(hŒkstat”h]”hŒkstat”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¦ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j«Œmodname”NŒ classname”Njj )�”}”j ]”jSŒc.generic_fill_statx_attr”†”asbuh1hhj‡ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‡ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj‡ubjI)�”}”(hŒstat”h]”hŒstat”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjØh²hh³jêh´Kuubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÔh²hh³jêh´Kuubah}”(h]”jÏah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jêh´KuhjÑh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ1Fill in the statx attributes from the inode flags”h]”hŒ1Fill in the statx attributes from the inode flags”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´Kuhj h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÑh²hh³jêh´Kuubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j$jšj$j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX**Parameters** ``struct inode *inode`` Inode to use as the source ``struct kstat *stat`` Where to fill in the attribute flags **Description** Fill in the STATX_ATTR_* flags in the kstat structure for properties of the inode that are published on i_flags and enforced by the VFS.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj.h]”hŒ Parameters”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´Kyhj(ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ3``struct inode *inode`` Inode to use as the source ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjMh]”hŒstruct inode *inode”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´KvhjGubjæ)�”}”(hhh]”hÌ)�”}”(hŒInode to use as the source”h]”hŒInode to use as the source”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jbh´Kvhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjGubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jbh´KvhjDubjÄ)�”}”(hŒ<``struct kstat *stat`` Where to fill in the attribute flags ”h]”(jÊ)�”}”(hŒ``struct kstat *stat``”h]”jÐ)�”}”(hj†h]”hŒstruct kstat *stat”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´Kwhj€ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ$Where to fill in the attribute flags”h]”hŒ$Where to fill in the attribute flags”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j›h´Kwhjœubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j›h´KwhjDubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj(ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÁh]”hŒ Description”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´Kyhj(ubhÌ)�”}”(hŒˆFill in the STATX_ATTR_* flags in the kstat structure for properties of the inode that are published on i_flags and enforced by the VFS.”h]”hŒˆFill in the STATX_ATTR_* flags in the kstat structure for properties of the inode that are published on i_flags and enforced by the VFS.”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´Kxhj(ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ-generic_fill_statx_atomic_writes (C function)”Œ"c.generic_fill_statx_atomic_writes”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒƒvoid generic_fill_statx_atomic_writes (struct kstat *stat, unsigned int unit_min, unsigned int unit_max, unsigned int unit_max_opt)”h]”j)�”}”(hŒ‚void generic_fill_statx_atomic_writes(struct kstat *stat, unsigned int unit_min, unsigned int unit_max, unsigned int unit_max_opt)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´K‡ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjh²hh³jh´K‡ubjC)�”}”(hŒ generic_fill_statx_atomic_writes”h]”jI)�”}”(hŒ generic_fill_statx_atomic_writes”h]”hŒ generic_fill_statx_atomic_writes”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj#ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjh²hh³jh´K‡ubj=)�”}”(hŒ](struct kstat *stat, unsigned int unit_min, unsigned int unit_max, unsigned int unit_max_opt)”h]”(jC)�”}”(hŒstruct kstat *stat”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj?ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj?ubh)�”}”(hhh]”jI)�”}”(hŒkstat”h]”hŒkstat”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj^ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jcŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj)sbŒ"c.generic_fill_statx_atomic_writes”†”asbuh1hhj?ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj?ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj?ubjI)�”}”(hŒstat”h]”hŒstat”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj;ubjC)�”}”(hŒunsigned int unit_min”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj±ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj±ubj�)�”}”(hŒint”h]”hŒint”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj±ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj±ubjI)�”}”(hŒunit_min”h]”hŒunit_min”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj±ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj;ubjC)�”}”(hŒunsigned int unit_max”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjubj�)�”}”(hŒint”h]”hŒint”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjubjI)�”}”(hŒunit_max”h]”hŒunit_max”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj;ubjC)�”}”(hŒunsigned int unit_max_opt”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjSubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjSubj�)�”}”(hŒint”h]”hŒint”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjSubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjSubjI)�”}”(hŒ unit_max_opt”h]”hŒ unit_max_opt”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj;ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjh²hh³jh´K‡ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjþh²hh³jh´K‡ubah}”(h]”jùah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jh´K‡hjûh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ&Fill in atomic writes statx attributes”h]”hŒ&Fill in atomic writes statx attributes”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´K‡hj¶h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjûh²hh³jh´K‡ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÑjšjÑj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXÄ**Parameters** ``struct kstat *stat`` Where to fill in the attribute flags ``unsigned int unit_min`` Minimum supported atomic write length in bytes ``unsigned int unit_max`` Maximum supported atomic write length in bytes ``unsigned int unit_max_opt`` Optimised maximum supported atomic write length in bytes **Description** Fill in the STATX{_ATTR}_WRITE_ATOMIC flags in the kstat structure from atomic write unit_min and unit_max values.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÛh]”hŒ Parameters”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´K‹hjÕubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ<``struct kstat *stat`` Where to fill in the attribute flags ”h]”(jÊ)�”}”(hŒ``struct kstat *stat``”h]”jÐ)�”}”(hjúh]”hŒstruct kstat *stat”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjøubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´Kˆhjôubjæ)�”}”(hhh]”hÌ)�”}”(hŒ$Where to fill in the attribute flags”h]”hŒ$Where to fill in the attribute flags”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´Kˆhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jh´KˆhjñubjÄ)�”}”(hŒI``unsigned int unit_min`` Minimum supported atomic write length in bytes ”h]”(jÊ)�”}”(hŒ``unsigned int unit_min``”h]”jÐ)�”}”(hj3h]”hŒunsigned int unit_min”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´K‰hj-ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.Minimum supported atomic write length in bytes”h]”hŒ.Minimum supported atomic write length in bytes”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jHh´K‰hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jHh´K‰hjñubjÄ)�”}”(hŒI``unsigned int unit_max`` Maximum supported atomic write length in bytes ”h]”(jÊ)�”}”(hŒ``unsigned int unit_max``”h]”jÐ)�”}”(hjlh]”hŒunsigned int unit_max”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´KŠhjfubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.Maximum supported atomic write length in bytes”h]”hŒ.Maximum supported atomic write length in bytes”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�h´KŠhj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjfubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j�h´KŠhjñubjÄ)�”}”(hŒW``unsigned int unit_max_opt`` Optimised maximum supported atomic write length in bytes ”h]”(jÊ)�”}”(hŒ``unsigned int unit_max_opt``”h]”jÐ)�”}”(hj¥h]”hŒunsigned int unit_max_opt”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´K‹hjŸubjæ)�”}”(hhh]”hÌ)�”}”(hŒ8Optimised maximum supported atomic write length in bytes”h]”hŒ8Optimised maximum supported atomic write length in bytes”…”�”}”(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ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÕubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjàh]”hŒ Description”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´K�hjÕubhÌ)�”}”(hŒrFill in the STATX{_ATTR}_WRITE_ATOMIC flags in the kstat structure from atomic write unit_min and unit_max values.”h]”hŒrFill in the STATX{_ATTR}_WRITE_ATOMIC flags in the kstat structure from atomic write unit_min and unit_max values.”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´KŒhjÕubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_getattr_nosec (C function)”Œc.vfs_getattr_nosec”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒoint vfs_getattr_nosec (const struct path *path, struct kstat *stat, u32 request_mask, unsigned int query_flags)”h]”j)�”}”(hŒnint vfs_getattr_nosec(const struct path *path, struct kstat *stat, u32 request_mask, unsigned int query_flags)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj!h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´K©ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj!h²hh³j3h´K©ubjC)�”}”(hŒvfs_getattr_nosec”h]”jI)�”}”(hŒvfs_getattr_nosec”h]”hŒvfs_getattr_nosec”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjBubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj!h²hh³j3h´K©ubj=)�”}”(hŒY(const struct path *path, struct kstat *stat, u32 request_mask, unsigned int query_flags)”h]”(jC)�”}”(hŒconst struct path *path”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj^ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj^ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj^ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj^ubh)�”}”(hhh]”jI)�”}”(hŒpath”h]”hŒpath”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj˜ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j�Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjHsbŒc.vfs_getattr_nosec”†”asbuh1hhj^ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj^ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj^ubjI)�”}”(hŒpath”h]”hŒpath”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjZubjC)�”}”(hŒstruct kstat *stat”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjëubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjëubh)�”}”(hhh]”jI)�”}”(hŒkstat”h]”hŒkstat”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jŒmodname”NŒ classname”Njj )�”}”j ]”j·Œc.vfs_getattr_nosec”†”asbuh1hhjëubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjëubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjëubjI)�”}”(hŒstat”h]”hŒstat”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjZubjC)�”}”(hŒu32 request_mask”h]”(h)�”}”(hhh]”jI)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jdŒmodname”NŒ classname”Njj )�”}”j ]”j·Œc.vfs_getattr_nosec”†”asbuh1hhj[ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj[ubjI)�”}”(hŒ request_mask”h]”hŒ request_mask”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjZubjC)�”}”(hŒunsigned int query_flags”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj£ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj£ubj�)�”}”(hŒint”h]”hŒint”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj£ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj£ubjI)�”}”(hŒ query_flags”h]”hŒ query_flags”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjZubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj!h²hh³j3h´K©ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjh²hh³j3h´K©ubah}”(h]”jah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j3h´K©hjh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒgetattr without security checks”h]”hŒgetattr without security checks”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´K©hjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjh²hh³j3h´K©ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j!jšj!j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX(**Parameters** ``const struct path *path`` file to get attributes from ``struct kstat *stat`` structure to return attributes in ``u32 request_mask`` STATX_xxx flags indicating what the caller wants ``unsigned int query_flags`` Query mode (AT_STATX_SYNC_TYPE) **Description** Get attributes without calling security_inode_getattr. Currently the only caller other than vfs_getattr is internal to the filehandle lookup code, which uses only the inode number and returns no attributes to any user. Any other code probably wants vfs_getattr.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj+h]”hŒ Parameters”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´K­hj%ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ8``const struct path *path`` file to get attributes from ”h]”(jÊ)�”}”(hŒ``const struct path *path``”h]”jÐ)�”}”(hjJh]”hŒconst struct path *path”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjHubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´KªhjDubjæ)�”}”(hhh]”hÌ)�”}”(hŒfile to get attributes from”h]”hŒfile to get attributes from”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j_h´Kªhj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjDubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j_h´KªhjAubjÄ)�”}”(hŒ9``struct kstat *stat`` structure to return attributes in ”h]”(jÊ)�”}”(hŒ``struct kstat *stat``”h]”jÐ)�”}”(hjƒh]”hŒstruct kstat *stat”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´K«hj}ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ!structure to return attributes in”h]”hŒ!structure to return attributes in”…”�”}”(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«hjAubjÄ)�”}”(hŒF``u32 request_mask`` STATX_xxx flags indicating what the caller wants ”h]”(jÊ)�”}”(hŒ``u32 request_mask``”h]”jÐ)�”}”(hj¼h]”hŒu32 request_mask”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjºubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´K¬hj¶ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ0STATX_xxx flags indicating what the caller wants”•h]”hŒ0STATX_xxx flags indicating what the caller wants”…”�”}”(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¬hjAubjÄ)�”}”(hŒ=``unsigned int query_flags`` Query mode (AT_STATX_SYNC_TYPE) ”h]”(jÊ)�”}”(hŒ``unsigned int query_flags``”h]”jÐ)�”}”(hjõh]”hŒunsigned int query_flags”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjóubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´K­hjïubjæ)�”}”(hhh]”hÌ)�”}”(hŒQuery mode (AT_STATX_SYNC_TYPE)”h]”hŒQuery mode (AT_STATX_SYNC_TYPE)”…”�”}”(hjh²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­hjAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj%ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj0h]”hŒ Description”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´K¯hj%ubhÌ)�”}”(hŒ6Get attributes without calling security_inode_getattr.”h]”hŒ6Get attributes without calling security_inode_getattr.”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´K®hj%ubhÌ)�”}”(hŒÏCurrently the only caller other than vfs_getattr is internal to the filehandle lookup code, which uses only the inode number and returns no attributes to any user. Any other code probably wants vfs_getattr.”h]”hŒÏCurrently the only caller other than vfs_getattr is internal to the filehandle lookup code, which uses only the inode number and returns no attributes to any user. Any other code probably wants vfs_getattr.”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´K°hj%ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_fsync_range (C function)”Œc.vfs_fsync_range”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒOint vfs_fsync_range (struct file *file, loff_t start, loff_t end, int datasync)”h]”j)�”}”(hŒNint vfs_fsync_range(struct file *file, loff_t start, loff_t end, int datasync)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj€h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:95: ./fs/sync.c”h´K¨ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj€h²hh³j’h´K¨ubjC)�”}”(hŒvfs_fsync_range”h]”jI)�”}”(hŒvfs_fsync_range”h]”hŒvfs_fsync_range”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¡ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj€h²hh³j’h´K¨ubj=)�”}”(hŒ;(struct file *file, loff_t start, loff_t end, int datasync)”h]”(jC)�”}”(hŒstruct file *file”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj½ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj½ubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÜubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jáŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj§sbŒc.vfs_fsync_range”†”asbuh1hhj½ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj½ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj½ubjI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj½ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¹ubjC)�”}”(hŒ loff_t start”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j8Œmodname”NŒ classname”Njj )�”}”j ]”jûŒc.vfs_fsync_range”†”asbuh1hhj/ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj/ubjI)�”}”(hŒstart”h]”hŒstart”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¹ubjC)�”}”(hŒ loff_t end”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj{ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j€Œmodname”NŒ classname”Njj )�”}”j ]”jûŒc.vfs_fsync_range”†”asbuh1hhjwubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjwubjI)�”}”(hŒend”h]”hŒend”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjwubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¹ubjC)�”}”(hŒ int datasync”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¿ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¿ubjI)�”}”(hŒdatasync”h]”hŒdatasync”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¿ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¹ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj€h²hh³j’h´K¨ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj|h²hh³j’h´K¨ubah}”(h]”jwah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j’h´K¨hjyh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ1helper to sync a range of data & metadata to disk”h]”hŒ1helper to sync a range of data & metadata to disk”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:95: ./fs/sync.c”h´K¨hjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjyh²hh³j’h´K¨ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j!jšj!j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX§**Parameters** ``struct file *file`` file to sync ``loff_t start`` offset in bytes of the beginning of data range to sync ``loff_t end`` offset in bytes of the end of data range (inclusive) ``int datasync`` perform only datasync **Description** Write back data in range **start**..**end** and metadata for **file** to disk. If **datasync** is set only metadata needed to access modified file data is written.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj+h]”hŒ Parameters”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:95: ./fs/sync.c”h´K¬hj%ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ#``struct file *file`` file to sync ”h]”(jÊ)�”}”(hŒ``struct file *file``”h]”jÐ)�”}”(hjJh]”hŒstruct file *file”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjHubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:95: ./fs/sync.c”h´K©hjDubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file to sync”h]”hŒ file to sync”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j_h´K©hj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjDubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j_h´K©hjAubjÄ)�”}”(hŒH``loff_t start`` offset in bytes of the beginning of data range to sync ”h]”(jÊ)�”}”(hŒ``loff_t start``”h]”jÐ)�”}”(hjƒh]”hŒ loff_t start”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:95: ./fs/sync.c”h´Kªhj}ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ6offset in bytes of the beginning of data range to sync”h]”hŒ6offset in bytes of the beginning of data range to sync”…”�”}”(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ªhjAubjÄ)�”}”(hŒD``loff_t end`` offset in bytes of the end of data range (inclusive) ”h]”(jÊ)�”}”(hŒ``loff_t end``”h]”jÐ)�”}”(hj¼h]”hŒ loff_t end”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjºubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:95: ./fs/sync.c”h´K«hj¶ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ4offset in bytes of the end of data range (inclusive)”h]”hŒ4offset in bytes of the end of data range (inclusive)”…”�”}”(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«hjAubjÄ)�”}”(hŒ'``int datasync`` perform only datasync ”h]”(jÊ)�”}”(hŒ``int datasync``”h]”jÐ)�”}”(hjõh]”hŒ int datasync”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjóubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:95: ./fs/sync.c”h´K¬hjïubjæ)�”}”(hhh]”hÌ)�”}”(hŒperform only datasync”h]”hŒperform only datasync”…”�”}”(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¬hjAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj%ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj0 h]”hŒ Description”…”�”}”(hj2 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj. ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:95: ./fs/sync.c”h´K®hj%ubhÌ)�”}”(hŒ¤Write back data in range **start**..**end** and metadata for **file** to disk. If **datasync** is set only metadata needed to access modified file data is written.”h]”(hŒWrite back data in range ”…”�”}”(hjF h²hh³Nh´Nubj©)�”}”(hŒ **start**”h]”hŒstart”…”�”}”(hjN h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjF ubhŒ..**end** and metadata for ”…”�”}”(hjF h²hh³Nh´Nubj©)�”}”(hŒ**file**”h]”hŒfile”…”�”}”(hj` h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjF ubhŒ to disk. If ”…”�”}”(hjF h²hh³Nh´Nubj©)�”}”(hŒ **datasync**”h]”hŒdatasync”…”�”}”(hjr h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjF ubhŒE is set only metadata needed to access modified file data is written.”…”�”}”(hjF h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:95: ./fs/sync.c”h´K­hj%ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_fsync (C function)”Œ c.vfs_fsync”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ/int vfs_fsync (struct file *file, int datasync)”h]”j)�”}”(hŒ.int vfs_fsync(struct file *file, int datasync)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj« h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj§ h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:95: ./fs/sync.c”h´K¿ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj§ h²hh³j¹ h´K¿ubjC)�”}”(hŒ vfs_fsync”h]”jI)�”}”(hŒ vfs_fsync”h]”hŒ vfs_fsync”…”�”}”(hjÌ h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÈ ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj§ h²hh³j¹ h´K¿ubj=)�”}”(hŒ!(struct file *file, int datasync)”h]”(jC)�”}”(hŒstruct file *file”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjè h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjä ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjä ubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j!Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÎ sbŒ c.vfs_fsync”†”asbuh1hhjä ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&!h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjä ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj4!h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjä ubjI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjA!h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjä ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjà ubjC)�”}”(hŒ int datasync”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjZ!h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjV!ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh!h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjV!ubjI)�”}”(hŒdatasync”h]”hŒdatasync”…”�”}”(hjv!h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjV!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjà ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj§ h²hh³j¹ h´K¿ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj£ h²hh³j¹ h´K¿ubah}”(h]”jž ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j¹ h´K¿hj  h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ&perform a fsync or fdatasync on a file”h]”hŒ&perform a fsync or fdatasync on a file”…”�”}”(hj !h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:95: ./fs/sync.c”h´K¿hj�!h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj  h²hh³j¹ h´K¿ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j¸!jšj¸!j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX**Parameters** ``struct file *file`` file to sync ``int datasync`` only perform a fdatasync operation **Description** Write back data and metadata for **file** to disk. If **datasync** is set only metadata needed to access modified file data is written.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÂ!h]”hŒ Parameters”…”�”}”(hjÄ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÀ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:95: ./fs/sync.c”h´KÃhj¼!ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ#``struct file *file`` file to sync ”h]”(jÊ)�”}”(hŒ``struct file *file``”h]”jÐ)�”}”(hjá!h]”hŒstruct file *file”…”�”}”(hjã!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjß!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:95: ./fs/sync.c”h´KÀhjÛ!ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file to sync”h]”hŒ file to sync”…”�”}”(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Œ4``int datasync`` only perform a fdatasync operation ”h]”(jÊ)�”}”(hŒ``int datasync``”h]”jÐ)�”}”(hj"h]”hŒ int datasync”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:95: ./fs/sync.c”h´KÁhj"ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ"only perform a fdatasync operation”h]”hŒ"only perform a fdatasync operation”…”�”}”(hj3"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j/"h´KÁhj0"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j/"h´KÁhjØ!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj¼!ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjU"h]”hŒ Description”…”�”}”(hjW"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjS"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:95: ./fs/sync.c”h´KÃhj¼!ubhÌ)�”}”(hŒˆWrite back data and metadata for **file** to disk. If **datasync** is set only metadata needed to access modified file data is written.”h]”(hŒ!Write back data and metadata for ”…”�”}”(hjk"h²hh³Nh´Nubj©)�”}”(hŒ**file**”h]”hŒfile”…”�”}”(hjs"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjk"ubhŒ to disk. If ”…”�”}”(hjk"h²hh³Nh´Nubj©)�”}”(hŒ **datasync**”h]”hŒdatasync”…”�”}”(hj…"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjk"ubhŒE is set only metadata needed to access modified file data is written.”…”�”}”(hjk"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:95: ./fs/sync.c”h´KÂhj¼!ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ"__vfs_setxattr_locked (C function)”Œc.__vfs_setxattr_locked”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ¶int __vfs_setxattr_locked (const struct mnt_idmap *idmap, struct dentry *dentry, const char *name, const void *value, size_t size, int flags, struct delegated_inode *delegated_inode)”h]”j)�”}”(hŒµint __vfs_setxattr_locked(const struct mnt_idmap *idmap, struct dentry *dentry, const char *name, const void *value, size_t size, int flags, struct delegated_inode *delegated_inode)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj¾"h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjº"h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍ"h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjº"h²hh³jÌ"h´MubjC)�”}”(hŒ__vfs_setxattr_locked”h]”jI)�”}”(hŒ__vfs_setxattr_locked”h]”hŒ__vfs_setxattr_locked”…”�”}”(hjß"h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÛ"ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjº"h²hh³jÌ"h´Mubj=)�”}”(hŒœ(const struct mnt_idmap *idmap, struct dentry *dentry, const char *name, const void *value, size_t size, int flags, struct delegated_inode *delegated_inode)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjû"h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj÷"ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj÷"ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj÷"ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj##h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj÷"ubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hj4#h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj1#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j6#Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjá"sbŒc.__vfs_setxattr_locked”†”asbuh1hhj÷"ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT#h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj÷"ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjb#h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj÷"ubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hjo#h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj÷"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjó"ubjC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjˆ#h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj„#ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•#h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj„#ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj¦#h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj£#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¨#Œmodname”NŒ classname”Njj )�”}”j ]”jP#Œc.__vfs_setxattr_locked”†”asbuh1hhj„#ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄ#h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj„#ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÒ#h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj„#ubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjß#h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj„#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjó"ubjC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjø#h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjô#ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjô#ubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjô#ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!$h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjô#ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj/$h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjô#ubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj<$h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjô#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjó"ubjC)�”}”(hŒconst void *value”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjU$h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjQ$ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjb$h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjQ$ubj�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjp$h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjQ$ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~$h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjQ$ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjŒ$h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjQ$ubjI)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hj™$h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjQ$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjó"ubjC)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjµ$h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj²$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j·$Œmodname”NŒ classname”Njj )�”}”j ]”jP#Œc.__vfs_setxattr_locked”†”asbuh1hhj®$ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓ$h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj®$ubjI)�”}”(hŒsize”h]”hŒsize”…”�”}”(hjá$h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj®$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjó"ubjC)�”}”(hŒ int flags”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjú$h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjö$ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjö$ubjI)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjö$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjó"ubjC)�”}”(hŒ'struct delegated_inode *delegated_inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj/%h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj+%ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<%h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj+%ubh)�”}”(hhh]”jI)�”}”(hŒdelegated_inode”h]”hŒdelegated_inode”…”�”}”(hjM%h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjJ%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jO%Œmodname”NŒ classname”Njj )�”}”j ]”jP#Œc.__vfs_setxattr_locked”†”asbuh1hhj+%ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjk%h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj+%ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjy%h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj+%ubjI)�”}”(hŒdelegated_inode”h]”hŒdelegated_inode”…”�”}”(hj†%h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj+%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjó"ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjº"h²hh³jÌ"h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj¶"h²hh³jÌ"h´Mubah}”(h]”j±"ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÌ"h´Mhj³"h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ6set an extended attribute while holding the inode lock”h]”hŒ6set an extended attribute while holding the inode lock”…”�”}”(hj°%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´Mhj­%h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj³"h²hh³jÌ"h´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÈ%jšjÈ%j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXÙ**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount of the target inode ``struct dentry *dentry`` object to perform setxattr on ``const char *name`` xattr name to set ``const void *value`` value to set **name** to ``size_t size`` size of **value** ``int flags`` flags to pass into filesystem operations ``struct delegated_inode *delegated_inode`` on return, will contain an inode pointer that a delegation was broken on, NULL if none.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÒ%h]”hŒ Parameters”…”�”}”(hjÔ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÐ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´M!hjÌ%ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒI``const struct mnt_idmap *idmap`` idmap of the mount of the target inode ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjñ%h]”hŒconst struct mnt_idmap *idmap”…”�”}”(hjó%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjï%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´M hjë%ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ&idmap of the mount of the target inode”h]”hŒ&idmap of the mount of the target inode”…”�”}”(hj &h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j&h´M hj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjë%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j&h´M hjè%ubjÄ)�”}”(hŒ8``struct dentry *dentry`` object to perform setxattr on ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hj*&h]”hŒstruct dentry *dentry”…”�”}”(hj,&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj(&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´M!hj$&ubjæ)�”}”(hhh]”hÌ)�”}”(hŒobject to perform setxattr on”h]”hŒobject to perform setxattr on”…”�”}”(hjC&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j?&h´M!hj@&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj$&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j?&h´M!hjè%ubjÄ)�”}”(hŒ'``const char *name`` xattr name to set ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hjc&h]”hŒconst char *name”…”�”}”(hje&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhja&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´M"hj]&ubjæ)�”}”(hhh]”hÌ)�”}”(hŒxattr name to set”h]”hŒxattr name to set”…”�”}”(hj|&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jx&h´M"hjy&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj]&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jx&h´M"hjè%ubjÄ)�”}”(hŒ/``const void *value`` value to set **name** to ”h]”(jÊ)�”}”(hŒ``const void *value``”h]”jÐ)�”}”(hjœ&h]”hŒconst void *value”…”�”}”(hjž&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjš&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´M#hj–&ubjæ)�”}”(hhh]”hÌ)�”}”(hŒvalue to set **name** to”h]”(hŒ value to set ”…”�”}”(hjµ&h²hh³Nh´Nubj©)�”}”(hŒ**name**”h]”hŒname”…”�”}”(hj½&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjµ&ubhŒ to”…”�”}”(hjµ&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j±&h´M#hj²&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj–&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j±&h´M#hjè%ubjÄ)�”}”(hŒ"``size_t size`` size of **value** ”h]”(jÊ)�”}”(hŒ``size_t size``”h]”jÐ)�”}”(hjç&h]”hŒ size_t size”…”�”}”(hjé&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjå&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´M$hjá&ubjæ)�”}”(hhh]”hÌ)�”}”(hŒsize of **value**”h]”(hŒsize of ”…”�”}”(hj'h²hh³Nh´Nubj©)�”}”(hŒ **value**”h]”hŒvalue”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jü&h´M$hjý&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjá&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jü&h´M$hjè%ubjÄ)�”}”(hŒ7``int flags`` flags to pass into filesystem operations ”h]”(jÊ)�”}”(hŒ ``int flags``”h]”jÐ)�”}”(hj.'h]”hŒ int flags”…”�”}”(hj0'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj,'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´M%hj('ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(flags to pass into filesystem operations”h]”hŒ(flags to pass into filesystem operations”…”�”}”(hjG'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jC'h´M%hjD'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj('ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jC'h´M%hjè%ubjÄ)�”}”(hŒƒ``struct delegated_inode *delegated_inode`` on return, will contain an inode pointer that a delegation was broken on, NULL if none.”h]”(jÊ)�”}”(hŒ+``struct delegated_inode *delegated_inode``”h]”jÐ)�”}”(hjg'h]”hŒ'struct delegated_inode *delegated_inode”…”�”}”(hji'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhje'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´M&hja'ubjæ)�”}”(hhh]”hÌ)�”}”(hŒWon return, will contain an inode pointer that a delegation was broken on, NULL if none.”h]”hŒWon return, will contain an inode pointer that a delegation was broken on, NULL if none.”…”�”}”(hj€'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j|'h´M&hj}'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhja'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j|'h´M&hjè%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÌ%ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_listxattr (C function)”Œc.vfs_listxattr”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒFssize_t vfs_listxattr (struct dentry *dentry, char *list, size_t size)”h]”j)�”}”(hŒEssize_t vfs_listxattr(struct dentry *dentry, char *list, size_t size)”h]”(h)�”}”(hhh]”jI)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hjÃ'h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÀ'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÅ'Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒ vfs_listxattr”sbŒc.vfs_listxattr”†”asbuh1hhj¼'h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´Mäubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjå'h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¼'h²hh³jä'h´MäubjC)�”}”(hŒ vfs_listxattr”h]”jI)�”}”(hjá'h]”hŒ vfs_listxattr”…”�”}”(hj÷'h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjó'ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj¼'h²hh³jä'h´Mäubj=)�”}”(hŒ0(struct dentry *dentry, char *list, size_t size)”h]”(jC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj(ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj(ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj0(h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj-(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j2(Œmodname”NŒ classname”Njj )�”}”j ]”jß'Œc.vfs_listxattr”†”asbuh1hhj(ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN(h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj(ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj\(h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj(ubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hji(h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj (ubjC)�”}”(hŒ char *list”h]”(j�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj‚(h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj~(ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�(h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj~(ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjž(h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj~(ubjI)�”}”(hŒlist”h]”hŒlist”…”�”}”(hj«(h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj~(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj (ubjC)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjÇ(h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÄ(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÉ(Œmodname”NŒ classname”Njj )�”}”j ]”jß'Œc.vfs_listxattr”†”asbuh1hhjÀ(ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjå(h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÀ(ubjI)�”}”(hŒsize”h]”hŒsize”…”�”}”(hjó(h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÀ(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj (ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj¼'h²hh³jä'h´Mäubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj¸'h²hh³jä'h´Mäubah}”(h]”j³'ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jä'h´Mähjµ'h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ)retrieve \0 separated list of xattr names”h]”hŒ)retrieve 0 separated list of xattr names”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´Mähj)h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjµ'h²hh³jä'h´Mäubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j5)jšj5)j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX0**Parameters** ``struct dentry *dentry`` the dentry from whose inode the xattr names are retrieved ``char *list`` buffer to store xattr names into ``size_t size`` size of the buffer **Description** This function returns the names of all xattrs associated with the inode of **dentry**. Note, for legacy reasons the vfs_listxattr() function lists POSIX ACLs as well. Since POSIX ACLs are decoupled from IOP_XATTR the vfs_listxattr() function doesn't check for this flag since a filesystem could implement POSIX ACLs without implementing any other xattrs. However, since all codepaths that remove IOP_XATTR also assign of inode operations that either don't implement or implement a stub ->listxattr() operation. **Return** On success, the size of the buffer that was used. On error a negative error code.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj?)h]”hŒ Parameters”…”�”}”(hjA)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj=)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´Mèhj9)ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒT``struct dentry *dentry`` the dentry from whose inode the xattr names are retrieved ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hj^)h]”hŒstruct dentry *dentry”…”�”}”(hj`)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj\)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´MåhjX)ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ9the dentry from whose inode the xattr names are retrieved”h]”hŒ9the dentry from whose inode the xattr names are retrieved”…”�”}”(hjw)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³js)h´Måhjt)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjX)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³js)h´MåhjU)ubjÄ)�”}”(hŒ0``char *list`` buffer to store xattr names into ”h]”(jÊ)�”}”(hŒ``char *list``”h]”jÐ)�”}”(hj—)h]”hŒ char *list”…”�”}”(hj™)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj•)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´Mæhj‘)ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ buffer to store xattr names into”h]”hŒ buffer to store xattr names into”…”�”}”(hj°)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¬)h´Mæhj­)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj‘)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¬)h´MæhjU)ubjÄ)�”}”(hŒ#``size_t size`` size of the buffer ”h]”(jÊ)�”}”(hŒ``size_t size``”h]”jÐ)�”}”(hjÐ)h]”hŒ size_t size”…”�”}”(hjÒ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÎ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´MçhjÊ)ubjæ)�”}”(hhh]”hÌ)�”}”(hŒsize of the buffer”h]”hŒsize of the buffer”…”�”}”(hjé)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jå)h´Mçhjæ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÊ)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jå)h´MçhjU)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj9)ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj *h]”hŒ Description”…”�”}”(hj *h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj *ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´Méhj9)ubhÌ)�”}”(hŒVThis function returns the names of all xattrs associated with the inode of **dentry**.”h]”(hŒKThis function returns the names of all xattrs associated with the inode of ”…”�”}”(hj!*h²hh³Nh´Nubj©)�”}”(hŒ **dentry**”h]”hŒdentry”…”�”}”(hj)*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj!*ubhŒ.”…”�”}”(hj!*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´Mèhj9)ubhÌ)�”}”(hX Note, for legacy reasons the vfs_listxattr() function lists POSIX ACLs as well. Since POSIX ACLs are decoupled from IOP_XATTR the vfs_listxattr() function doesn't check for this flag since a filesystem could implement POSIX ACLs without implementing any other xattrs.”h]”hX Note, for legacy reasons the vfs_listxattr() function lists POSIX ACLs as well. Since POSIX ACLs are decoupled from IOP_XATTR the vfs_listxattr() function doesn’t check for this flag since a filesystem could implement POSIX ACLs without implementing any other xattrs.”…”�”}”(hjB*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´Mëhj9)ubhÌ)�”}”(hŒ›However, since all codepaths that remove IOP_XATTR also assign of inode operations that either don't implement or implement a stub ->listxattr() operation.”h]”hŒ�However, since all codepaths that remove IOP_XATTR also assign of inode operations that either don’t implement or implement a stub ->listxattr() operation.”…”�”}”(hjQ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´Mñhj9)ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjb*h]”hŒReturn”…”�”}”(hjd*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj`*ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´Mõhj9)ubhÌ)�”}”(hŒQOn success, the size of the buffer that was used. On error a negative error code.”h]”hŒQOn success, the size of the buffer that was used. On error a negative error code.”…”�”}”(hjx*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´Möhj9)ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ%__vfs_removexattr_locked (C function)”Œc.__vfs_removexattr_locked”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒŽint __vfs_removexattr_locked (const struct mnt_idmap *idmap, struct dentry *dentry, const char *name, struct delegated_inode *delegated_inode)”h]”j)�”}”(hŒ�int __vfs_removexattr_locked(const struct mnt_idmap *idmap, struct dentry *dentry, const char *name, struct delegated_inode *delegated_inode)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj§*h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj£*h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´M&ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶*h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj£*h²hh³jµ*h´M&ubjC)�”}”(hŒ__vfs_removexattr_locked”h]”jI)�”}”(hŒ__vfs_removexattr_locked”h]”hŒ__vfs_removexattr_locked”…”�”}”(hjÈ*h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÄ*ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj£*h²hh³jµ*h´M&ubj=)�”}”(hŒq(const struct mnt_idmap *idmap, struct dentry *dentry, const char *name, struct delegated_inode *delegated_inode)”h]”(jC)�”}”(hŒconst struct mnt_idmap *idmap”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjä*h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjà*ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ*h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjà*ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÿ*h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjà*ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj +h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjà*ubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j+Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÊ*sbŒc.__vfs_removexattr_locked”†”asbuh1hhjà*ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=+h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjà*ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjK+h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjà*ubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hjX+h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjà*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÜ*ubjC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjq+h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjm+ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~+h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjm+ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj�+h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŒ+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j‘+Œmodname”NŒ classname”Njj )�”}”j ]”j9+Œc.__vfs_removexattr_locked”†”asbuh1hhjm+ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­+h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjm+ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj»+h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjm+ubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjÈ+h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjm+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÜ*ubjC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjá+h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÝ+ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjî+h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÝ+ubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjü+h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÝ+ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ,h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÝ+ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÝ+ubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj%,h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÝ+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÜ*ubjC)�”}”(hŒ'struct delegated_inode *delegated_inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj>,h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj:,ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjK,h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj:,ubh)�”}”(hhh]”jI)�”}”(hŒdelegated_inode”h]”hŒdelegated_inode”…”�”}”(hj\,h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjY,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j^,Œmodname”NŒ classname”Njj )�”}”j ]”j9+Œc.__vfs_removexattr_locked”†”asbuh1hhj:,ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz,h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj:,ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjˆ,h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj:,ubjI)�”}”(hŒdelegated_inode”h]”hŒdelegated_inode”…”�”}”(hj•,h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj:,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÜ*ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj£*h²hh³jµ*h´M&ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjŸ*h²hh³jµ*h´M&ubah}”(h]”jš*ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jµ*h´M&hjœ*h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ6set an extended attribute while holding the inode lock”h]”hŒ6set an extended attribute while holding the inode lock”…”�”}”(hj¿,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´M&hj¼,h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjœ*h²hh³jµ*h´M&ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j×,jšj×,j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXN**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount of the target inode ``struct dentry *dentry`` object to perform setxattr on ``const char *name`` name of xattr to remove ``struct delegated_inode *delegated_inode`` on return, will contain an inode pointer that a delegation was broken on, NULL if none.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjá,h]”hŒ Parameters”…”�”}”(hjã,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjß,ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´M*hjÛ,ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒI``const struct mnt_idmap *idmap`` idmap of the mount of the target inode ”h]”(jÊ)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj-h]”hŒconst struct mnt_idmap *idmap”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjþ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´M)hjú,ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ&idmap of the mount of the target inode”h]”hŒ&idmap of the mount of the target inode”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j-h´M)hj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjú,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j-h´M)hj÷,ubjÄ)�”}”(hŒ8``struct dentry *dentry`` object to perform setxattr on ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hj9-h]”hŒstruct dentry *dentry”…”�”}”(hj;-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj7-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´M*hj3-ubjæ)�”}”(hhh]”hÌ)�”}”(hŒobject to perform setxattr on”h]”hŒobject to perform setxattr on”…”�”}”(hjR-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jN-h´M*hjO-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj3-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jN-h´M*hj÷,ubjÄ)�”}”(hŒ-``const char *name`` name of xattr to remove ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hjr-h]”hŒconst char *name”…”�”}”(hjt-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjp-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´M+hjl-ubjæ)�”}”(hhh]”hÌ)�”}”(hŒname of xattr to remove”h]”hŒname of xattr to remove”…”�”}”(hj‹-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‡-h´M+hjˆ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjl-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‡-h´M+hj÷,ubjÄ)�”}”(hŒƒ``struct delegated_inode *delegated_inode`` on return, will contain an inode pointer that a delegation was broken on, NULL if none.”h]”(jÊ)�”}”(hŒ+``struct delegated_inode *delegated_inode``”h]”jÐ)�”}”(hj«-h]”hŒ'struct delegated_inode *delegated_inode”…”�”}”(hj­-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj©-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´M,hj¥-ubjæ)�”}”(hhh]”hÌ)�”}”(hŒWon return, will contain an inode pointer that a delegation was broken on, NULL if none.”h]”hŒWon return, will contain an inode pointer that a delegation was broken on, NULL if none.”…”�”}”(hjÄ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÀ-h´M,hjÁ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¥-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÀ-h´M,hj÷,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÛ,ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œgeneric_listxattr (C function)”Œc.generic_listxattr”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒSssize_t generic_listxattr (struct dentry *dentry, char *buffer, size_t buffer_size)”h]”j)�”}”(hŒRssize_t generic_listxattr(struct dentry *dentry, char *buffer, size_t buffer_size)”h]”(h)�”}”(hhh]”jI)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj.ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j .Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒgeneric_listxattr”sbŒc.generic_listxattr”†”asbuh1hhj.h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´Msubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj).h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj.h²hh³j(.h´MsubjC)�”}”(hŒgeneric_listxattr”h]”jI)�”}”(hj%.h]”hŒgeneric_listxattr”…”�”}”(hj;.h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj7.ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj.h²hh³j(.h´Msubj=)�”}”(hŒ9(struct dentry *dentry, char *buffer, size_t buffer_size)”h]”(jC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjV.h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjR.ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc.h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjR.ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjt.h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjq.ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jv.Œmodname”NŒ classname”Njj )�”}”j ]”j#.Œc.generic_listxattr”†”asbuh1hhjR.ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’.h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjR.ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj .h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjR.ubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj­.h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjR.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjN.ubjC)�”}”(hŒ char *buffer”h]”(j�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÆ.h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÂ.ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ.h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÂ.ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjâ.h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÂ.ubjI)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hjï.h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÂ.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjN.ubjC)�”}”(hŒsize_t buffer_size”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj /h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j /Œmodname”NŒ classname”Njj )�”}”j ]”j#.Œc.generic_listxattr”†”asbuh1hhj/ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)/h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj/ubjI)�”}”(hŒ buffer_size”h]”hŒ buffer_size”…”�”}”(hj7/h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjN.ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj.h²hh³j(.h´Msubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjü-h²hh³j(.h´Msubah}”(h]”j÷-ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j(.h´Mshjù-h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ.run through a dentry's xattr list() operations”h]”hŒ0run through a dentry’s xattr list() operations”…”�”}”(hja/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´Mshj^/h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjù-h²hh³j(.h´Msubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jy/jšjy/j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXD**Parameters** ``struct dentry *dentry`` dentry to list the xattrs ``char *buffer`` result buffer ``size_t buffer_size`` size of **buffer** **Description** Combine the results of the list() operation from every xattr_handler in the xattr_handler stack. Note that this will not include the entries for POSIX ACLs.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjƒ/h]”hŒ Parameters”…”�”}”(hj…/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj�/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´Mwhj}/ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ4``struct dentry *dentry`` dentry to list the xattrs ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hj¢/h]”hŒstruct dentry *dentry”…”�”}”(hj¤/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj /ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´Mthjœ/ubjæ)�”}”(hhh]”hÌ)�”}”(hŒdentry to list the xattrs”h]”hŒdentry to list the xattrs”…”�”}”(hj»/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j·/h´Mthj¸/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjœ/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j·/h´Mthj™/ubjÄ)�”}”(hŒ``char *buffer`` result buffer ”h]”(jÊ)�”}”(hŒ``char *buffer``”h]”jÐ)�”}”(hjÛ/h]”hŒ char *buffer”…”�”}”(hjÝ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÙ/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´MuhjÕ/ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ result buffer”h]”hŒ result buffer”…”�”}”(hjô/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jð/h´Muhjñ/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÕ/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jð/h´Muhj™/ubjÄ)�”}”(hŒ*``size_t buffer_size`` size of **buffer** ”h]”(jÊ)�”}”(hŒ``size_t buffer_size``”h]”jÐ)�”}”(hj0h]”hŒsize_t buffer_size”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´Mvhj0ubjæ)�”}”(hhh]”hÌ)�”}”(hŒsize of **buffer**”h]”(hŒsize of ”…”�”}”(hj-0h²hh³Nh´Nubj©)�”}”(hŒ **buffer**”h]”hŒbuffer”…”�”}”(hj50h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj-0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j)0h´Mvhj*0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j)0h´Mvhj™/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj}/ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj]0h]”hŒ Description”…”�”}”(hj_0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj[0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´Mxhj}/ubhÌ)�”}”(hŒ`Combine the results of the list() operation from every xattr_handler in the xattr_handler stack.”h]”hŒ`Combine the results of the list() operation from every xattr_handler in the xattr_handler stack.”…”�”}”(hjs0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´Mwhj}/ubhÌ)�”}”(hŒ;Note that this will not include the entries for POSIX ACLs.”h]”hŒ;Note that this will not include the entries for POSIX ACLs.”…”�”}”(hj‚0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´Mzhj}/ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œxattr_full_name (C function)”Œc.xattr_full_name”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒTconst char * xattr_full_name (const struct xattr_handler *handler, const char *name)”h]”j)�”}”(hŒRconst char *xattr_full_name(const struct xattr_handler *handler, const char *name)”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj±0h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj­0h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´M’ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿0h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj­0h²hh³j¾0h´M’ubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÍ0h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj­0h²hh³j¾0h´M’ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ0h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj­0h²hh³j¾0h´M’ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjé0h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj­0h²hh³j¾0h´M’ubjC)�”}”(hŒxattr_full_name”h]”jI)�”}”(hŒxattr_full_name”h]”hŒxattr_full_name”…”�”}”(hjú0h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjö0ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj­0h²hh³j¾0h´M’ubj=)�”}”(hŒ7(const struct xattr_handler *handler, const char *name)”h]”(jC)�”}”(hŒ#const struct xattr_handler *handler”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj1ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#1h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj1ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj11h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj1ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>1h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj1ubh)�”}”(hhh]”jI)�”}”(hŒ xattr_handler”h]”hŒ xattr_handler”…”�”}”(hjO1h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjL1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jQ1Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjü0sbŒc.xattr_full_name”†”asbuh1hhj1ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo1h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj1ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj}1h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj1ubjI)�”}”(hŒhandler”h]”hŒhandler”…”�”}”(hjŠ1h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj1ubjC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj£1h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjŸ1ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°1h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjŸ1ubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj¾1h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjŸ1ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌ1h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjŸ1ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÚ1h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjŸ1ubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hjç1h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŸ1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj1ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj­0h²hh³j¾0h´M’ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj©0h²hh³j¾0h´M’ubah}”(h]”j¤0ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j¾0h´M’hj¦0h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ'Compute full attribute name from suffix”h]”hŒ'Compute full attribute name from suffix”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´M’hj2h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¦0h²hh³j¾0h´M’ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j)2jšj)2j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX€**Parameters** ``const struct xattr_handler *handler`` handler of the xattr_handler operation ``const char *name`` name passed to the xattr_handler operation **Description** The get and set xattr handler operations are called with the remainder of the attribute name after skipping the handler's prefix: for example, "foo" is passed to the get operation of a handler with prefix "user." to get attribute "user.foo". The full name is still "there" in the name though. **Note** the list xattr handler operation when called from the vfs is passed a NULL name; some file systems use this operation internally, with varying semantics.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj32h]”hŒ Parameters”…”�”}”(hj52h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj12ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´M–hj-2ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒO``const struct xattr_handler *handler`` handler of the xattr_handler operation ”h]”(jÊ)�”}”(hŒ'``const struct xattr_handler *handler``”h]”jÐ)�”}”(hjR2h]”hŒ#const struct xattr_handler *handler”…”�”}”(hjT2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjP2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´M”hjL2ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ&handler of the xattr_handler operation”h]”hŒ&handler of the xattr_handler operation”…”�”}”(hjk2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jg2h´M”hjh2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjL2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jg2h´M”hjI2ubjÄ)�”}”(hŒ@``const char *name`` name passed to the xattr_handler operation ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hj‹2h]”hŒconst char *name”…”�”}”(hj�2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj‰2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´M•hj…2ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ*name passed to the xattr_handler operation”h]”hŒ*name passed to the xattr_handler operation”…”�”}”(hj¤2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j 2h´M•hj¡2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj…2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j 2h´M•hjI2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj-2ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÆ2h]”hŒ Description”…”�”}”(hjÈ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÄ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´M—hj-2ubhÌ)�”}”(hX%The get and set xattr handler operations are called with the remainder of the attribute name after skipping the handler's prefix: for example, "foo" is passed to the get operation of a handler with prefix "user." to get attribute "user.foo". The full name is still "there" in the name though.”h]”hX7The get and set xattr handler operations are called with the remainder of the attribute name after skipping the handler’s prefix: for example, “fooâ€� is passed to the get operation of a handler with prefix “user.â€� to get attribute “user.fooâ€�. The full name is still “thereâ€� in the name though.”…”�”}”(hjÜ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´M–hj-2ubhÌ)�”}”(hŒ**Note**”h]”j©)�”}”(hjí2h]”hŒNote”…”�”}”(hjï2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjë2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´M›hj-2ubhÌ)�”}”(hŒ™the list xattr handler operation when called from the vfs is passed a NULL name; some file systems use this operation internally, with varying semantics.”h]”hŒ™the list xattr handler operation when called from the vfs is passed a NULL name; some file systems use this operation internally, with varying semantics.”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´Mœhj-2ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ!mnt_get_write_access (C function)”Œc.mnt_get_write_access”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ-int mnt_get_write_access (struct vfsmount *m)”h]”j)�”}”(hŒ,int mnt_get_write_access(struct vfsmount *m)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj23h²hh³Nh´Nuba•h}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj.3h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MÌubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjA3h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj.3h²hh³j@3h´MÌubjC)�”}”(hŒmnt_get_write_access”h]”jI)�”}”(hŒmnt_get_write_access”h]”hŒmnt_get_write_access”…”�”}”(hjS3h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjO3ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj.3h²hh³j@3h´MÌubj=)�”}”(hŒ(struct vfsmount *m)”h]”jC)�”}”(hŒstruct vfsmount *m”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjo3h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjk3ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|3h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjk3ubh)�”}”(hhh]”jI)�”}”(hŒvfsmount”h]”hŒvfsmount”…”�”}”(hj�3h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŠ3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j�3Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjU3sbŒc.mnt_get_write_access”†”asbuh1hhjk3ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­3h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjk3ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj»3h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjk3ubjI)�”}”(hj»Nh]”hŒm”…”�”}”(hjÈ3h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjk3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjg3ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj.3h²hh³j@3h´MÌubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj*3h²hh³j@3h´MÌubah}”(h]”j%3ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j@3h´MÌhj'3h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ5get write access to a mount without freeze protection”h]”hŒ5get write access to a mount without freeze protection”…”�”}”(hjñ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MÌhjî3h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj'3h²hh³j@3h´MÌubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j 4jšj 4j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX±**Parameters** ``struct vfsmount *m`` the mount on which to take a write **Description** This tells the low-level filesystem that a write is about to be performed to it, and makes sure that writes are allowed (mnt it read-write) before returning success. This operation does not protect against filesystem being frozen. When the write operation is finished, mnt_put_write_access() must be called. This is effectively a refcount.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj4h]”hŒ Parameters”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MÐhj 4ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ:``struct vfsmount *m`` the mount on which to take a write ”h]”(jÊ)�”}”(hŒ``struct vfsmount *m``”h]”jÐ)�”}”(hj24h]”hŒstruct vfsmount *m”…”�”}”(hj44h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj04ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MÍhj,4ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ"the mount on which to take a write”h]”hŒ"the mount on which to take a write”…”�”}”(hjK4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jG4h´MÍhjH4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj,4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jG4h´MÍhj)4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj 4ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjm4h]”hŒ Description”…”�”}”(hjo4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjk4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MÏhj 4ubhÌ)�”}”(hXSThis tells the low-level filesystem that a write is about to be performed to it, and makes sure that writes are allowed (mnt it read-write) before returning success. This operation does not protect against filesystem being frozen. When the write operation is finished, mnt_put_write_access() must be called. This is effectively a refcount.”h]”hXSThis tells the low-level filesystem that a write is about to be performed to it, and makes sure that writes are allowed (mnt it read-write) before returning success. This operation does not protect against filesystem being frozen. When the write operation is finished, mnt_put_write_access() must be called. This is effectively a refcount.”…”�”}”(hjƒ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MÎhj 4ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œmnt_want_write (C function)”Œc.mnt_want_write”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ'int mnt_want_write (struct vfsmount *m)”h]”j)�”}”(hŒ&int mnt_want_write(struct vfsmount *m)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj²4h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj®4h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁ4h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj®4h²hh³jÀ4h´MubjC)�”}”(hŒmnt_want_write”h]”jI)�”}”(hŒmnt_want_write”h]”hŒmnt_want_write”…”�”}”(hjÓ4h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÏ4ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj®4h²hh³jÀ4h´Mubj=)�”}”(hŒ(struct vfsmount *m)”h]”jC)�”}”(hŒstruct vfsmount *m”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjï4h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjë4ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjü4h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjë4ubh)�”}”(hhh]”jI)�”}”(hŒvfsmount”h]”hŒvfsmount”…”�”}”(hj 5h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj 5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j5Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÕ4sbŒc.mnt_want_write”†”asbuh1hhjë4ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-5h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjë4ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj;5h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjë4ubjI)�”}”(hj»Nh]”hŒm”…”�”}”(hjH5h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjë4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjç4ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj®4h²hh³jÀ4h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjª4h²hh³jÀ4h´Mubah}”(h]”j¥4ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÀ4h´Mhj§4h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒget write access to a mount”h]”hŒget write access to a mount”…”�”}”(hjq5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´Mhjn5h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj§4h²hh³jÀ4h´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j‰5jšj‰5j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXˆ**Parameters** ``struct vfsmount *m`` the mount on which to take a write **Description** This tells the low-level filesystem that a write is about to be performed to it, and makes sure that writes are allowed (mount is read-write, filesystem is not frozen) before returning success. When the write operation is finished, mnt_drop_write() must be called. This is effectively a refcount.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj“5h]”hŒ Parameters”…”�”}”(hj•5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‘5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´M hj�5ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ:``struct vfsmount *m`` the mount on which to take a write ”h]”(jÊ)�”}”(hŒ``struct vfsmount *m``”h]”jÐ)�”}”(hj²5h]”hŒstruct vfsmount *m”…”�”}”(hj´5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj°5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´Mhj¬5ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ"the mount on which to take a write”h]”hŒ"the mount on which to take a write”…”�”}”(hjË5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÇ5h´MhjÈ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¬5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÇ5h´Mhj©5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj�5ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjí5h]”hŒ Description”…”�”}”(hjï5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjë5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´M hj�5ubhÌ)�”}”(hX*This tells the low-level filesystem that a write is about to be performed to it, and makes sure that writes are allowed (mount is read-write, filesystem is not frozen) before returning success. When the write operation is finished, mnt_drop_write() must be called. This is effectively a refcount.”h]”hX*This tells the low-level filesystem that a write is about to be performed to it, and makes sure that writes are allowed (mount is read-write, filesystem is not frozen) before returning success. When the write operation is finished, mnt_drop_write() must be called. This is effectively a refcount.”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´M hj�5ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ mnt_want_write_file (C function)”Œc.mnt_want_write_file”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ+int mnt_want_write_file (struct file *file)”h]”j)�”}”(hŒ*int mnt_want_write_file(struct file *file)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj26h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj.6h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´M3ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjA6h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj.6h²hh³j@6h´M3ubjC)�”}”(hŒmnt_want_write_file”h]”jI)�”}”(hŒmnt_want_write_file”h]”hŒmnt_want_write_file”…”�”}”(hjS6h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjO6ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj.6h²hh³j@6h´M3ubj=)�”}”(hŒ(struct file *file)”h]”jC)�”}”(hŒstruct file *file”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjo6h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjk6ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|6h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjk6ubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj�6h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŠ6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j�6Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjU6sbŒc.mnt_want_write_file”†”asbuh1hhjk6ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­6h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjk6ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj»6h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjk6ubjI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjÈ6h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjk6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjg6ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj.6h²hh³j@6h´M3ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj*6h²hh³j@6h´M3ubah}”(h]”j%6ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j@6h´M3hj'6h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ"get write access to a file's mount”h]”hŒ$get write access to a file’s mount”…”�”}”(hjò6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´M3hjï6h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj'6h²hh³j@6h´M3ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j 7jšj 7j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX…**Parameters** ``struct file *file`` the file who's mount on which to take a write **Description** This is like mnt_want_write, but if the file is already open for writing it skips incrementing mnt_writers (since the open file already has a reference) and instead only does the freeze protection and the check for emergency r/o remounts. This must be paired with mnt_drop_write_file.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj7h]”hŒ Parameters”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´M7hj7ubj¿)�”}”(hhh]”jÄ)�”}”(hŒD``struct file *file`` the file who's mount on which to take a write ”h]”(jÊ)�”}”(hŒ``struct file *file``”h]”jÐ)�”}”(hj37h]”hŒstruct file *file”…”�”}”(hj57h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj17ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´M4hj-7ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ-the file who's mount on which to take a write”h]”hŒ/the file who’s mount on which to take a write”…”�”}”(hjL7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jH7h´M4hjI7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj-7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jH7h´M4hj*7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj7ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjn7h]”hŒ Description”…”�”}”(hjp7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjl7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´M6hj7ubhÌ)�”}”(hXThis is like mnt_want_write, but if the file is already open for writing it skips incrementing mnt_writers (since the open file already has a reference) and instead only does the freeze protection and the check for emergency r/o remounts. This must be paired with mnt_drop_write_file.”h]”hXThis is like mnt_want_write, but if the file is already open for writing it skips incrementing mnt_writers (since the open file already has a reference) and instead only does the freeze protection and the check for emergency r/o remounts. This must be paired with mnt_drop_write_file.”…”�”}”(hj„7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´M5hj7ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ!mnt_put_write_access (C function)”Œc.mnt_put_write_access”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ0void mnt_put_write_access (struct vfsmount *mnt)”h]”j)�”}”(hŒ/void mnt_put_write_access(struct vfsmount *mnt)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj³7h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¯7h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MHubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂ7h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¯7h²hh³jÁ7h´MHubjC)�”}”(hŒmnt_put_write_access”h]”jI)�”}”(hŒmnt_put_write_access”h]”hŒmnt_put_write_access”…”�”}”(hjÔ7h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÐ7ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj¯7h²hh³jÁ7h´MHubj=)�”}”(hŒ(struct vfsmount *mnt)”h]”jC)�”}”(hŒstruct vfsmount *mnt”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjð7h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjì7ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjý7h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjì7ubh)�”}”(hhh]”jI)�”}”(hŒvfsmount”h]”hŒvfsmount”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj 8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j8Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÖ7sbŒc.mnt_put_write_access”†”asbuh1hhjì7ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.8h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjì7ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj<8h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjì7ubjI)�”}”(hŒmnt”h]”hŒmnt”…”�”}”(hjI8h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjì7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjè7ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj¯7h²hh³jÁ7h´MHubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj«7h²hh³jÁ7h´MHubah}”(h]”j¦7ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÁ7h´MHhj¨7h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒgive up write access to a mount”h]”hŒgive up write access to a mount”…”�”}”(hjs8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MHhjp8h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¨7h²hh³jÁ7h´MHubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j‹8jšj‹8j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hŒé**Parameters** ``struct vfsmount *mnt`` the mount on which to give up write access **Description** Tells the low-level filesystem that we are done performing writes to it. Must be matched with mnt_get_write_access() call above.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj•8h]”hŒ Parameters”…”�”}”(hj—8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj“8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MLhj�8ubj¿)�”}”(hhh]”jÄ)�”}”(hŒD``struct vfsmount *mnt`` the mount on which to give up write access ”h]”(jÊ)�”}”(hŒ``struct vfsmount *mnt``”h]”jÐ)�”}”(hj´8h]”hŒstruct vfsmount *mnt”…”�”}”(hj¶8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj²8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MIhj®8ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ*the mount on which to give up write access”h]”hŒ*the mount on which to give up write access”…”�”}”(hjÍ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÉ8h´MIhjÊ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj®8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÉ8h´MIhj«8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj�8ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjï8h]”hŒ Description”…”�”}”(hjñ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjí8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MKhj�8ubhÌ)�”}”(hŒ�Tells the low-level filesystem that we are done performing writes to it. Must be matched with mnt_get_write_access() call above.”h]”hŒ�Tells the low-level filesystem that we are done performing writes to it. Must be matched with mnt_get_write_access() call above.”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MJhj�8ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œmnt_drop_write (C function)”Œc.mnt_drop_write”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ*void mnt_drop_write (struct vfsmount *mnt)”h]”j)�”}”(hŒ)void mnt_drop_write(struct vfsmount *mnt)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj49h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj09h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MXubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjC9h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj09h²hh³jB9h´MXubjC)�”}”(hŒmnt_drop_write”h]”jI)�”}”(hŒmnt_drop_write”h]”hŒmnt_drop_write”…”�”}”(hjU9h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjQ9ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj09h²hh³jB9h´MXubj=)�”}”(hŒ(struct vfsmount *mnt)”h]”jC)�”}”(hŒstruct vfsmount *mnt”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjq9h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjm9ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~9h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjm9ubh)�”}”(hhh]”jI)�”}”(hŒvfsmount”h]”hŒvfsmount”…”�”}”(hj�9h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŒ9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j‘9Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjW9sbŒc.mnt_drop_write”†”asbuh1hhjm9ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯9h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjm9ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj½9h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjm9ubjI)�”}”(hŒmnt”h]”hŒmnt”…”�”}”(hjÊ9h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjm9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhji9ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj09h²hh³jB9h´MXubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj,9h²hh³jB9h´MXubah}”(h]”j'9ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jB9h´MXhj)9h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒgive up write access to a mount”h]”hŒgive up write access to a mount”…”�”}”(hjô9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MXhjñ9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj)9h²hh³jB9h´MXubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j :jšj :j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX**Parameters** ``struct vfsmount *mnt`` the mount on which to give up write access **Description** Tells the low-level filesystem that we are done performing writes to it and also allows filesystem to be frozen again. Must be matched with mnt_want_write() call above.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj:h]”hŒ Parameters”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´M\hj:ubj¿)�”}”(hhh]”jÄ)�”}”(hŒD``struct vfsmount *mnt`` the mount on which to give up write access ”h]”(jÊ)�”}”(hŒ``struct vfsmount *mnt``”h]”jÐ)�”}”(hj5:h]”hŒstruct vfsmount *mnt”…”�”}”(hj7:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj3:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MYhj/:ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ*the mount on which to give up write access”h]”hŒ*the mount on which to give up write access”…”�”}”(hjN:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jJ:h´MYhjK:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj/:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jJ:h´MYhj,:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj:ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjp:h]”hŒ Description”…”�”}”(hjr:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjn:ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´M[hj:ubhÌ)�”}”(hŒ©Tells the low-level filesystem that we are done performing writes to it and also allows filesystem to be frozen again. Must be matched with mnt_want_write() call above.”h]”hŒ©Tells the low-level filesystem that we are done performing writes to it and also allows filesystem to be frozen again. Must be matched with mnt_want_write() call above.”…”�”}”(hj†:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MZhj:ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_create_mount (C function)”Œc.vfs_create_mount”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ:struct vfsmount * vfs_create_mount (struct fs_context *fc)”h]”j)�”}”(hŒ8struct vfsmount *vfs_create_mount(struct fs_context *fc)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjµ:h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj±:h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´Mäubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃ:h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj±:h²hh³jÂ:h´Mäubh)�”}”(hhh]”jI)�”}”(hŒvfsmount”h]”hŒvfsmount”…”�”}”(hjÔ:h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÑ:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÖ:Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒvfs_create_mount”sbŒc.vfs_create_mount”†”asbuh1hhj±:h²hh³jÂ:h´Mäubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ:h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj±:h²hh³jÂ:h´Mäubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj±:h²hh³jÂ:h´MäubjC)�”}”(hŒvfs_create_mount”h]”jI)�”}”(hjò:h]”hŒvfs_create_mount”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj;ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj±:h²hh³jÂ:h´Mäubj=)�”}”(hŒ(struct fs_context *fc)”h]”jC)�”}”(hŒstruct fs_context *fc”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj/;h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj+;ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<;h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj+;ubh)�”}”(hhh]”jI)�”}”(hŒ fs_context”h]”hŒ fs_context”…”�”}”(hjM;h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjJ;ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jO;Œmodname”NŒ classname”Njj )�”}”j ]”jð:Œc.vfs_create_mount”†”asbuh1hhj+;ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjk;h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj+;ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjy;h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj+;ubjI)�”}”(hŒfc”h]”hŒfc”…”�”}”(hj†;h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj+;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj';ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj±:h²hh³jÂ:h´Mäubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj­:h²hh³jÂ:h´Mäubah}”(h]”j¨:ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÂ:h´Mähjª:h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ*Create a mount for a configured superblock”h]”hŒ*Create a mount for a configured superblock”…”�”}”(hj°;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´Mähj­;h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjª:h²hh³jÂ:h´Mäubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÈ;jšjÈ;j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX+**Parameters** ``struct fs_context *fc`` The configuration context with the superblock attached **Description** Create a mount to an already configured superblock. If necessary, the caller should invoke vfs_get_tree() before calling this. Note that this does not attach the mount to anything.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÒ;h]”hŒ Parameters”…”�”}”(hjÔ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÐ;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MèhjÌ;ubj¿)�”}”(hhh]”jÄ)�”}”(hŒQ``struct fs_context *fc`` The configuration context with the superblock attached ”h]”(jÊ)�”}”(hŒ``struct fs_context *fc``”h]”jÐ)�”}”(hjñ;h]”hŒstruct fs_context *fc”…”�”}”(hjó;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjï;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´Måhjë;ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ6The configuration context with the superblock attached”h]”hŒ6The configuration context with the superblock attached”…”�”}”(hj <h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j<h´Måhj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjë;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j<h´Måhjè;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÌ;ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj,<h]”hŒ Description”…”�”}”(hj.<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj*<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MçhjÌ;ubhÌ)�”}”(hŒCreate a mount to an already configured superblock. If necessary, the caller should invoke vfs_get_tree() before calling this.”h]”hŒCreate a mount to an already configured superblock. If necessary, the caller should invoke vfs_get_tree() before calling this.”…”�”}”(hjB<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MæhjÌ;ubhÌ)�”}”(hŒ5Note that this does not attach the mount to anything.”h]”hŒ5Note that this does not attach the mount to anything.”…”�”}”(hjQ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MéhjÌ;ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œpath_is_mountpoint (C function)”Œc.path_is_mountpoint”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ1bool path_is_mountpoint (const struct path *path)”h]”j)�”}”(hŒ0bool path_is_mountpoint(const struct path *path)”h]”(j�)�”}”(hj„h]”hŒbool”…”�”}”(hj€<h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj|<h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´Mðubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽ<h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj|<h²hh³j�<h´MðubjC)�”}”(hŒpath_is_mountpoint”h]”jI)�”}”(hŒpath_is_mountpoint”h]”hŒpath_is_mountpoint”…”�”}”(hj <h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjœ<ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj|<h²hh³j�<h´Mðubj=)�”}”(hŒ(const struct path *path)”h]”jC)�”}”(hŒconst struct path *path”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj¼<h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¸<ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉ<h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¸<ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj×<h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¸<ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjä<h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¸<ubh)�”}”(hhh]”jI)�”}”(hŒpath”h]”hŒpath”…”�”}”(hjõ<h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjò<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j÷<Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj¢<sbŒc.path_is_mountpoint”†”asbuh1hhj¸<ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¸<ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj#=h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¸<ubjI)�”}”(hŒpath”h]”hŒpath”…”�”}”(hj0=h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¸<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj´<ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj|<h²hh³j�<h´Mðubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjx<h²hh³j�<h´Mðubah}”(h]”js<ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j�<h´Mðhju<h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ2Check if path is a mount in the current namespace.”h]”hŒ2Check if path is a mount in the current namespace.”…”�”}”(hjZ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MðhjW=h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhju<h²hh³j�<h´Mðubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jr=jšjr=j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX°**Parameters** ``const struct path *path`` path to check **Description** d_mountpoint() can only be used reliably to establish if a dentry is not mounted in any namespace and that common case is handled inline. d_mountpoint() isn't aware of the possibility there may be multiple mounts using a given dentry in a different namespace. This function checks if the passed in path is a mountpoint rather than the dentry alone.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj|=h]”hŒ Parameters”…”�”}”(hj~=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjz=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´Môhjv=ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ*``const struct path *path`` path to check ”h]”(jÊ)�”}”(hŒ``const struct path *path``”h]”jÐ)�”}”(hj›=h]”hŒconst struct path *path”…”�”}”(hj�=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj™=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´Mñhj•=ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ path to check”h]”hŒ path to check”…”�”}”(hj´=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j°=h´Mñhj±=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj•=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j°=h´Mñhj’=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjv=ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÖ=h]”hŒ Description”…”�”}”(hjØ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÔ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´Móhjv=ubjÁ™)�”}”(hX\d_mountpoint() can only be used reliably to establish if a dentry is not mounted in any namespace and that common case is handled inline. d_mountpoint() isn't aware of the possibility there may be multiple mounts using a given dentry in a different namespace. This function checks if the passed in path is a mountpoint rather than the dentry alone.”h]”hÌ)�”}”(hX\d_mountpoint() can only be used reliably to establish if a dentry is not mounted in any namespace and that common case is handled inline. d_mountpoint() isn't aware of the possibility there may be multiple mounts using a given dentry in a different namespace. This function checks if the passed in path is a mountpoint rather than the dentry alone.”h]”hX^d_mountpoint() can only be used reliably to establish if a dentry is not mounted in any namespace and that common case is handled inline. d_mountpoint() isn’t aware of the possibility there may be multiple mounts using a given dentry in a different namespace. This function checks if the passed in path is a mountpoint rather than the dentry alone.”…”�”}”(hjð=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´Mòhjì=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀ™h³jþ=h´Mòhjv=ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œmay_umount_tree (C function)”Œc.may_umount_tree”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ(int may_umount_tree (struct vfsmount *m)”h]”j)�”}”(hŒ'int may_umount_tree(struct vfsmount *m)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj%>h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj!>h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´M€ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4>h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj!>h²hh³j3>h´M€ubjC)�”}”(hŒmay_umount_tree”h]”jI)�”}”(hŒmay_umount_tree”h]”hŒmay_umount_tree”…”�”}”(hjF>h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjB>ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj!>h²hh³j3>h´M€ubj=)�”}”(hŒ(struct vfsmount *m)”h]”jC)�”}”(hŒstruct vfsmount *m”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjb>h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj^>ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo>h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj^>ubh)�”}”(hhh]”jI)�”}”(hŒvfsmount”h]”hŒvfsmount”…”�”}”(hj€>h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj}>ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j‚>Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjH>sbŒc.may_umount_tree”†”asbuh1hhj^>ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj >h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj^>ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj®>h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj^>ubjI)�”}”(hj»Nh]”hŒm”…”�”}”(hj»>h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj^>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjZ>ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj!>h²hh³j3>h´M€ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj>h²hh³j3>h´M€ubah}”(h]”j>ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j3>h´M€hj>h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒcheck if a mount tree is busy”h]”hŒcheck if a mount tree is busy”…”�”}”(hjä>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´M€hjá>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj>h²hh³j3>h´M€ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jü>jšjü>j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hŒ¸**Parameters** ``struct vfsmount *m`` root of mount tree **Description** This is called to check if a tree of mounts has any open files, pwds, chroots or sub mounts that are busy.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj?h]”hŒ Parameters”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´M„hj?ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ*``struct vfsmount *m`` root of mount tree ”h]”(jÊ)�”}”(hŒ``struct vfsmount *m``”h]”jÐ)�”}”(hj%?h]”hŒstruct vfsmount *m”…”�”}”(hj'?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj#?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´M�hj?ubjæ)�”}”(hhh]”hÌ)�”}”(hŒroot of mount tree”h]”hŒroot of mount tree”…”�”}”(hj>?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j:?h´M�hj;?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j:?h´M�hj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj?ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj`?h]”hŒ Description”…”�”}”(hjb?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj^?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´Mƒhj?ubhÌ)�”}”(hŒjThis is called to check if a tree of mounts has any open files, pwds, chroots or sub mounts that are busy.”h]”hŒjThis is called to check if a tree of mounts has any open files, pwds, chroots or sub mounts that are busy.”…”�”}”(hjv?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´M‚hj?ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œmay_umount (C function)”Œ c.may_umount”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ%int may_umount (struct vfsmount *mnt)”h]”j)�”}”(hŒ$int may_umount(struct vfsmount *mnt)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj¥?h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¡?h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´Mœubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´?h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¡?h²hh³j³?h´MœubjC)�”}”(hŒ may_umount”h]”jI)�”}”(hŒ may_umount”h]”hŒ may_umount”…”�”}”(hjÆ?h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÂ?ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj¡?h²hh³j³?h´Mœubj=)�”}”(hŒ(struct vfsmount *mnt)”h]”jC)�”}”(hŒstruct vfsmount *mnt”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjâ?h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÞ?ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï?h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÞ?ubh)�”}”(hhh]”jI)�”}”(hŒvfsmount”h]”hŒvfsmount”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjý?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j@Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÈ?sbŒ c.may_umount”†”asbuh1hhjÞ?ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj @h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÞ?ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj.@h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÞ?ubjI)�”}”(hŒmnt”h]”hŒmnt”…”�”}”(hj;@h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÞ?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÚ?ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj¡?h²hh³j³?h´Mœubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj�?h²hh³j³?h´Mœubah}”(h]”j˜?ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j³?h´Mœhjš?h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒcheck if a mount point is busy”h]”hŒcheck if a mount point is busy”…”�”}”(hje@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´Mœhjb@h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjš?h²hh³j³?h´Mœubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j}@jšj}@j›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hXÑ**Parameters** ``struct vfsmount *mnt`` root of mount **Description** This is called to check if a mount point has any open files, pwds, chroots or sub mounts. If the mount has sub mounts this will return busy regardless of whether the sub mounts are busy. Doesn't take quota and stuff into account. IOW, in some cases it will give false negatives. The main reason why it's here is that we need a non-destructive way to look for easily umountable filesystems.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj‡@h]”hŒ Parameters”…”�”}”(hj‰@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj…@ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´M hj�@ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ'``struct vfsmount *mnt`` root of mount ”h]”(jÊ)�”}”(hŒ``struct vfsmount *mnt``”h]”jÐ)�”}”(hj¦@h]”hŒstruct vfsmount *mnt”…”�”}”(hj¨@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¤@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´M�hj @ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ root of mount”h]”hŒ root of mount”…”�”}”(hj¿@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j»@h´M�hj¼@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj @ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j»@h´M�hj�@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj�@ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjá@h]”hŒ Description”…”�”}”(hjã@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjß@ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MŸhj�@ubhÌ)�”}”(hŒºThis is called to check if a mount point has any open files, pwds, chroots or sub mounts. If the mount has sub mounts this will return busy regardless of whether the sub mounts are busy.”h]”hŒºThis is called to check if a mount point has any open files, pwds, chroots or sub mounts. If the mount has sub mounts this will return busy regardless of whether the sub mounts are busy.”…”�”}”(hj÷@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´Mžhj�@ubhÌ)�”}”(hŒÊDoesn't take quota and stuff into account. IOW, in some cases it will give false negatives. The main reason why it's here is that we need a non-destructive way to look for easily umountable filesystems.”h]”hŒÎDoesn’t take quota and stuff into account. IOW, in some cases it will give false negatives. The main reason why it’s here is that we need a non-destructive way to look for easily umountable filesystems.”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´M£hj�@ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ clone_private_mount (C function)”Œc.clone_private_mount”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ?struct vfsmount * clone_private_mount (const struct path *path)”h]”j)�”}”(hŒ=struct vfsmount *clone_private_mount(const struct path *path)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj5Ah²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj1Ah²hh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´Mƒ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCAh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj1Ah²hh³jBAh´Mƒ ubh)�”}”(hhh]”jI)�”}”(hŒvfsmount”h]”hŒvfsmount”…”�”}”(hjTAh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjQAubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jVAŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒclone_private_mount”sbŒc.clone_private_mount”†”asbuh1hhj1Ah²hh³jBAh´Mƒ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuAh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj1Ah²hh³jBAh´Mƒ ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjƒAh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj1Ah²hh³jBAh´Mƒ ubjC)�”}”(hŒclone_private_mount”h]”jI)�”}”(hjrAh]”hŒclone_private_mount”…”�”}”(hj”Ah²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�Aubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj1Ah²hh³jBAh´Mƒ ubj=)�”}”(hŒ(const struct path *path)”h]”jC)�”}”(hŒconst struct path *path”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj¯Ah²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj«Aubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼Ah²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj«Aubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÊAh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj«Aubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×Ah²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj«Aubh)�”}”(hhh]”jI)�”}”(hŒpath”h]”hŒpath”…”�”}”(hjèAh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjåAubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jêAŒmodname”NŒ classname”Njj )�”}”j ]”jpAŒc.clone_private_mount”†”asbuh1hhj«Aubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj«Aubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj«AubjI)�”}”(hŒpath”h]”hŒpath”…”�”}”(hj!Bh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj«Aubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj§Aubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj1Ah²hh³jBAh´Mƒ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj-Ah²hh³jBAh´Mƒ ubah}”(h]”j(Aah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jBAh´Mƒ hj*Ah²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ create a private clone of a path”h]”hŒ create a private clone of a path”…”�”}”(hjKBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´Mƒ hjHBh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj*Ah²hh³jBAh´Mƒ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jcBjšjcBj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hX‡**Parameters** ``const struct path *path`` path to clone **Description** This creates a new vfsmount, which will be the clone of **path**. The new mount will not be attached anywhere in the namespace and will be private (i.e. changes to the originating mount won't be propagated into this). This assumes caller has called or done the equivalent of may_mount(). Release with mntput().”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjmBh]”hŒ Parameters”…”�”}”(hjoBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjkBubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´M‡ hjgBubj¿)�”}”(hhh]”jÄ)�”}”(hŒ*``const struct path *path`` path to clone ”h]”(jÊ)�”}”(hŒ``const struct path *path``”h]”jÐ)�”}”(hjŒBh]”hŒconst struct path *path”…”�”}”(hjŽBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjŠBubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´M„ hj†Bubjæ)�”}”(hhh]”hÌ)�”}”(hŒ path to clone”h]”hŒ path to clone”…”�”}”(hj¥Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¡Bh´M„ hj¢Bubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj†Bubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¡Bh´M„ hjƒBubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjgBubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÇBh]”hŒ Description”…”�”}”(hjÉBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÅBubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´M† hjgBubhÌ)�”}”(hŒÚThis creates a new vfsmount, which will be the clone of **path**. The new mount will not be attached anywhere in the namespace and will be private (i.e. changes to the originating mount won't be propagated into this).”h]”(hŒ8This creates a new vfsmount, which will be the clone of ”…”�”}”(hjÝBh²hh³Nh´Nubj©)�”}”(hŒ**path**”h]”hŒpath”…”�”}”(hjåBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÝBubhŒœ. The new mount will not be attached anywhere in the namespace and will be private (i.e. changes to the originating mount won’t be propagated into this).”…”�”}”(hjÝBh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´M… hjgBubhÌ)�”}”(hŒEThis assumes caller has called or done the equivalent of may_mount().”h]”hŒEThis assumes caller has called or done the equivalent of may_mount().”…”�”}”(hjþBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´M‰ hjgBubhÌ)�”}”(hŒRelease with mntput().”h]”hŒRelease with mntput().”…”�”}”(hj Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´M‹ hjgBubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œmnt_set_expiry (C function)”Œc.mnt_set_expiry”hNt”auh1hýhjOgh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒIvoid mnt_set_expiry (struct vfsmount *mnt, struct list_head *expiry_list)”h]”j)�”}”(hŒHvoid mnt_set_expiry(struct vfsmount *mnt, struct list_head *expiry_list)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjah"]”h$]”h&]”uh1j1hj8Ch²hh³jJCh´MÙubjC)�”}”(hŒmnt_set_expiry”h]”jI)�”}”(hŒmnt_set_expiry”h]”hŒmnt_set_expiry”…”�”}”(hj]Ch²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjYCubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj8Ch²hh³jJCh´MÙubj=)�”}”(hŒ5(struct vfsmount *mnt, struct list_head *expiry_list)”h]”(jC)�”}”(hŒstruct vfsmount *mnt”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjyCh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjuCubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†Ch²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjuCubh)�”}”(hhh]”jI)�”}”(hŒvfsmount”h]”hŒvfsmount”…”�”}”(hj—Ch²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj”Cubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j™CŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj_CsbŒc.mnt_set_expiry”†”asbuh1hhjuCubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·Ch²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjuCubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÅCh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjuCubjI)�”}”(hŒmnt”h]”hŒmnt”…”�”}”(hjÒCh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjuCubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjqCubjC)�”}”(hŒstruct list_head *expiry_list”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjëCh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjçCubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøCh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjçCubh)�”}”(hhh]”jI)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hj Dh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjDubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j DŒmodname”NŒ classname”Njj )�”}”j ]”j³CŒc.mnt_set_expiry”†”asbuh1hhjçCubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'Dh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjçCubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj5Dh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjçCubjI)�”}”(hŒ expiry_list”h]”hŒ expiry_list”…”�”}”(hjBDh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjçCubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjqCubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj8Ch²hh³jJCh´MÙubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj4Ch²hh³jJCh´MÙubah}”(h]”j/Cah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jJCh´MÙhj1Ch²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ!Put a mount on an expiration list”h]”hŒ!Put a mount on an expiration list”…”�”}”(hjlDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MÙhjiDh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj1Ch²hh³jJCh´MÙubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j„Djšj„Dj›‰jœ‰j�‰uh1jh²hhjOgh³Nh´NubjŸ)�”}”(hŒ€**Parameters** ``struct vfsmount *mnt`` The mount to list. ``struct list_head *expiry_list`` The list to add the mount to.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjŽDh]”hŒ Parameters”…”�”}”(hj�Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjŒDubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MÝhjˆDubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ,``struct vfsmount *mnt`` The mount to list. ”h]”(jÊ)�”}”(hŒ``struct vfsmount *mnt``”h]”jÐ)�”}”(hj­Dh]”hŒstruct vfsmount *mnt”…”�”}”(hj¯Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj«Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MÚhj§Dubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe mount to list.”h]”hŒThe mount to list.”…”�”}”(hjÆDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÂDh´MÚhjÃDubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj§Dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÂDh´MÚhj¤DubjÄ)�”}”(hŒ?``struct list_head *expiry_list`` The list to add the mount to.”h]”(jÊ)�”}”(hŒ!``struct list_head *expiry_list``”h]”jÐ)�”}”(hjæDh]”hŒstruct list_head *expiry_list”…”�”}”(hjèDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjäDubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MÜhjàDubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe list to add the mount to.”h]”hŒThe list to add the mount to.”…”�”}”(hjÿDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MÛhjüDubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjàDubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jûDh´MÜhj¤Dubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjˆDubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjOgh²hh³Nh´Nubeh}”(h]”Œother-functions”ah ]”h"]”Œother functions”ah$]”h&]”uh1hµhhÛh²hh³hÊh´K3ubeh}”(h]”Œ the-linux-vfs”ah ]”h"]”Œ the linux vfs”ah$]”h&]”uh1hµhh·h²hh³hÊh´K ubh¶)�”}”(hhh]”(h»)�”}”(hŒThe proc filesystem”h]”hŒThe proc filesystem”…”�”}”(hj:Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj7Eh²hh³hÊh´Kiubh¶)�”}”(hhh]”(h»)�”}”(hŒsysctl interface”h]”hŒsysctl interface”…”�”}”(hjKEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjHEh²hh³hÊh´Klubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œproc_dostring (C function)”Œc.proc_dostring”hNt”auh1hýhjHEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒdint proc_dostring (const struct ctl_table *table, int dir, void *buffer, size_t *lenp, loff_t *ppos)”h]”j)�”}”(hŒcint proc_dostring(const struct ctl_table *table, int dir, void *buffer, size_t *lenp, loff_t *ppos)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjrEh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjnEh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´K£ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Eh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjnEh²hh³j€Eh´K£ubjC)�”}”(hŒ proc_dostring”h]”jI)�”}”(hŒ proc_dostring”h]”hŒ proc_dostring”…”�”}”(hj“Eh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�Eubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjnEh²hh³j€Eh´K£ubj=)�”}”(hŒR(const struct ctl_table *table, int dir, void *buffer, size_t *lenp, loff_t *ppos)”h]”(jC)�”}”(hŒconst struct ctl_table *table”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj¯Eh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj«Eubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼Eh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj«Eubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÊEh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj«Eubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×Eh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj«Eubh)�”}”(hhh]”jI)�”}”(hŒ ctl_table”h]”hŒ ctl_table”…”�”}”(hjèEh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjåEubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jêEŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj•EsbŒc.proc_dostring”†”asbuh1hhj«Eubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj«Eubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj«EubjI)�”}”(hŒtable”h]”hŒtable”…”�”}”(hj#Fh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj«Eubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj§EubjC)�”}”(hŒint dir”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjah"]”h$]”h&]”uh1j1hj8FubjI)�”}”(hŒdir”h]”hŒdir”…”�”}”(hjXFh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj8Fubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj§EubjC)�”}”(hŒ void *buffer”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjqFh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjmFubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjmFubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj�Fh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjmFubjI)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hjšFh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjmFubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj§EubjC)�”}”(hŒ size_t *lenp”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj¶Fh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj³Fubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¸FŒmodname”NŒ classname”Njj )�”}”j ]”jFŒc.proc_dostring”†”asbuh1hhj¯Fubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔFh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¯Fubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjâFh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¯FubjI)�”}”(hŒlenp”h]”hŒlenp”…”�”}”(hjïFh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¯Fubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj§EubjC)�”}”(hŒ loff_t *ppos”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hj Gh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjGubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j GŒmodname”NŒ classname”Njj )�”}”j ]”jFŒc.proc_dostring”†”asbuh1hhjGubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)Gh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjGubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj7Gh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjGubjI)�”}”(hŒppos”h]”hŒppos”…”�”}”(hjDGh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjGubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj§Eubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjnEh²hh³j€Eh´K£ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjjEh²hh³j€Eh´K£ubah}”(h]”jeEah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j€Eh´K£hjgEh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒread a string sysctl”h]”hŒread a string sysctl”…”�”}”(hjnGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´K£hjkGh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjgEh²hh³j€Eh´K£ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j†Gjšj†Gj›‰jœ‰j�‰uh1jh²hhjHEh³Nh´NubjŸ)�”}”(hXo**Parameters** ``const struct ctl_table *table`` the sysctl table ``int dir`` ``TRUE`` if this is a write to the sysctl file ``void *buffer`` the user buffer ``size_t *lenp`` the size of the user buffer ``loff_t *ppos`` file position **Description** Reads/writes a string from/to the user buffer. If the kernel buffer provided is not large enough to hold the string, the string is truncated. The copied string is ``NULL-terminated``. If the string is being read by the user process, it is copied and a newline '\n' is added. It is truncated if the buffer is not large enough. **Return** ``0`` on success.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj�Gh]”hŒ Parameters”…”�”}”(hj’Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjŽGubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´K§hjŠGubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ3``const struct ctl_table *table`` the sysctl table ”h]”(jÊ)�”}”(hŒ!``const struct ctl_table *table``”h]”jÐ)�”}”(hj¯Gh]”hŒconst struct ctl_table *table”…”�”}”(hj±Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj­Gubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´K¤hj©Gubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe sysctl table”h]”hŒthe sysctl table”…”�”}”(hjÈGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÄGh´K¤hjÅGubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj©Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÄGh´K¤hj¦GubjÄ)�”}”(hŒ;``int dir`` ``TRUE`` if this is a write to the sysctl file ”h]”(jÊ)�”}”(hŒ ``int dir``”h]”jÐ)�”}”(hjèGh]”hŒint dir”…”�”}”(hjêGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjæGubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´K¥hjâGubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.``TRUE`` if this is a write to the sysctl file”h]”(jÐ)�”}”(hŒ``TRUE``”h]”hŒTRUE”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjHubhŒ& if this is a write to the sysctl file”…”�”}”(hjHh²hh³Nh´Nubeh}”(•h]”h ]”h"]”h$]”h&]”uh1hËh³jýGh´K¥hjþGubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjâGubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jýGh´K¥hj¦GubjÄ)�”}”(hŒ!``void *buffer`` the user buffer ”h]”(jÊ)�”}”(hŒ``void *buffer``”h]”jÐ)�”}”(hj/Hh]”hŒ void *buffer”…”�”}”(hj1Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj-Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´K¦hj)Hubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe user buffer”h]”hŒthe user buffer”…”�”}”(hjHHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jDHh´K¦hjEHubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj)Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jDHh´K¦hj¦GubjÄ)�”}”(hŒ-``size_t *lenp`` the size of the user buffer ”h]”(jÊ)�”}”(hŒ``size_t *lenp``”h]”jÐ)�”}”(hjhHh]”hŒ size_t *lenp”…”�”}”(hjjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjfHubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´K§hjbHubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe size of the user buffer”h]”hŒthe size of the user buffer”…”�”}”(hj�Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j}Hh´K§hj~Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjbHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j}Hh´K§hj¦GubjÄ)�”}”(hŒ``loff_t *ppos`` file position ”h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hj¡Hh]”hŒ loff_t *ppos”…”�”}”(hj£Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjŸHubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´K¨hj›Hubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file position”h]”hŒ file position”…”�”}”(hjºHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¶Hh´K¨hj·Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj›Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¶Hh´K¨hj¦Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjŠGubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÜHh]”hŒ Description”…”�”}”(hjÞHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÚHubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´KªhjŠGubhÌ)�”}”(hXEReads/writes a string from/to the user buffer. If the kernel buffer provided is not large enough to hold the string, the string is truncated. The copied string is ``NULL-terminated``. If the string is being read by the user process, it is copied and a newline '\n' is added. It is truncated if the buffer is not large enough.”h]”(hŒ£Reads/writes a string from/to the user buffer. If the kernel buffer provided is not large enough to hold the string, the string is truncated. The copied string is ”…”�”}”(hjòHh²hh³Nh´NubjÐ)�”}”(hŒ``NULL-terminated``”h]”hŒNULL-terminated”…”�”}”(hjúHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjòHubhŒ“. If the string is being read by the user process, it is copied and a newline ‘n’ is added. It is truncated if the buffer is not large enough.”…”�”}”(hjòHh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´K©hjŠGubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjIh]”hŒReturn”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´K°hjŠGubhÌ)�”}”(hŒ``0`` on success.”h]”(jÐ)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hj/Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj+IubhŒ on success.”…”�”}”(hj+Ih²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´K±hjŠGubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjHEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œproc_dobool (C function)”Œ c.proc_dobool”hNt”auh1hýhjHEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒbint proc_dobool (const struct ctl_table *table, int dir, void *buffer, size_t *lenp, loff_t *ppos)”h]”j)�”}”(hŒaint proc_dobool(const struct ctl_table *table, int dir, void *buffer, size_t *lenp, loff_t *ppos)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjhIh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjdIh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MEubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwIh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjdIh²hh³jvIh´MEubjC)�”}”(hŒ proc_dobool”h]”jI)�”}”(hŒ proc_dobool”h]”hŒ proc_dobool”…”�”}”(hj‰Ih²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj…Iubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjdIh²hh³jvIh´MEubj=)�”}”(hŒR(const struct ctl_table *table, int dir, void *buffer, size_t *lenp, loff_t *ppos)”h]”(jC)�”}”(hŒconst struct ctl_table *table”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj¥Ih²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¡Iubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²Ih²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¡Iubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÀIh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¡Iubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍIh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¡Iubh)�”}”(hhh]”jI)�”}”(hŒ ctl_table”h]”hŒ ctl_table”…”�”}”(hjÞIh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÛIubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jàIŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj‹IsbŒ c.proc_dobool”†”asbuh1hhj¡Iubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþIh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¡Iubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj Jh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¡IubjI)�”}”(hŒtable”h]”hŒtable”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¡Iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj�IubjC)�”}”(hŒint dir”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj2Jh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj.Jubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@Jh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj.JubjI)�”}”(hŒdir”h]”hŒdir”…”�”}”(hjNJh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj.Jubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj�IubjC)�”}”(hŒ void *buffer”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjgJh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjcJubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuJh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjcJubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjƒJh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjcJubjI)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hj�Jh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjcJubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj�IubjC)�”}”(hŒ size_t *lenp”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj¬Jh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj©Jubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j®JŒmodname”NŒ classname”Njj )�”}”j ]”júIŒ c.proc_dobool”†”asbuh1hhj¥Jubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊJh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¥Jubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjØJh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¥JubjI)�”}”(hŒlenp”h]”hŒlenp”…”�”}”(hjåJh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¥Jubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj�IubjC)�”}”(hŒ loff_t *ppos”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjþJubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jKŒmodname”NŒ classname”Njj )�”}”j ]”júIŒ c.proc_dobool”†”asbuh1hhjúJubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjúJubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj-Kh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjúJubjI)�”}”(hŒppos”h]”hŒppos”…”�”}”(hj:Kh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjúJubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj�Iubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjdIh²hh³jvIh´MEubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj`Ih²hh³jvIh´MEubah}”(h]”j[Iah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jvIh´MEhj]Ih²hubjw)�”}”(hhh]”hÌ)�”}”(hŒread/write a bool”h]”hŒread/write a bool”…”�”}”(hjdKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MEhjaKh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj]Ih²hh³jvIh´MEubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j|Kjšj|Kj›‰jœ‰j�‰uh1jh²hhjHEh³Nh´NubjŸ)�”}”(hXÐ**Parameters** ``const struct ctl_table *table`` the sysctl table ``int dir`` ``TRUE`` if this is a write to the sysctl file ``void *buffer`` the user buffer ``size_t *lenp`` the size of the user buffer ``loff_t *ppos`` file position **Description** Reads/writes one integer value from/to the user buffer, treated as an ASCII string. table->data must point to a bool variable and table->maxlen must be sizeof(bool). **Return** ``0`` on success.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj†Kh]”hŒ Parameters”…”�”}”(hjˆKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj„Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MIhj€Kubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ3``const struct ctl_table *table`` the sysctl table ”h]”(jÊ)�”}”(hŒ!``const struct ctl_table *table``”h]”jÐ)�”}”(hj¥Kh]”hŒconst struct ctl_table *table”…”�”}”(hj§Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj£Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MFhjŸKubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe sysctl table”h]”hŒthe sysctl table”…”�”}”(hj¾Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jºKh´MFhj»Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjŸKubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jºKh´MFhjœKubjÄ)�”}”(hŒ;``int dir`` ``TRUE`` if this is a write to the sysctl file ”h]”(jÊ)�”}”(hŒ ``int dir``”h]”jÐ)�”}”(hjÞKh]”hŒint dir”…”�”}”(hjàKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÜKubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MGhjØKubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.``TRUE`` if this is a write to the sysctl file”h]”(jÐ)�”}”(hŒ``TRUE``”h]”hŒTRUE”…”�”}”(hjûKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj÷KubhŒ& if this is a write to the sysctl file”…”�”}”(hj÷Kh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jóKh´MGhjôKubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjØKubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jóKh´MGhjœKubjÄ)�”}”(hŒ!``void *buffer`` the user buffer ”h]”(jÊ)�”}”(hŒ``void *buffer``”h]”jÐ)�”}”(hj%Lh]”hŒ void *buffer”…”�”}”(hj'Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj#Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MHhjLubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe user buffer”h]”hŒthe user buffer”…”�”}”(hj>Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j:Lh´MHhj;Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j:Lh´MHhjœKubjÄ)�”}”(hŒ-``size_t *lenp`` the size of the user buffer ”h]”(jÊ)�”}”(hŒ``size_t *lenp``”h]”jÐ)�”}”(hj^Lh]”hŒ size_t *lenp”…”�”}”(hj`Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj\Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MIhjXLubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe size of the user buffer”h]”hŒthe size of the user buffer”…”�”}”(hjwLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jsLh´MIhjtLubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjXLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jsLh´MIhjœKubjÄ)�”}”(hŒ``loff_t *ppos`` file position ”h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hj—Lh]”hŒ loff_t *ppos”…”�”}”(hj™Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj•Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MJhj‘Lubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file position”h]”hŒ file position”…”�”}”(hj°Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¬Lh´MJhj­Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj‘Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¬Lh´MJhjœKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj€KubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÒLh]”hŒ Description”…”�”}”(hjÔLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÐLubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MLhj€KubhÌ)�”}”(hŒSReads/writes one integer value from/to the user buffer, treated as an ASCII string.”h]”hŒSReads/writes one integer value from/to the user buffer, treated as an ASCII string.”…”�”}”(hjèLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MKhj€KubhÌ)�”}”(hŒQtable->data must point to a bool variable and table->maxlen must be sizeof(bool).”h]”hŒQtable->data must point to a bool variable and table->maxlen must be sizeof(bool).”…”�”}”(hj÷Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MNhj€KubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjMh]”hŒReturn”…”�”}”(hj Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjMubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MQhj€KubhÌ)�”}”(hŒ``0`` on success.”h]”(jÐ)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hj"Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjMubhŒ on success.”…”�”}”(hjMh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MRhj€Kubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjHEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œproc_dointvec (C function)”Œc.proc_dointvec”hNt”auh1hýhjHEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒdint proc_dointvec (const struct ctl_table *table, int dir, void *buffer, size_t *lenp, loff_t *ppos)”h]”j)�”}”(hŒcint proc_dointvec(const struct ctl_table *table, int dir, void *buffer, size_t *lenp, loff_t *ppos)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj[Mh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjWMh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´Mmubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjMh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjWMh²hh³jiMh´MmubjC)�”}”(hŒ proc_dointvec”h]”jI)�”}”(hŒ proc_dointvec”h]”hŒ proc_dointvec”…”�”}”(hj|Mh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjxMubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjWMh²hh³jiMh´Mmubj=)�”}”(hŒR(const struct ctl_table *table, int dir, void *buffer, size_t *lenp, loff_t *ppos)”h]”(jC)�”}”(hŒconst struct ctl_table *table”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj˜Mh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj”Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥Mh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj”Mubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj³Mh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj”Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀMh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj”Mubh)�”}”(hhh]”jI)�”}”(hŒ ctl_table”h]”hŒ ctl_table”…”�”}”(hjÑMh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÎMubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÓMŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj~MsbŒc.proc_dointvec”†”asbuh1hhj”Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñMh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj”Mubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÿMh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj”MubjI)�”}”(hŒtable”h]”hŒtable”…”�”}”(hj Nh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj”Mubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj�MubjC)�”}”(hŒint dir”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj%Nh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj!Nubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3Nh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj!NubjI)�”}”(hŒdir”h]”hŒdir”…”�”}”(hjANh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj!Nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj�MubjC)�”}”(hŒ void *buffer”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjZNh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjVNubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhNh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjVNubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjvNh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjVNubjI)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hjƒNh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjVNubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj�MubjC)�”}”(hŒ size_t *lenp”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjŸNh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjœNubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¡NŒmodname”NŒ classname”Njj )�”}”j ]”jíMŒc.proc_dointvec”†”asbuh1hhj˜Nubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½Nh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj˜Nubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjËNh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj˜NubjI)�”}”(hŒlenp”h]”hŒlenp”…”�”}”(hjØNh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj˜Nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj�MubjC)�”}”(hŒ loff_t *ppos”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjôNh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjñNubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jöNŒmodname”NŒ classname”Njj )�”}”j ]”jíMŒc.proc_dointvec”†”asbuh1hhjíNubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjíNubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj Oh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjíNubjI)�”}”(hŒppos”h]”hŒppos”…”�”}”(hj-Oh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjíNubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj�Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjWMh²hh³jiMh´Mmubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjSMh²hh³jiMh´Mmubah}”(h]”jNMah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jiMh´MmhjPMh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒread a vector of integers”h]”hŒread a vector of integers”…”�”}”(hjWOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MmhjTOh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjPMh²hh³jiMh´Mmubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™joOjšjoOj›‰jœ‰j�‰uh1jh²hhjHEh³Nh´NubjŸ)�”}”(hX£**Parameters** ``const struct ctl_table *table`` the sysctl table ``int dir`` ``TRUE`` if this is a write to the sysctl file ``void *buffer`` the user buffer ``size_t *lenp`` the size of the user buffer ``loff_t *ppos`` file position **Description** Reads/writes up to table->maxlen/sizeof(unsigned int) integer values from/to the user buffer, treated as an ASCII string. **Return** ``0`` on success.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjyOh]”hŒ Parameters”…”�”}”(hj{Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjwOubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MqhjsOubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ3``const struct ctl_table *table`` the sysctl table ”h]”(jÊ)�”}”(hŒ!``const struct ctl_table *table``”h]”jÐ)�”}”(hj˜Oh]”hŒconst struct ctl_table *table”…”�”}”(hjšOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj–Oubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´Mnhj’Oubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe sysctl table”h]”hŒthe sysctl table”…”�”}”(hj±Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j­Oh´Mnhj®Oubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj’Oubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j­Oh´Mnhj�OubjÄ)�”}”(hŒ;``int dir`` ``TRUE`` if this is a write to the sysctl file ”h]”(jÊ)�”}”(hŒ ``int dir``”h]”jÐ)�”}”(hjÑOh]”hŒint dir”…”�”}”(hjÓOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÏOubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MohjËOubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.``TRUE`` if this is a write to the sysctl file”h]”(jÐ)�”}”(hŒ``TRUE``”h]”hŒTRUE”…”�”}”(hjîOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjêOubhŒ& if this is a write to the sysctl file”…”�”}”(hjêOh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jæOh´MohjçOubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjËOubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jæOh´Mohj�OubjÄ)�”}”(hŒ!``void *buffer`` the user buffer ”h]”(jÊ)�”}”(hŒ``void *buffer``”h]”jÐ)�”}”(hjPh]”hŒ void *buffer”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjPubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MphjPubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe user buffer”h]”hŒthe user buffer”…”�”}”(hj1Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j-Ph´Mphj.Pubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjPubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j-Ph´Mphj�OubjÄ)�”}”(hŒ-``size_t *lenp`` the size of the user buffer ”h]”(jÊ)�”}”(hŒ``size_t *lenp``”h]”jÐ)�”}”(hjQPh]”hŒ size_t *lenp”…”�”}”(hjSPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjOPubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MqhjKPubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe size of the user buffer”h]”hŒthe size of the user buffer”…”�”}”(hjjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jfPh´MqhjgPubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjKPubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jfPh´Mqhj�OubjÄ)�”}”(hŒ``loff_t *ppos`` file position ”h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hjŠPh]”hŒ loff_t *ppos”…”�”}”(hjŒPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjˆPubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´Mrhj„Pubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file position”h]”hŒ file position”…”�”}”(hj£Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jŸPh´Mrhj Pubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj„Pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jŸPh´Mrhj�Oubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjsOubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÅPh]”hŒ Description”…”�”}”(hjÇPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÃPubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MthjsOubhÌ)�”}”(hŒyReads/writes up to table->maxlen/sizeof(unsigned int) integer values from/to the user buffer, treated as an ASCII string.”h]”hŒyReads/writes up to table->maxlen/sizeof(unsigned int) integer values from/to the user buffer, treated as an ASCII string.”…”�”}”(hjÛPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MshjsOubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjìPh]”hŒReturn”…”�”}”(hjîPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjêPubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MvhjsOubhÌ)�”}”(hŒ``0`` on success.”h]”(jÐ)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjQubhŒ on success.”…”�”}”(hjQh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MwhjsOubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjHEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œproc_douintvec (C function)”Œc.proc_douintvec”hNt”auh1hýhjHEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒeint proc_douintvec (const struct ctl_table *table, int dir, void *buffer, size_t *lenp, loff_t *ppos)”h]”j)�”}”(hŒdint proc_douintvec(const struct ctl_table *table, int dir, void *buffer, size_t *lenp, loff_t *ppos)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj?Qh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj;Qh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNQh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj;Qh²hh³jMQh´M�ubjC)�”}”(hŒproc_douintvec”h]”jI)�”}”(hŒproc_douintvec”h]”hŒproc_douintvec”…”�”}”(hj`Qh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj\Qubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj;Qh²hh³jMQh´M�ubj=)�”}”(hŒR(const struct ctl_table *table, int dir, void *buffer, size_t *lenp, loff_t *ppos)”h]”(jC)�”}”(hŒconst struct ctl_table *table”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj|Qh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjxQubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰Qh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjxQubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj—Qh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjxQubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤Qh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjxQubh)�”}”(hhh]”jI)�”}”(hŒ ctl_table”h]”hŒ ctl_table”…”�”}”(hjµQh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj²Qubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j·QŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjbQsbŒc.proc_douintvec”†”asbuh1hhjxQubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕQh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjxQubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjãQh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjxQubjI)�”}”(hŒtable”h]”hŒtable”…”�”}”(hjðQh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjxQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjtQubjC)�”}”(hŒint dir”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj Rh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjRubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjRubjI)�”}”(hŒdir”h]”hŒdir”…”�”}”(hj%Rh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjRubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjtQubjC)�”}”(hŒ void *buffer”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj>Rh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj:Rubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLRh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj:Rubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjZRh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj:RubjI)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hjgRh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj:Rubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjtQubjC)�”}”(hŒ size_t *lenp”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjƒRh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj€Rubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j…RŒmodname”NŒ classname”Njj )�”}”j ]”jÑQŒc.proc_douintvec”†”asbuh1hhj|Rubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡Rh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj|Rubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¯Rh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj|RubjI)�”}”(hŒlenp”h]”hŒlenp”…”�”}”(hj¼Rh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj|Rubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjtQubjC)�”}”(hŒ loff_t *ppos”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjØRh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÕRubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÚRŒmodname”NŒ classname”Njj )�”}”j ]”jÑQŒc.proc_douintvec”†”asbuh1hhjÑRubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöRh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÑRubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÑRubjI)�”}”(hŒppos”h]”hŒppos”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÑRubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjtQubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj;Qh²hh³jMQh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj7Qh²hh³jMQh´M�ubah}”(h]”j2Qah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jMQh´M�hj4Qh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ"read a vector of unsigned integers”h]”hŒ"read a vector of unsigned integers”…”�”}”(hj;Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M�hj8Sh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj4Qh²hh³jMQh´M�ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jSSjšjSSj›‰jœ‰j�‰uh1jh²hhjHEh³Nh´NubjŸ)�”}”(hX¬**Parameters** ``const struct ctl_table *table`` the sysctl table ``int dir`` ``TRUE`` if this is a write to the sysctl file ``void *buffer`` the user buffer ``size_t *lenp`` the size of the user buffer ``loff_t *ppos`` file position **Description** Reads/writes up to table->maxlen/sizeof(unsigned int) unsigned integer values from/to the user buffer, treated as an ASCII string. **Return** ``0`` on success.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj]Sh]”hŒ Parameters”…”�”}”(hj_Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj[Subah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M…hjWSubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ3``const struct ctl_table *table`` the sysctl table ”h]”(jÊ)�”}”(hŒ!``const struct ctl_table *table``”h]”jÐ)�”}”(hj|Sh]”hŒconst struct ctl_table *table”…”�”}”(hj~Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjzSubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M‚hjvSubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe sysctl table”h]”hŒthe sysctl table”…”�”}”(hj•Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‘Sh´M‚hj’Subah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjvSubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‘Sh´M‚hjsSubjÄ)�”}”(hŒ;``int dir`` ``TRUE`` if this is a write to the sysctl file ”h]”(jÊ)�”}”(hŒ ``int dir``”h]”jÐ)�”}”(hjµSh]”hŒint dir”…”�”}”(hj·Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj³Subah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´Mƒhj¯Subjæ)�”}”(hhh]”hÌ)�”}”(hŒ.``TRUE`` if this is a write to the sysctl file”h]”(jÐ)�”}”(hŒ``TRUE``”h]”hŒTRUE”…”�”}”(hjÒSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÎSubhŒ& if this is a write to the sysctl file”…”�”}”(hjÎSh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÊSh´MƒhjËSubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¯Subeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÊSh´MƒhjsSubjÄ)�”}”(hŒ!``void *buffer`` the user buffer ”h]”(jÊ)�”}”(hŒ``void *buffer``”h]”jÐ)�”}”(hjüSh]”hŒ void *buffer”…”�”}”(hjþSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjúSubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M„hjöSubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe user buffer”h]”hŒthe user buffer”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jTh´M„hjTubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjöSubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jTh´M„hjsSubjÄ)�”}”(hŒ-``size_t *lenp`` the size of the user buffer ”h]”(jÊ)�”}”(hŒ``size_t *lenp``”h]”jÐ)�”}”(hj5Th]”hŒ size_t *lenp”…”�”}”(hj7Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj3Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M…hj/Tubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe size of the user buffer”h]”hŒthe size of the user buffer”…”�”}”(hjNTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jJTh´M…hjKTubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj/Tubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jJTh´M…hjsSubjÄ)�”}”(hŒ``loff_t *ppos`` file position ”h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hjnTh]”hŒ loff_t *ppos”…”�”}”(hjpTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjlTubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M†hjhTubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file position”h]”hŒ file position”…”�”}”(hj‡Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jƒTh´M†hj„Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjhTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jƒTh´M†hjsSubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjWSubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj©Th]”hŒ Description”…”�”}”(hj«Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj§Tubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MˆhjWSubhÌ)�”}”(hŒ‚Reads/writes up to table->maxlen/sizeof(unsigned int) unsigned integer values from/to the user buffer, treated as an ASCII string.”h]”hŒ‚Reads/writes up to table->maxlen/sizeof(unsigned int) unsigned integer values from/to the user buffer, treated as an ASCII string.”…”�”}”(hj¿Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M‡hjWSubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjÐTh]”hŒReturn”…”�”}”(hjÒTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÎTubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MŠhjWSubhÌ)�”}”(hŒ``0`` on success.”h]”(jÐ)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjêTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjæTubhŒ on success.”…”�”}”(hjæTh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M‹hjWSubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjHEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ!proc_dointvec_minmax (C function)”Œc.proc_dointvec_minmax”hNt”auh1hýhjHEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒkint proc_dointvec_minmax (const struct ctl_table *table, int dir, void *buffer, size_t *lenp, loff_t *ppos)”h]”j)�”}”(hŒjint proc_dointvec_minmax(const struct ctl_table *table, int dir, void *buffer, size_t *lenp, loff_t *ppos)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj#Uh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjUh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M”ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2Uh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjUh²hh³j1Uh´M”ubjC)�”}”(hŒproc_dointvec_minmax”h]”jI)�”}”(hŒproc_dointvec_minmax”h]”hŒproc_dointvec_minmax”…”�”}”(hjDUh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj@Uubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjUh²hh³j1Uh´M”ubj=)�”}”(hŒR(const struct ctl_table *table, int dir, void *buffer, size_t *lenp, loff_t *ppos)”h]”(jC)�”}”(hŒconst struct ctl_table *table”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj`Uh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj\Uubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmUh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj\Uubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj{Uh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj\Uubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆUh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj\Uubh)�”}”(hhh]”jI)�”}”(hŒ ctl_table”h]”hŒ ctl_table”…”�”}”(hj™Uh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj–Uubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j›UŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjFUsbŒc.proc_dointvec_minmax”†”asbuh1hhj\Uubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹Uh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj\Uubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÇUh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj\UubjI)�”}”(hŒtable”h]”hŒtable”…”�”}”(hjÔUh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj\Uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjXUubjC)�”}”(hŒint dir”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjíUh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjéUubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûUh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjéUubjI)�”}”(hŒdir”h]”hŒdir”…”�”}”(hj Vh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjéUubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjXUubjC)�”}”(hŒ void *buffer”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj"Vh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjVubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0Vh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjVubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj>Vh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjVubjI)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hjKVh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjVubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjXUubjC)�”}”(hŒ size_t *lenp”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjgVh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjdVubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jiVŒmodname”NŒ classname”Njj )�”}”j ]”jµUŒc.proc_dointvec_minmax”†”asbuh1hhj`Vubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…Vh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj`Vubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj“Vh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj`VubjI)�”}”(hŒlenp”h]”hŒlenp”…”�”}”(hj Vh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj`Vubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjXUubjC)�”}”(hŒ loff_t *ppos”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hj¼Vh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¹Vubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¾VŒmodname”NŒ classname”Njj )�”}”j ]”jµUŒc.proc_dointvec_minmax”†”asbuh1hhjµVubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚVh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjµVubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjèVh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjµVubjI)�”}”(hŒppos”h]”hŒppos”…”�”}”(hjõVh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjµVubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjXUubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjUh²hh³j1Uh´M”ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjUh²hh³j1Uh´M”ubah}”(h]”jUah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j1Uh´M”hjUh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ-read a vector of integers with min/max values”h]”hŒ-read a vector of integers with min/max values”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M”hjWh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjUh²hh³j1Uh´M”ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j7Wjšj7Wj›‰jœ‰j�‰uh1jh²hhjHEh³Nh´NubjŸ)�”}”(hXa**Parameters** ``const struct ctl_table *table`` the sysctl table ``int dir`` ``TRUE`` if this is a write to the sysctl file ``void *buffer`` the user buffer ``size_t *lenp`` the size of the user buffer ``loff_t *ppos`` file position **Description** Reads/writes up to table->maxlen/sizeof(unsigned int) integer values from/to the user buffer, treated as an ASCII string. This routine will ensure the values are within the range specified by table->extra1 (min) and table->extra2 (max). **Return** ``0`` on success or -EINVAL when the range check fails and SYSCTL_USER_TO_KERN(dir) == true”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjAWh]”hŒ Parameters”…”�”}”(hjCWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj?Wubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M˜hj;Wubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ3``const struct ctl_table *table`` the sysctl table ”h]”(jÊ)�”}”(hŒ!``const struct ctl_table *table``”h]”jÐ)�”}”(hj`Wh]”hŒconst struct ctl_table *table”…”�”}”(hjbWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj^Wubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M•hjZWubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe sysctl table”h]”hŒthe sysctl table”…”�”}”(hjyWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³juWh´M•hjvWubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjZWubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³juWh´M•hjWWubjÄ)�”}”(hŒ;``int dir`` ``TRUE`` if this is a write to the sysctl file ”h]”(jÊ)�”}”(hŒ ``int dir``”h]”jÐ)�”}”(hj™Wh]”hŒint dir”…”�”}”(hj›Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj—Wubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M–hj“Wubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.``TRUE`` if this is a write to the sysctl file”h]”(jÐ)�”}”(hŒ``TRUE``”h]”hŒTRUE”…”�”}”(hj¶Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj²WubhŒ& if this is a write to the sysctl file”…”�”}”(hj²Wh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j®Wh´M–hj¯Wubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj“Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j®Wh´M–hjWWubjÄ)�”}”(hŒ!``void *buffer`` the user buffer ”h]”(jÊ)�”}”(hŒ``void *buffer``”h]”jÐ)�”}”(hjàWh]”hŒ void *buffer”…”�”}”(hjâWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÞWubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M—hjÚWubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe user buffer”h]”hŒthe user buffer”…”�”}”(hjùWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jõWh´M—hjöWubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÚWubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jõWh´M—hjWWubjÄ)�”}”(hŒ-``size_t *lenp`` the size of the user buffer ”h]”(jÊ)�”}”(hŒ``size_t *lenp``”h]”jÐ)�”}”(hjXh]”hŒ size_t *lenp”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjXubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M˜hjXubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe size of the user buffer”h]”hŒthe size of the user buffer”…”�”}”(hj2Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j.Xh´M˜hj/Xubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjXubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j.Xh´M˜hjWWubjÄ)�”}”(hŒ``loff_t *ppos`` file position ”h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hjRXh]”hŒ loff_t *ppos”…”�”}”(hjTXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjPXubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M™hjLXubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file position”h]”hŒ file position”…”�”}”(hjkXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jgXh´M™hjhXubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjLXubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jgXh´M™hjWWubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj;WubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj�Xh]”hŒ Description”…”�”}”(hj�Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‹Xubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M›hj;WubhÌ)�”}”(hŒyReads/writes up to table->maxlen/sizeof(unsigned int) integer values from/to the user buffer, treated as an ASCII string.”h]”hŒyReads/writes up to table->maxlen/sizeof(unsigned int) integer values from/to the user buffer, treated as an ASCII string.”…”�”}”(hj£Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´Mšhj;WubhÌ)�”}”(hŒrThis routine will ensure the values are within the range specified by table->extra1 (min) and table->extra2 (max).”h]”hŒrThis routine will ensure the values are within the range specified by table->extra1 (min) and table->extra2 (max).”…”�”}”(hj²Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M�hj;WubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjÃXh]”hŒReturn”…”�”}”(hjÅXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÁXubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M hj;WubhÌ)�”}”(hŒ[``0`` on success or -EINVAL when the range check fails and SYSCTL_USER_TO_KERN(dir) == true”h]”(jÐ)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjÝXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÙXubhŒV on success or -EINVAL when the range check fails and SYSCTL_USER_TO_KERN(dir) == true”…”�”}”(hjÙXh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M¡hj;Wubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjHEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ"proc_douintvec_minmax (C function)”Œc.proc_douintvec_minmax”hNt”auh1hýhjHEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒlint proc_douintvec_minmax (const struct ctl_table *table, int dir, void *buffer, size_t *lenp, loff_t *ppos)”h]”j)�”}”(hŒkint proc_douintvec_minmax(const struct ctl_table *table, int dir, void *buffer, size_t *lenp, loff_t *ppos)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjYh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M¬ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%Yh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjYh²hh³j$Yh´M¬ubjC)�”}”(hŒproc_douintvec_minmax”h]”jI)�”}”(hŒproc_douintvec_minmax”h]”hŒproc_douintvec_minmax”…”�”}”(hj7Yh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj3Yubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjYh²hh³j$Yh´M¬ubj=)�”}”(hŒR(const struct ctl_table *table, int dir, void *buffer, size_t *lenp, loff_t *ppos)”h]”(jC)�”}”(hŒconst struct ctl_table *table”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjSYh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjOYubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`Yh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjOYubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjnYh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjOYubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{Yh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjOYubh)�”}”(hhh]”jI)�”}”(hŒ ctl_table”h]”hŒ ctl_table”…”�”}”(hjŒYh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‰Yubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jŽYŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj9YsbŒc.proc_douintvec_minmax”†”asbuh1hhjOYubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬Yh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjOYubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjºYh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjOYubjI)�”}”(hŒtable”h]”hŒtable”…”�”}”(hjÇYh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjOYubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjKYubjC)�”}”(hŒint dir”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjàYh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÜYubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîYh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÜYubjI)�”}”(hŒdir”h]”hŒdir”…”�”}”(hjüYh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÜYubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjKYubjC)�”}”(hŒ void *buffer”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjZubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#Zh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjZubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj1Zh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjZubjI)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hj>Zh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjZubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjKYubjC)�”}”(hŒ size_t *lenp”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjZZh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjWZubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j\ZŒmodname”NŒ classname”Njj )�”}”j ]”j¨YŒc.proc_douintvec_minmax”†”asbuh1hhjSZubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxZh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjSZubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj†Zh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjSZubjI)�”}”(hŒlenp”h]”hŒlenp”…”�”}”(hj“Zh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjSZubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjKYubjC)�”}”(hŒ loff_t *ppos”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hj¯Zh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¬Zubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j±ZŒmodname”NŒ classname”Njj )�”}”j ]”j¨YŒc.proc_douintvec_minmax”†”asbuh1hhj¨Zubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍZh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¨Zubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÛZh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¨ZubjI)�”}”(hŒppos”h]”hŒppos”…”�”}”(hjèZh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¨Zubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjKYubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjYh²hh³j$Yh´M¬ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjYh²hh³j$Yh´M¬ubah}”(h]”j Yah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j$Yh´M¬hj Yh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ2read a vector of unsigned ints with min/max values”h]”hŒ2read a vector of unsigned ints with min/max values”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M¬hj[h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj Yh²hh³j$Yh´M¬ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j*[jšj*[j›‰jœ‰j�‰uh1jh²hhjHEh³Nh´NubjŸ)�”}”(hX**Parameters** ``const struct ctl_table *table`` the sysctl table ``int dir`` ``TRUE`` if this is a write to the sysctl file ``void *buffer`` the user buffer ``size_t *lenp`` the size of the user buffer ``loff_t *ppos`` file position **Description** Reads/writes up to table->maxlen/sizeof(unsigned int) unsigned integer values from/to the user buffer, treated as an ASCII string. Negative strings are not allowed. When changing the kernel variable, this routine will ensure the values are within the range specified by table->extra1 (min) and table->extra2 (max). And Check that the values are less than UINT_MAX to avoid having to support wrap around uses from userspace. **Return** ``0`` on success or -ERANGE when range check failes and SYSCTL_USER_TO_KERN(dir) == true”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj4[h]”hŒ Parameters”…”�”}”(hj6[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj2[ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M°hj.[ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ3``const struct ctl_table *table`` the sysctl table ”h]”(jÊ)�”}”(hŒ!``const struct ctl_table *table``”h]”jÐ)�”}”(hjS[h]”hŒconst struct ctl_table *table”…”�”}”(hjU[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjQ[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M­hjM[ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe sysctl table”h]”hŒthe sysctl table”…”�”}”(hjl[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh[h´M­hji[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjM[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jh[h´M­hjJ[ubjÄ)�”}”(hŒ;``int dir`` ``TRUE`` if this is a write to the sysctl file ”h]”(jÊ)�”}”(hŒ ``int dir``”h]”jÐ)�”}”(hjŒ[h]”hŒint dir”…”�”}”(hjŽ[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjŠ[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M®hj†[ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.``TRUE`` if this is a write to the sysctl file”h]”(jÐ)�”}”(hŒ``TRUE``”h]”hŒTRUE”…”�”}”(hj©[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¥[ubhŒ& if this is a write to the sysctl file”…”�”}”(hj¥[h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¡[h´M®hj¢[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj†[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¡[h´M®hjJ[ubjÄ)�”}”(hŒ!``void *buffer`` the user buffer ”h]”(jÊ)�”}”(hŒ``void *buffer``”h]”jÐ)�”}”(hjÓ[h]”hŒ void *buffer”…”�”}”(hjÕ[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÑ[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M¯hjÍ[ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe user buffer”h]”hŒthe user buffer”…”�”}”(hjì[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jè[h´M¯hjé[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÍ[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jè[h´M¯hjJ[ubjÄ)�”}”(hŒ-``size_t *lenp`` the size of the user buffer ”h]”(jÊ)�”}”(hŒ``size_t *lenp``”h]”jÐ)�”}”(hj \h]”hŒ size_t *lenp”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj \ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M°hj\ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe size of the user buffer”h]”hŒthe size of the user buffer”…”�”}”(hj%\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j!\h´M°hj"\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j!\h´M°hjJ[ubjÄ)�”}”(hŒ``loff_t *ppos`` file position ”h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hjE\h]”hŒ loff_t *ppos”…”�”}”(hjG\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjC\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M±hj?\ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file position”h]”hŒ file position”…”�”}”(hj^\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jZ\h´M±hj[\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj?\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jZ\h´M±hjJ[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj.[ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj€\h]”hŒ Description”…”�”}”(hj‚\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj~\ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M³hj.[ubhÌ)�”}”(hŒ¤Reads/writes up to table->maxlen/sizeof(unsigned int) unsigned integer values from/to the user buffer, treated as an ASCII string. Negative strings are not allowed.”h]”hŒ¤Reads/writes up to table->maxlen/sizeof(unsigned int) unsigned integer values from/to the user buffer, treated as an ASCII string. Negative strings are not allowed.”…”�”}”(hj–\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M²hj.[ubhÌ)�”}”(hXWhen changing the kernel variable, this routine will ensure the values are within the range specified by table->extra1 (min) and table->extra2 (max). And Check that the values are less than UINT_MAX to avoid having to support wrap around uses from userspace.”h]”hXWhen changing the kernel variable, this routine will ensure the values are within the range specified by table->extra1 (min) and table->extra2 (max). And Check that the values are less than UINT_MAX to avoid having to support wrap around uses from userspace.”…”�”}”(hj¥\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M¶hj.[ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj¶\h]”hŒReturn”…”�”}”(hj¸\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj´\ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M»hj.[ubhÌ)�”}”(hŒX``0`` on success or -ERANGE when range check failes and SYSCTL_USER_TO_KERN(dir) == true”h]”(jÐ)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjÐ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÌ\ubhŒS on success or -ERANGE when range check failes and SYSCTL_USER_TO_KERN(dir) == true”…”�”}”(hjÌ\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M¼hj.[ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjHEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ proc_dou8vec_minmax (C function)”Œc.proc_dou8vec_minmax”hNt”auh1hýhjHEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒjint proc_dou8vec_minmax (const struct ctl_table *table, int dir, void *buffer, size_t *lenp, loff_t *ppos)”h]”j)�”}”(hŒiint proc_dou8vec_minmax(const struct ctl_table *table, int dir, void *buffer, size_t *lenp, loff_t *ppos)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj ]h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj]h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MÇubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj]h²hh³j]h´MÇubjC)�”}”(hŒproc_dou8vec_minmax”h]”jI)�”}”(hŒproc_dou8vec_minmax”h]”hŒproc_dou8vec_minmax”…”�”}”(hj*]h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj&]ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj]h²hh³j]h´MÇubj=)�”}”(hŒR(const struct ctl_table *table, int dir, void *buffer, size_t *lenp, loff_t *ppos)”h]”(jC)�”}”(hŒconst struct ctl_table *table”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjF]h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjB]ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS]h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjB]ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hja]h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjB]ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn]h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjB]ubh)�”}”(hhh]”jI)�”}”(hŒ ctl_table”h]”hŒ ctl_table”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj|]ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j�]Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj,]sbŒc.proc_dou8vec_minmax”†”asbuh1hhjB]ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ]h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjB]ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj­]h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjB]ubjI)�”}”(hŒtable”h]”hŒtable”…”�”}”(hjº]h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjB]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj>]ubjC)�”}”(hŒint dir”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjÓ]h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÏ]ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjá]h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÏ]ubjI)�”}”(hŒdir”h]”hŒdir”…”�”}”(hjï]h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÏ]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj>]ubjC)�”}”(hŒ void *buffer”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj^ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj^ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj$^h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj^ubjI)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hj1^h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj>]ubjC)�”}”(hŒ size_t *lenp”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjM^h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjJ^ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jO^Œmodname”NŒ classname”Njj )�”}”j ]”j›]Œc.proc_dou8vec_minmax”†”asbuh1hhjF^ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjk^h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjF^ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjy^h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjF^ubjI)�”}”(hŒlenp”h]”hŒlenp”…”�”}”(hj†^h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjF^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj>]ubjC)�”}”(hŒ loff_t *ppos”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hj¢^h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŸ^ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¤^Œmodname”NŒ classname”Njj )�”}”j ]”j›]Œc.proc_dou8vec_minmax”†”asbuh1hhj›^ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀ^h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj›^ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÎ^h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj›^ubjI)�”}”(hŒppos”h]”hŒppos”…”�”}”(hjÛ^h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj›^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj>]ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj]h²hh³j]h´MÇubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj]h²hh³j]h´MÇubah}”(h]”jü\ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j]h´MÇhjþ\h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ3read a vector of unsigned chars with min/max values”h]”hŒ3read a vector of unsigned chars with min/max values”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MÇhj_h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjþ\h²hh³j]h´MÇubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j_jšj_j›‰jœ‰j�‰uh1jh²hhjHEh³Nh´NubjŸ)�”}”(hX€**Parameters** ``const struct ctl_table *table`` the sysctl table ``int dir`` ``TRUE`` if this is a write to the sysctl file ``void *buffer`` the user buffer ``size_t *lenp`` the size of the user buffer ``loff_t *ppos`` file position **Description** Reads/writes up to table->maxlen/sizeof(u8) unsigned chars values from/to the user buffer, treated as an ASCII string. Negative strings are not allowed. This routine will ensure the values are within the range specified by table->extra1 (min) and table->extra2 (max). **Return** ``0`` on success or an error on SYSCTL_USER_TO_KERN(dir) == true and the range check fails.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj'_h]”hŒ Parameters”…”�”}”(hj)_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj%_ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³•$ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MËhj!_ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ3``const struct ctl_table *table`` the sysctl table ”h]”(jÊ)�”}”(hŒ!``const struct ctl_table *table``”h]”jÐ)�”}”(hjF_h]”hŒconst struct ctl_table *table”…”�”}”(hjH_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjD_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MÈhj@_ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe sysctl table”h]”hŒthe sysctl table”…”�”}”(hj__h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j[_h´MÈhj\_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj@_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j[_h´MÈhj=_ubjÄ)�”}”(hŒ;``int dir`` ``TRUE`` if this is a write to the sysctl file ”h]”(jÊ)�”}”(hŒ ``int dir``”h]”jÐ)�”}”(hj_h]”hŒint dir”…”�”}”(hj�_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj}_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MÉhjy_ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.``TRUE`` if this is a write to the sysctl file”h]”(jÐ)�”}”(hŒ``TRUE``”h]”hŒTRUE”…”�”}”(hjœ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj˜_ubhŒ& if this is a write to the sysctl file”…”�”}”(hj˜_h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j”_h´MÉhj•_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjy_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j”_h´MÉhj=_ubjÄ)�”}”(hŒ!``void *buffer`` the user buffer ”h]”(jÊ)�”}”(hŒ``void *buffer``”h]”jÐ)�”}”(hjÆ_h]”hŒ void *buffer”…”�”}”(hjÈ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÄ_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MÊhjÀ_ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe user buffer”h]”hŒthe user buffer”…”�”}”(hjß_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÛ_h´MÊhjÜ_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÀ_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÛ_h´MÊhj=_ubjÄ)�”}”(hŒ-``size_t *lenp`` the size of the user buffer ”h]”(jÊ)�”}”(hŒ``size_t *lenp``”h]”jÐ)�”}”(hjÿ_h]”hŒ size_t *lenp”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjý_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MËhjù_ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe size of the user buffer”h]”hŒthe size of the user buffer”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j`h´MËhj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjù_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j`h´MËhj=_ubjÄ)�”}”(hŒ``loff_t *ppos`` file position ”h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hj8`h]”hŒ loff_t *ppos”…”�”}”(hj:`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj6`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MÌhj2`ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file position”h]”hŒ file position”…”�”}”(hjQ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jM`h´MÌhjN`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj2`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jM`h´MÌhj=_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj!_ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjs`h]”hŒ Description”…”�”}”(hju`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjq`ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MÎhj!_ubhÌ)�”}”(hŒ˜Reads/writes up to table->maxlen/sizeof(u8) unsigned chars values from/to the user buffer, treated as an ASCII string. Negative strings are not allowed.”h]”hŒ˜Reads/writes up to table->maxlen/sizeof(u8) unsigned chars values from/to the user buffer, treated as an ASCII string. Negative strings are not allowed.”…”�”}”(hj‰`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MÍhj!_ubhÌ)�”}”(hŒrThis routine will ensure the values are within the range specified by table->extra1 (min) and table->extra2 (max).”h]”hŒrThis routine will ensure the values are within the range specified by table->extra1 (min) and table->extra2 (max).”…”�”}”(hj˜`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MÑhj!_ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj©`h]”hŒReturn”…”�”}”(hj«`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj§`ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MÔhj!_ubhÌ)�”}”(hŒ[``0`` on success or an error on SYSCTL_USER_TO_KERN(dir) == true and the range check fails.”h]”(jÐ)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjÃ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¿`ubhŒV on success or an error on SYSCTL_USER_TO_KERN(dir) == true and the range check fails.”…”�”}”(hj¿`h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MÕhj!_ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjHEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ#proc_doulongvec_minmax (C function)”Œc.proc_doulongvec_minmax”hNt”auh1hýhjHEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒmint proc_doulongvec_minmax (const struct ctl_table *table, int dir, void *buffer, size_t *lenp, loff_t *ppos)”h]”j)�”}”(hŒlint proc_doulongvec_minmax(const struct ctl_table *table, int dir, void *buffer, size_t *lenp, loff_t *ppos)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjü`h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjø`h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´Muubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ah²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjø`h²hh³j ah´MuubjC)�”}”(hŒproc_doulongvec_minmax”h]”jI)�”}”(hŒproc_doulongvec_minmax”h]”hŒproc_doulongvec_minmax”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjaubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjø`h²hh³j ah´Muubj=)�”}”(hŒR(const struct ctl_table *table, int dir, void *buffer, size_t *lenp, loff_t *ppos)”h]”(jC)�”}”(hŒconst struct ctl_table *table”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj9ah²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj5aubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFah²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj5aubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjTah²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj5aubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaah²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj5aubh)�”}”(hhh]”jI)�”}”(hŒ ctl_table”h]”hŒ ctl_table”…”�”}”(hjrah²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjoaubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jtaŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjasbŒc.proc_doulongvec_minmax”†”asbuh1hhj5aubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’ah²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj5aubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj ah²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj5aubjI)�”}”(hŒtable”h]”hŒtable”…”�”}”(hj­ah²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj5aubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj1aubjC)�”}”(hŒint dir”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjÆah²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÂaubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔah²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÂaubjI)�”}”(hŒdir”h]”hŒdir”…”�”}”(hjâah²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÂaubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj1aubjC)�”}”(hŒ void *buffer”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjûah²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj÷aubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj bh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj÷aubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj÷aubjI)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hj$bh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj÷aubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj1aubjC)�”}”(hŒ size_t *lenp”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj@bh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj=bubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jBbŒmodname”NŒ classname”Njj )�”}”j ]”jŽaŒc.proc_doulongvec_minmax”†”asbuh1hhj9bubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^bh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj9bubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjlbh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj9bubjI)�”}”(hŒlenp”h]”hŒlenp”…”�”}”(hjybh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj9bubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj1aubjC)�”}”(hŒ loff_t *ppos”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hj•bh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj’bubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j—bŒmodname”NŒ classname”Njj )�”}”j ]”jŽaŒc.proc_doulongvec_minmax”†”asbuh1hhjŽbubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³bh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjŽbubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÁbh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjŽbubjI)�”}”(hŒppos”h]”hŒppos”…”�”}”(hjÎbh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŽbubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj1aubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjø`h²hh³j ah´Muubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjô`h²hh³j ah´Muubah}”(h]”jï`ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j ah´Muhjñ`h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ2read a vector of long integers with min/max values”h]”hŒ2read a vector of long integers with min/max values”…”�”}”(hjøbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´Muhjõbh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjñ`h²hh³j ah´Muubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jcjšjcj›‰jœ‰j�‰uh1jh²hhjHEh³Nh´NubjŸ)�”}”(hX**Parameters** ``const struct ctl_table *table`` the sysctl table ``int dir`` ``TRUE`` if this is a write to the sysctl file ``void *buffer`` the user buffer ``size_t *lenp`` the size of the user buffer ``loff_t *ppos`` file position **Description** Reads/writes up to table->maxlen/sizeof(unsigned long) unsigned long values from/to the user buffer, treated as an ASCII string. This routine will ensure the values are within the range specified by table->extra1 (min) and table->extra2 (max). **Return** ``0`` on success.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjch]”hŒ Parameters”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjcubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´Myhjcubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ3``const struct ctl_table *table`` the sysctl table ”h]”(jÊ)�”}”(hŒ!``const struct ctl_table *table``”h]”jÐ)�”}”(hj9ch]”hŒconst struct ctl_table *table”…”�”}”(hj;ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj7cubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´Mvhj3cubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe sysctl table”h]”hŒthe sysctl table”…”�”}”(hjRch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jNch´MvhjOcubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj3cubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jNch´Mvhj0cubjÄ)�”}”(hŒ;``int dir`` ``TRUE`` if this is a write to the sysctl file ”h]”(jÊ)�”}”(hŒ ``int dir``”h]”jÐ)�”}”(hjrch]”hŒint dir”…”�”}”(hjtch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjpcubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´Mwhjlcubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.``TRUE`` if this is a write to the sysctl file”h]”(jÐ)�”}”(hŒ``TRUE``”h]”hŒTRUE”…”�”}”(hj�ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj‹cubhŒ& if this is a write to the sysctl file”…”�”}”(hj‹ch²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‡ch´Mwhjˆcubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjlcubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‡ch´Mwhj0cubjÄ)�”}”(hŒ!``void *buffer`` the user buffer ”h]”(jÊ)�”}”(hŒ``void *buffer``”h]”jÐ)�”}”(hj¹ch]”hŒ void *buffer”…”�”}”(hj»ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj·cubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´Mxhj³cubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe user buffer”h]”hŒthe user buffer”…”�”}”(hjÒch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÎch´MxhjÏcubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj³cubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÎch´Mxhj0cubjÄ)�”}”(hŒ-``size_t *lenp`` the size of the user buffer ”h]”(jÊ)�”}”(hŒ``size_t *lenp``”h]”jÐ)�”}”(hjòch]”hŒ size_t *lenp”…”�”}”(hjôch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjðcubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´Myhjìcubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe size of the user buffer”h]”hŒthe size of the user buffer”…”�”}”(hj dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jdh´Myhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjìcubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jdh´Myhj0cubjÄ)�”}”(hŒ``loff_t *ppos`` file position ”h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hj+dh]”hŒ loff_t *ppos”…”�”}”(hj-dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj)dubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´Mzhj%dubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file position”h]”hŒ file position”…”�”}”(hjDdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j@dh´MzhjAdubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj%dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j@dh´Mzhj0cubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjcubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjfdh]”hŒ Description”…”�”}”(hjhdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjddubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M|hjcubhÌ)�”}”(hŒ€Reads/writes up to table->maxlen/sizeof(unsigned long) unsigned long values from/to the user buffer, treated as an ASCII string.”h]”hŒ€Reads/writes up to table->maxlen/sizeof(unsigned long) unsigned long values from/to the user buffer, treated as an ASCII string.”…”�”}”(hj|dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M{hjcubhÌ)�”}”(hŒrThis routine will ensure the values are within the range specified by table->extra1 (min) and table->extra2 (max).”h]”hŒrThis routine will ensure the values are within the range specified by table->extra1 (min) and table->extra2 (max).”…”�”}”(hj‹dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M~hjcubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjœdh]”hŒReturn”…”�”}”(hjždh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjšdubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M�hjcubhÌ)�”}”(hŒ``0`` on success.”h]”(jÐ)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hj¶dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj²dubhŒ on success.”…”�”}”(hj²dh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M‚hjcubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjHEh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ!proc_do_large_bitmap (C function)”Œc.proc_do_large_bitmap”hNt”auh1hýhjHEh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒkint proc_do_large_bitmap (const struct ctl_table *table, int dir, void *buffer, size_t *lenp, loff_t *ppos)”h]”j)�”}”(hŒjint proc_do_large_bitmap(const struct ctl_table *table, int dir, void *buffer, size_t *lenp, loff_t *ppos)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjïdh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjëdh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M¥ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþdh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjëdh²hh³jýdh´M¥ubjC)�”}”(hŒproc_do_large_bitmap”h]”jI)�”}”(hŒproc_do_large_bitmap”h]”hŒproc_do_large_bitmap”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj eubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjëdh²hh³jýdh´M¥ubj=)�”}”(hŒR(const struct ctl_table *table, int dir, void *buffer, size_t *lenp, loff_t *ppos)”h]”(jC)�”}”(hŒconst struct ctl_table *table”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj,eh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj(eubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9eh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj(eubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjGeh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj(eubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTeh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj(eubh)�”}”(hhh]”jI)�”}”(hŒ ctl_table”h]”hŒ ctl_table”…”�”}”(hjeeh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjbeubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jgeŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjesbŒc.proc_do_large_bitmap”†”asbuh1hhj(eubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…eh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj(eubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj“eh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj(eubjI)�”}”(hŒtable”h]”hŒtable”…”�”}”(hj eh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj(eubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj$eubjC)�”}”(hŒint dir”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj¹eh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjµeubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇeh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjµeubjI)�”}”(hŒdir”h]”hŒdir”…”�”}”(hjÕeh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjµeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj$eubjC)�”}”(hŒ void *buffer”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjîeh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjêeubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüeh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjêeubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj fh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjêeubjI)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjêeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj$eubjC)�”}”(hŒ size_t *lenp”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj3fh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj0fubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j5fŒmodname”NŒ classname”Njj )�”}”j ]”j�eŒc.proc_do_large_bitmap”†”asbuh1hhj,fubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQfh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj,fubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj_fh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj,fubjI)�”}”(hŒlenp”h]”hŒlenp”…”�”}”(hjlfh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj,fubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj$eubjC)�”}”(hŒ loff_t *ppos”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjˆfh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj…fubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jŠfŒmodname”NŒ classname”Njj )�”}”j ]”j�eŒc.proc_do_large_bitmap”†”asbuh1hhj�fubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦fh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�fubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj´fh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj�fubjI)�”}”(hŒppos”h]”hŒppos”…”�”}”(hjÁfh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�fubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj$eubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjëdh²hh³jýdh´M¥ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjçdh²hh³jýdh´M¥ubah}”(h]”jâdah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jýdh´M¥hjädh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ!read/write from/to a large bitmap”h]”hŒ!read/write from/to a large bitmap”…”�”}”(hjëfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M¥hjèfh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjädh²hh³jýdh´M¥ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jgjšjgj›‰jœ‰j�‰uh1jh²hhjHEh³Nh´NubjŸ)�”}”(hXH**Parameters** ``const struct ctl_table *table`` the sysctl table ``int dir`` ``TRUE`` if this is a write to the sysctl file ``void *buffer`` the user buffer ``size_t *lenp`` the size of the user buffer ``loff_t *ppos`` file position **Description** The bitmap is stored at table->data and the bitmap length (in bits) in table->maxlen. We use a range comma separated format (e.g. 1,3-4,10-10) so that large bitmaps may be represented in a compact manner. Writing into the file will clear the bitmap then update it with the given input. **Return** ``0`` on success.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj gh]”hŒ Parameters”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj gubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M©hjgubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ3``const struct ctl_table *table`` the sysctl table ”h]”(jÊ)�”}”(hŒ!``const struct ctl_table *table``”h]”jÐ)�”}”(hj,gh]”hŒconst struct ctl_table *table”…”�”}”(hj.gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj*gubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M¦hj&gubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe sysctl table”h]”hŒthe sysctl table”…”�”}”(hjEgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jAgh´M¦hjBgubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj&gubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jAgh´M¦hj#gubjÄ)�”}”(hŒ;``int dir`` ``TRUE`` if this is a write to the sysctl file ”h]”(jÊ)�”}”(hŒ ``int dir``”h]”jÐ)�”}”(hjegh]”hŒint dir”…”�”}”(hjggh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjcgubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M§hj_gubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.``TRUE`` if this is a write to the sysctl file”h]”(jÐ)�”}”(hŒ``TRUE``”h]”hŒTRUE”…”�”}”(hj‚gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj~gubhŒ& if this is a write to the sysctl file”…”�”}”(hj~gh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jzgh´M§hj{gubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj_gubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jzgh´M§hj#gubjÄ)�”}”(hŒ!``void *buffer`` the user buffer ”h]”(jÊ)�”}”(hŒ``void *buffer``”h]”jÐ)�”}”(hj¬gh]”hŒ void *buffer”…”�”}”(hj®gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjªgubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M¨hj¦gubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe user buffer”h]”hŒthe user buffer”…”�”}”(hjÅgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÁgh´M¨hjÂgubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¦gubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÁgh´M¨hj#gubjÄ)�”}”(hŒ-``size_t *lenp`` the size of the user buffer ”h]”(jÊ)�”}”(hŒ``size_t *lenp``”h]”jÐ)�”}”(hjågh]”hŒ size_t *lenp”…”�”}”(hjçgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjãgubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M©hjßgubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe size of the user buffer”h]”hŒthe size of the user buffer”…”�”}”(hjþgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³júgh´M©hjûgubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjßgubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³júgh´M©hj#gubjÄ)�”}”(hŒ``loff_t *ppos`` file position ”h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hjhh]”hŒ loff_t *ppos”…”�”}”(hj hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´Mªhjhubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file position”h]”hŒ file position”…”�”}”(hj7hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j3hh´Mªhj4hubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjhubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j3hh´Mªhj#gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjgubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjYhh]”hŒ Description”…”�”}”(hj[hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjWhubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M¬hjgubhÌ)�”}”(hŒUThe bitmap is stored at table->data and the bitmap length (in bits) in table->maxlen.”h]”hŒUThe bitmap is stored at table->data and the bitmap length (in bits) in table->maxlen.”…”�”}”(hjohh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M«hjgubhÌ)�”}”(hŒÇWe use a range comma separated format (e.g. 1,3-4,10-10) so that large bitmaps may be represented in a compact manner. Writing into the file will clear the bitmap then update it with the given input.”h]”hŒÇWe use a range comma separated format (e.g. 1,3-4,10-10) so that large bitmaps may be represented in a compact manner. Writing into the file will clear the bitmap then update it with the given input.”…”�”}”(hj~hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M®hjgubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj�hh]”hŒReturn”…”�”}”(hj‘hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj�hubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M²hjgubhÌ)�”}”(hŒ``0`` on success.”h]”(jÐ)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hj©hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¥hubhŒ on success.”…”�”}”(hj¥hh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M³hjgubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjHEh²hh³Nh´Nubeh}”(h]”Œsysctl-interface”ah ]”h"]”Œsysctl interface”ah$]”h&]”uh1hµhj7Eh²hh³hÊh´Klubh¶)�”}”(hhh]”(h»)�”}”(hŒproc filesystem interface”h]”hŒproc filesystem interface”…”�”}”(hjÔhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÑhh²hh³hÊh´Krubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œproc_flush_pid (C function)”Œc.proc_flush_pid”hNt”auh1hýhjÑhh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ%void proc_flush_pid (struct pid *pid)”h]”j)�”}”(hŒ$void proc_flush_pid(struct pid *pid)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjûhh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj÷hh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:116: ./fs/proc/base.c”h´Mn ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ih²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj÷hh²hh³j ih´Mn ubjC)�”}”(hŒproc_flush_pid”h]”jI)�”}”(hŒproc_flush_pid”h]”hŒproc_flush_pid”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjiubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj÷hh²hh³j ih´Mn ubj=)�”}”(hŒ(struct pid *pid)”h]”jC)�”}”(hŒstruct pid *pid”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj8ih²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj4iubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEih²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj4iubh)�”}”(hhh]”jI)�”}”(hŒpid”h]”hŒpid”…”�”}”(hjVih²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjSiubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jXiŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjisbŒc.proc_flush_pid”†”asbuh1hhj4iubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvih²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj4iubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj„ih²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj4iubjI)�”}”(hŒpid”h]”hŒpid”…”�”}”(hj‘ih²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj4iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj0iubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj÷hh²hh³j ih´Mn ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjóhh²hh³j ih´Mn ubah}”(h]”jîhah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j ih´Mn hjðhh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ8Remove dcache entries for **pid** from the /proc dcache.”h]”(hŒRemove dcache entries for ”…”�”}”(hj»ih²hh³Nh´Nubj©)�”}”(hŒ**pid**”h]”hŒpid”…”�”}”(hjÃih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj»iubhŒ from the /proc dcache.”…”�”}”(hj»ih²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:116: ./fs/proc/base.c”h´Mn hj¸ih²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjðhh²hh³j ih´Mn ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jåijšjåij›‰jœ‰j�‰uh1jh²hhjÑhh³Nh´NubjŸ)�”}”(hXÔ**Parameters** ``struct pid *pid`` pid that should be flushed. **Description** This function walks a list of inodes (that belong to any proc filesystem) that are attached to the pid and flushes them from the dentry cache. It is safe and reasonable to cache /proc entries for a task until that task exits. After that they just clog up the dcache with useless entries, possibly causing useful dcache entries to be flushed instead. This routine is provided to flush those useless dcache entries when a process is reaped. **NOTE** This routine is just an optimization so it does not guarantee that no dcache entries will exist after a process is reaped it just makes it very unlikely that any will persist.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjïih]”hŒ Parameters”…”�”}”(hjñih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjíiubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:116: ./fs/proc/base.c”h´Mr hjéiubj¿)�”}”(hhh]”jÄ)�”}”(hŒ0``struct pid *pid`` pid that should be flushed. ”h]”(jÊ)�”}”(hŒ``struct pid *pid``”h]”jÐ)�”}”(hjjh]”hŒstruct pid *pid”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj jubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:116: ./fs/proc/base.c”h´Mo hjjubjæ)�”}”(hhh]”hÌ)�”}”(hŒpid that should be flushed.”h]”hŒpid that should be flushed.”…”�”}”(hj'jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j#jh´Mo hj$jubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j#jh´Mo hjjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjéiubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjIjh]”hŒ Description”…”�”}”(hjKjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjGjubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:116: ./fs/proc/base.c”h´Mq hjéiubhÌ)�”}”(hŒŽThis function walks a list of inodes (that belong to any proc filesystem) that are attached to the pid and flushes them from the dentry cache.”h]”hŒŽThis function walks a list of inodes (that belong to any proc filesystem) that are attached to the pid and flushes them from the dentry cache.”…”�”}”(hj_jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:116: ./fs/proc/base.c”h´Mp hjéiubhÌ)�”}”(hX)It is safe and reasonable to cache /proc entries for a task until that task exits. After that they just clog up the dcache with useless entries, possibly causing useful dcache entries to be flushed instead. This routine is provided to flush those useless dcache entries when a process is reaped.”h]”hX)It is safe and reasonable to cache /proc entries for a task until that task exits. After that they just clog up the dcache with useless entries, possibly causing useful dcache entries to be flushed instead. This routine is provided to flush those useless dcache entries when a process is reaped.”…”�”}”(hjnjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:116: ./fs/proc/base.c”h´Mt hjéiubhÌ)�”}”(hŒ**NOTE**”h]”j©)�”}”(hjjh]”hŒNOTE”…”�”}”(hj�jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj}jubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:116: ./fs/proc/base.c”h´Mz hjéiubj¿)�”}”(hhh]”jÄ)�”}”(hŒ¯This routine is just an optimization so it does not guarantee that no dcache entries will exist after a process is reaped it just makes it very unlikely that any will persist.”h]”(jÊ)�”}”(hŒ=This routine is just an optimization so it does not guarantee”h]”hŒ=This routine is just an optimization so it does not guarantee”…”�”}”(hjœjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:116: ./fs/proc/base.c”h´M| hj˜jubjæ)�”}”(hhh]”hÌ)�”}”(hŒqthat no dcache entries will exist after a process is reaped it just makes it very unlikely that any will persist.”h]”hŒqthat no dcache entries will exist after a process is reaped it just makes it very unlikely that any will persist.”…”�”}”(hj®jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jªjh´M| hj«jubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj˜jubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jªjh´M| hj•jubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjéiubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjÑhh²hh³Nh´Nubeh}”(h]”Œproc-filesystem-interface”ah ]”h"]”Œproc filesystem interface”ah$]”h&]”uh1hµhj7Eh²hh³hÊh´Krubeh}”(h]”Œthe-proc-filesystem”ah ]”h"]”Œthe proc filesystem”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kiubh¶)�”}”(hhh]”(h»)�”}”(hŒ Events based on file descriptors”h]”hŒ Events based on file descriptors”…”�”}”(hjèjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjåjh²hh³hÊh´Kxubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ eventfd_signal_mask (C function)”Œc.eventfd_signal_mask”hNt”auh1hýhjåjh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒAvoid eventfd_signal_mask (struct eventfd_ctx *ctx, __poll_t mask)”h]”j)�”}”(hŒ@void eventfd_signal_mask(struct eventfd_ctx *ctx, __poll_t mask)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj kh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´K/ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj kh²hh³jkh´K/ubjC)�”}”(hŒeventfd_signal_mask”h]”jI)�”}”(hŒeventfd_signal_mask”h]”hŒeventfd_signal_mask”…”�”}”(hj0kh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj,kubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj kh²hh³jkh´K/ubj=)�”}”(hŒ((struct eventfd_ctx *ctx, __poll_t mask)”h]”(jC)�”}”(hŒstruct eventfd_ctx *ctx”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjLkh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjHkubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYkh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjHkubh)�”}”(hhh]”jI)�”}”(hŒ eventfd_ctx”h]”hŒ eventfd_ctx”…”�”}”(hjjkh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjgkubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jlkŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj2ksbŒc.eventfd_signal_mask”†”asbuh1hhjHkubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠkh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjHkubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj˜kh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjHkubjI)�”}”(hŒctx”h]”hŒctx”…”�”}”(hj¥kh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjHkubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjDkubjC)�”}”(hŒ __poll_t mask”h]”(h)�”}”(hhh]”jI)�”}”(hŒ__poll_t”h]”hŒ__poll_t”…”�”}”(hjÁkh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¾kubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÃkŒmodname”NŒ classname”Njj )�”}”j ]”j†kŒc.eventfd_signal_mask”†”asbuh1hhjºkubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßkh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjºkubjI)�”}”(hŒmask”h]”hŒmask”…”�”}”(hjíkh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjºkubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjDkubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj kh²hh³jkh´K/ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjkh²hh³jkh´K/ubah}”(h]”jkah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jkh´K/hjkh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒIncrement the event counter”h]”hŒIncrement the event counter”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´K/hjlh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjkh²hh³jkh´K/ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j/ljšj/lj›‰jœ‰j�‰uh1jh²hhjåjh³Nh´NubjŸ)�”}”(hXt**Parameters** ``struct eventfd_ctx *ctx`` [in] Pointer to the eventfd context. ``__poll_t mask`` [in] poll mask **Description** This function is supposed to be called by the kernel in paths that do not allow sleeping. In this function we allow the counter to reach the ULLONG_MAX value, and we signal this as overflow condition by returning a EPOLLERR to poll(2).”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj9lh]”hŒ Parameters”…”�”}”(hj;lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj7lubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´K3hj3lubj¿)�”}”(hhh]”(jÄ)�”}”(hŒA``struct eventfd_ctx *ctx`` [in] Pointer to the eventfd context. ”h]”(jÊ)�”}”(hŒ``struct eventfd_ctx *ctx``”h]”jÐ)�”}”(hjXlh]”hŒstruct eventfd_ctx *ctx”…”�”}”(hjZlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjVlubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´K0hjRlubjæ)�”}”(hhh]”hÌ)�”}”(hŒ$[in] Pointer to the eventfd context.”h]”hŒ$[in] Pointer to the eventfd context.”…”�”}”(hjqlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jmlh´K0hjnlubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjRlubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jmlh´K0hjOlubjÄ)�”}”(hŒ!``__poll_t mask`` [in] poll mask ”h]”(jÊ)�”}”(hŒ``__poll_t mask``”h]”jÐ)�”}”(hj‘lh]”hŒ __poll_t mask”…”�”}”(hj“lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj�lubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´K1hj‹lubjæ)�”}”(hhh]”hÌ)�”}”(hŒ[in] poll mask”h]”hŒ[in] poll mask”…”�”}”(hjªlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¦lh´K1hj§lubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj‹lubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¦lh´K1hjOlubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj3lubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÌlh]”hŒ Description”…”�”}”(hjÎlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÊlubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´K3hj3lubhÌ)�”}”(hŒëThis function is supposed to be called by the kernel in paths that do not allow sleeping. In this function we allow the counter to reach the ULLONG_MAX value, and we signal this as overflow condition by returning a EPOLLERR to poll(2).”h]”hŒëThis function is supposed to be called by the kernel in paths that do not allow sleeping. In this function we allow the counter to reach the ULLONG_MAX value, and we signal this as overflow condition by returning a EPOLLERR to poll(2).”…”�”}”(hjâlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´K2hj3lubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjåjh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œeventfd_ctx_put (C function)”Œc.eventfd_ctx_put”hNt”auh1hýhjåjh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ.void eventfd_ctx_put (struct eventfd_ctx *ctx)”h]”j)�”}”(hŒ-void eventfd_ctx_put(struct eventfd_ctx *ctx)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj mh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´Kaubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj mh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj mh²hh³jmh´KaubjC)�”}”(hŒeventfd_ctx_put”h]”jI)�”}”(hŒeventfd_ctx_put”h]”hŒeventfd_ctx_put”…”�”}”(hj2mh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj.mubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj mh²hh³jmh´Kaubj=)�”}”(hŒ(struct eventfd_ctx *ctx)”h]”jC)�”}”(hŒstruct eventfd_ctx *ctx”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjNmh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjJmubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[mh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjJmubh)�”}”(hhh]”jI)�”}”(hŒ eventfd_ctx”h]”hŒ eventfd_ctx”…”�”}”(hjlmh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjimubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jnmŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj4msbŒc.eventfd_ctx_put”†”asbuh1hhjJmubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒmh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjJmubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjšmh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjJmubjI)�”}”(hŒctx”h]”hŒctx”…”�”}”(hj§mh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjJmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjFmubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj mh²hh³jmh´Kaubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj mh²hh³jmh´Kaubah}”(h]”jmah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jmh´Kahjmh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ5Releases a reference to the internal eventfd context.”h]”hŒ5Releases a reference to the internal eventfd context.”…”�”}”(hjÑmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´KahjÎmh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjmh²hh³jmh´Kaubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jémjšjémj›‰jœ‰j�‰uh1jh²hhjåjh³Nh´NubjŸ)�”}”(hŒÛ**Parameters** ``struct eventfd_ctx *ctx`` [in] Pointer to eventfd context. **Description** The eventfd context reference must have been previously acquired either with eventfd_ctx_fdget() or eventfd_ctx_fileget().”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjómh]”hŒ Parameters”…”�”}”(hjõmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjñmubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´Kehjímubj¿)�”}”(hhh]”jÄ)�”}”(hŒ=``struct eventfd_ctx *ctx`` [in] Pointer to eventfd context. ”h]”(jÊ)�”}”(hŒ``struct eventfd_ctx *ctx``”h]”jÐ)�”}”(hjnh]”hŒstruct eventfd_ctx *ctx”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´Kbhj nubjæ)�”}”(hhh]”hÌ)�”}”(hŒ [in] Pointer to eventfd context.”h]”hŒ [in] Pointer to eventfd context.”…”�”}”(hj+nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j'nh´Kbhj(nubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j'nh´Kbhj nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjímubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjMnh]”hŒ Description”…”�”}”(hjOnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjKnubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´KdhjímubhÌ)�”}”(hŒzThe eventfd context reference must have been previously acquired either with eventfd_ctx_fdget() or eventfd_ctx_fileget().”h]”hŒzThe eventfd context reference must have been previously acquired either with eventfd_ctx_fdget() or eventfd_ctx_fileget().”…”�”}”(hjcnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´Kchjímubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjåjh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ*eventfd_ctx_remove_wait_queue (C function)”Œc.eventfd_ctx_remove_wait_queue”hNt”auh1hýhjåjh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒaint eventfd_ctx_remove_wait_queue (struct eventfd_ctx *ctx, wait_queue_entry_t *wait, __u64 *cnt)”h]”j)�”}”(hŒ`int eventfd_ctx_remove_wait_queue(struct eventfd_ctx *ctx, wait_queue_entry_t *wait, __u64 *cnt)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj’nh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjŽnh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´Kºubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡nh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjŽnh²hh³j nh´KºubjC)�”}”(hŒeventfd_ctx_remove_wait_queue”h]”jI)�”}”(hŒeventfd_ctx_remove_wait_queue”h]”hŒeventfd_ctx_remove_wait_queue”…”�”}”(hj³nh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¯nubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjŽnh²hh³j nh´Kºubj=)�”}”(hŒ?(struct eventfd_ctx *ctx, wait_queue_entry_t *wait, __u64 *cnt)”h]”(jC)�”}”(hŒstruct eventfd_ctx *ctx”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÏnh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjËnubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜnh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjËnubh)�”}”(hhh]”jI)�”}”(hŒ eventfd_ctx”h]”hŒ eventfd_ctx”…”�”}”(hjính²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjênubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jïnŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjµnsbŒc.eventfd_ctx_remove_wait_queue”†”asbuh1hhjËnubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj oh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjËnubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjËnubjI)�”}”(hŒctx”h]”hŒctx”…”�”}”(hj(oh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjËnubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÇnubjC)�”}”(hŒwait_queue_entry_t *wait”h]”(h)�”}”(hhh]”jI)�”}”(hŒwait_queue_entry_t”h]”hŒwait_queue_entry_t”…”�”}”(hjDoh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjAoubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jFoŒmodname”NŒ classname”Njj )�”}”j ]”j oŒc.eventfd_ctx_remove_wait_queue”†”asbuh1hhj=oubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjboh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj=oubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjpoh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj=oubjI)�”}”(hŒwait”h]”hŒwait”…”�”}”(hj}oh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj=oubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÇnubjC)�”}”(hŒ __u64 *cnt”h]”(h)�”}”(hhh]”jI)�”}”(hŒ__u64”h]”hŒ__u64”…”�”}”(hj™oh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj–oubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j›oŒmodname”NŒ classname”Njj )�”}”j ]”j oŒc.eventfd_ctx_remove_wait_queue”†”asbuh1hhj’oubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·oh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj’oubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÅoh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj’oubjI)�”}”(hŒcnt”h]”hŒcnt”…”�”}”(hjÒoh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj’oubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÇnubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjŽnh²hh³j nh´Kºubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjŠnh²hh³j nh´Kºubah}”(h]”j…nah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j nh´Kºhj‡nh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ0Read the current counter and removes wait queue.”h]”hŒ0Read the current counter and removes wait queue.”…”�”}”(hjüoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´Kºhjùoh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj‡nh²hh³j nh´Kºubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jpjšjpj›‰jœ‰j�‰uh1jh²hhjåjh³Nh´NubjŸ)�”}”(hXÃ**Parameters** ``struct eventfd_ctx *ctx`` [in] Pointer to eventfd context. ``wait_queue_entry_t *wait`` [in] Wait queue to be removed. ``__u64 *cnt`` [out] Pointer to the 64-bit counter value. **Description** Returns ``0`` if successful, or the following error codes: -EAGAIN : The operation would have blocked. This is used to atomically remove a wait queue entry from the eventfd wait queue head, and read/reset the counter value.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjph]”hŒ Parameters”…”�”}”(hj ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjpubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´K¾hjpubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ=``struct eventfd_ctx *ctx`` [in] Pointer to eventfd context. ”h]”(jÊ)�”}”(hŒ``struct eventfd_ctx *ctx``”h]”jÐ)�”}”(hj=ph]”hŒstruct eventfd_ctx *ctx”…”�”}”(hj?ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj;pubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´K»hj7pubjæ)�”}”(hhh]”hÌ)�”}”(hŒ [in] Pointer to eventfd context.”h]”hŒ [in] Pointer to eventfd context.”…”�”}”(hjVph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jRph´K»hjSpubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj7pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jRph´K»hj4pubjÄ)�”}”(hŒ<``wait_queue_entry_t *wait`` [in] Wait queue to be removed. ”h]”(jÊ)�”}”(hŒ``wait_queue_entry_t *wait``”h]”jÐ)�”}”(hjvph]”hŒwait_queue_entry_t *wait”…”�”}”(hjxph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjtpubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´K¼hjppubjæ)�”}”(hhh]”hÌ)�”}”(hŒ[in] Wait queue to be removed.”h]”hŒ[in] Wait queue to be removed.”…”�”}”(hj�ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‹ph´K¼hjŒpubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjppubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‹ph´K¼hj4pubjÄ)�”}”(hŒ:``__u64 *cnt`` [out] Pointer to the 64-bit counter value. ”h]”(jÊ)�”}”(hŒ``__u64 *cnt``”h]”jÐ)�”}”(hj¯ph]”hŒ __u64 *cnt”…”�”}”(hj±ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj­pubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´K½hj©pubjæ)�”}”(hhh]”hÌ)�”}”(hŒ*[out] Pointer to the 64-bit counter value.”h]”hŒ*[out] Pointer to the 64-bit counter value.”…”�”}”(hjÈph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÄph´K½hjÅpubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj©pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÄph´K½hj4pubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjpubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjêph]”hŒ Description”…”�”}”(hjìph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjèpubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´K¿hjpubhÌ)�”}”(hŒ:Returns ``0`` if successful, or the following error codes:”h]”(hŒReturns ”…”�”}”(hjqh²hh³Nh´NubjÐ)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjqubhŒ- if successful, or the following error codes:”…”�”}”(hjqh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´K¾hjpubhŒ option_list”“”)�”}”(hhh]”hŒoption_list_item”“”)�”}”(hhh]”(hŒ option_group”“”)�”}”(hhh]”hŒoption”“”)�”}”(hŒ-EAGAIN”h]”(hŒ option_string”“”)�”}”(hŒ-E”h]”hŒ-E”…”�”}”hj8qsbah}”(h]”h ]”h"]”h$]”h&]”uh1j6qhj2qubhŒoption_argument”“”)�”}”(hŒAGAIN”h]”hŒAGAIN”…”�”}”(hjHqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œ delimiter”huh1jFqhj2qubeh}”(h]”h ]”h"]”h$]”h&]”uh1j0qhj-qubah}”(h]”h ]”h"]”h$]”h&]”uh1j+qhj(qubhŒ description”“”)�”}”(hŒ$: The operation would have blocked. ”h]”hÌ)�”}”(hŒ#: The operation would have blocked.”h]”hŒ#: The operation would have blocked.”…”�”}”(hjiqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´KÀhjequbah}”(h]”h ]”h"]”h$]”h&]”uh1jcqhj(qubeh}”(h]”h ]”h"]”h$]”h&]”uh1j&qhj#qubah}”(h]”h ]”h"]”h$]”h&]”uh1j!qh³jwqh´KÀhjpubhÌ)�”}”(hŒxThis is used to atomically remove a wait queue entry from the eventfd wait queue head, and read/reset the counter value.”h]”hŒxThis is used to atomically remove a wait queue entry from the eventfd wait queue head, and read/reset the counter value.”…”�”}”(hjŠqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´KÂhjpubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjåjh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œeventfd_fget (C function)”Œc.eventfd_fget”hNt”auh1hýhjåjh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ#struct file * eventfd_fget (int fd)”h]”j)�”}”(hŒ!struct file *eventfd_fget(int fd)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¹qh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjµqh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´M:ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇqh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjµqh²hh³jÆqh´M:ubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjØqh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÕqubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÚqŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒ eventfd_fget”sbŒc.eventfd_fget”†”asbuh1hhjµqh²hh³jÆqh´M:ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùqh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjµqh²hh³jÆqh´M:ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjµqh²hh³jÆqh´M:ubjC)�”}”(hŒ eventfd_fget”h]”jI)�”}”(hjöqh]”hŒ eventfd_fget”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjrubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjµqh²hh³jÆqh´M:ubj=)�”}”(hŒ(int fd)”h]”jC)�”}”(hŒint fd”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj3rh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj/rubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjArh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj/rubjI)�”}”(hŒfd”h]”hŒfd”…”�”}”(hjOrh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj/rubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj+rubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjµqh²hh³jÆqh´M:ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj±qh²hh³jÆqh´M:ubah}”(h]”j¬qah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÆqh´M:hj®qh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ2Acquire a reference of an eventfd file descriptor.”h]”hŒ2Acquire a reference of an eventfd file descriptor.”…”�”}”(hjyrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´M:hjvrh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj®qh²hh³jÆqh´M:ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j‘rjšj‘rj›‰jœ‰j�‰uh1jh²hhjåjh³Nh´NubjŸ)�”}”(hX**Parameters** ``int fd`` [in] Eventfd file descriptor. **Description** Returns a pointer to the eventfd file structure in case of success, or the following error pointer: -EBADF : Invalid **fd** file descriptor. -EINVAL : The **fd** file descriptor is not an eventfd file.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj›rh]”hŒ Parameters”…”�”}”(hj�rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj™rubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´M>hj•rubj¿)�”}”(hhh]”jÄ)�”}”(hŒ)``int fd`` [in] Eventfd file descriptor. ”h]”(jÊ)�”}”(hŒ ``int fd``”h]”jÐ)�”}”(hjºrh]”hŒint fd”…”�”}”(hj¼rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¸rubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´M;hj´rubjæ)�”}”(hhh]”hÌ)�”}”(hŒ[in] Eventfd file descriptor.”h]”hŒ[in] Eventfd file descriptor.”…”�”}”(hjÓrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÏrh´M;hjÐrubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj´rubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÏrh´M;hj±rubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj•rubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjõrh]”hŒ Description”…”�”}”(hj÷rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjórubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´M=hj•rubhÌ)�”}”(hŒcReturns a pointer to the eventfd file structure in case of success, or the following error pointer:”h]”hŒcReturns a pointer to the eventfd file structure in case of success, or the following error pointer:”…”�”}”(hj sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´M<hj•rubj"q)�”}”(hhh]”(j'q)�”}”(hhh]”(j,q)�”}”(hhh]”j1q)�”}”(hŒ-EBADF”h]”(j7q)�”}”(hŒ-E”h]”hŒ-E”…”�”}”hj'ssbah}”(h]”h ]”h"]”h$]”h&]”uh1j6qhj#subjGq)�”}”(hŒBADF”h]”hŒBADF”…”�”}”(hj5sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œ delimiter”huh1jFqhj#subeh}”(h]”h ]”h"]”h$]”h&]”uh1j0qhj subah}”(h]”h ]”h"]”h$]”h&]”uh1j+qhjsubjdq)�”}”(hŒ!: Invalid **fd** file descriptor.”h]”hÌ)�”}”(hjRsh]”(hŒ : Invalid ”…”�”}”(hjTsh²hh³Nh´Nubj©)�”}”(hŒ**fd**”h]”hŒfd”…”�”}”(hj[sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjTsubhŒ file descriptor.”…”�”}”(hjTsh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´M?hjPsubah}”(h]”h ]”h"]”h$]”h&]”uh1jcqhjsubeh}”(h]”h ]”h"]”h$]”h&]”uh1j&qhjsubj'q)�”}”(hhh]”(j,q)�”}”(hhh]”j1q)�”}”(hŒ-EINVAL”h]”(j7q)�”}”(hŒ-E”h]”hŒ-E”…”�”}”hjŠssbah}”(h]”h ]”h"]”h$]”h&]”uh1j6qhj†subjGq)�”}”(hŒINVAL”h]”hŒINVAL”…”�”}”(hj˜sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œ delimiter”huh1jFqhj†subeh}”(h]”h ]”h"]”h$]”h&]”uh1j0qhjƒsubah}”(h]”h ]”h"]”h$]”h&]”uh1j+qhj€subjdq)�”}”(hŒ4: The **fd** file descriptor is not an eventfd file.”h]”hÌ)�”}”(hjµsh]”(hŒ: The ”…”�”}”(hj·sh²hh³Nh´Nubj©)�”}”(hŒ**fd**”h]”hŒfd”…”�”}”(hj¾sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj·subhŒ( file descriptor is not an eventfd file.”…”�”}”(hj·sh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´M@hj³subah}”(h]”h ]”h"]”h$]”h&]”uh1jcqhj€subeh}”(h]”h ]”h"]”h$]”h&]”uh1j&qhjsubeh}”(h]”h ]”h"]”h$]”h&]”uh1j!qh³jssh´M?hj•rubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjåjh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œeventfd_ctx_fdget (C function)”Œc.eventfd_ctx_fdget”hNt”auh1hýhjåjh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ/struct eventfd_ctx * eventfd_ctx_fdget (int fd)”h]”j)�”}”(hŒ-struct eventfd_ctx *eventfd_ctx_fdget(int fd)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj th²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjth²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´MTubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjth²hh³jth´MTubh)�”}”(hhh]”jI)�”}”(hŒ eventfd_ctx”h]”hŒ eventfd_ctx”…”�”}”(hj(th²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj%tubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j*tŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒeventfd_ctx_fdget”sbŒc.eventfd_ctx_fdget”†”asbuh1hhjth²hh³jth´MTubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIth²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjth²hh³jth´MTubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjWth²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjth²hh³jth´MTubjC)�”}”(hŒeventfd_ctx_fdget”h]”jI)�”}”(hjFth]”hŒeventfd_ctx_fdget”…”�”}”(hjhth²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjdtubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjth²hh³jth´MTubj=)�”}”(hŒ(int fd)”h]”jC)�”}”(hŒint fd”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjƒth²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjtubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘th²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjtubjI)�”}”(hŒfd”h]”hŒfd”…”�”}”(hjŸth²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjtubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj{tubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjth²hh³jth´MTubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjth²hh³jth´MTubah}”(h]”jüsah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jth´MThjþsh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ5Acquires a reference to the internal eventfd context.”h]”hŒ5Acquires a reference to the internal eventfd context.”…”�”}”(hjÉth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´MThjÆth²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjþsh²hh³jth´MTubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™játjšjátj›‰jœ‰j�‰uh1jh²hhjåjh³Nh´NubjŸ)�”}”(hŒÏ**Parameters** ``int fd`` [in] Eventfd file descriptor. **Description** Returns a pointer to the internal eventfd context, otherwise the error pointers returned by the following functions: eventfd_fget”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjëth]”hŒ Parameters”…”�”}”(hjíth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjétubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´MXhjåtubj¿)�”}”(hhh]”jÄ)�”}”(hŒ)``int fd`` [in] Eventfd file descriptor. ”h]”(jÊ)�”}”(hŒ ``int fd``”h]”jÐ)�”}”(hj uh]”hŒint fd”…”�”}”(hj uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjuubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”•h´MUhjuubjæ)�”}”(hhh]”hÌ)�”}”(hŒ[in] Eventfd file descriptor.”h]”hŒ[in] Eventfd file descriptor.”…”�”}”(hj#uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³juh´MUhj uubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjuubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³juh´MUhjuubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjåtubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjEuh]”hŒ Description”…”�”}”(hjGuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjCuubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´MWhjåtubhÌ)�”}”(hŒtReturns a pointer to the internal eventfd context, otherwise the error pointers returned by the following functions:”h]”hŒtReturns a pointer to the internal eventfd context, otherwise the error pointers returned by the following functions:”…”�”}”(hj[uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´MVhjåtubhÌ)�”}”(hŒ eventfd_fget”h]”hŒ eventfd_fget”…”�”}”(hjjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´MYhjåtubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjåjh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ eventfd_ctx_fileget (C function)”Œc.eventfd_ctx_fileget”hNt”auh1hýhjåjh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒah"]”h$]”h&]”uh1j1hj•uh²hh³j¦uh´Mfubh)�”}”(hhh]”jI)�”}”(hŒ eventfd_ctx”h]”hŒ eventfd_ctx”…”�”}”(hj¸uh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjµuubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jºuŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒeventfd_ctx_fileget”sbŒc.eventfd_ctx_fileget”†”asbuh1hhj•uh²hh³j¦uh´Mfubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙuh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj•uh²hh³j¦uh´Mfubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjçuh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj•uh²hh³j¦uh´MfubjC)�”}”(hŒeventfd_ctx_fileget”h]”jI)�”}”(hjÖuh]”hŒeventfd_ctx_fileget”…”�”}”(hjøuh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjôuubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj•uh²hh³j¦uh´Mfubj=)�”}”(hŒ(struct file *file)”h]”jC)�”}”(hŒstruct file *file”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjvubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj vh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjvubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj1vh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj.vubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j3vŒmodname”NŒ classname”Njj )�”}”j ]”jÔuŒc.eventfd_ctx_fileget”†”asbuh1hhjvubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOvh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjvubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj]vh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjvubjI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjjvh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjvubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj vubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj•uh²hh³j¦uh´Mfubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj‘uh²hh³j¦uh´Mfubah}”(h]”jŒuah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j¦uh´MfhjŽuh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ5Acquires a reference to the internal eventfd context.”h]”hŒ5Acquires a reference to the internal eventfd context.”…”�”}”(hj”vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´Mfhj‘vh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjŽuh²hh³j¦uh´Mfubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j¬vjšj¬vj›‰jœ‰j�‰uh1jh²hhjåjh³Nh´NubjŸ)�”}”(hŒä**Parameters** ``struct file *file`` [in] Eventfd file pointer. **Description** Returns a pointer to the internal eventfd context, otherwise the error pointer: -EINVAL : The **fd** file descriptor is not an eventfd file.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj¶vh]”hŒ Parameters”…”�”}”(hj¸vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj´vubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´Mjhj°vubj¿)�”}”(hhh]”jÄ)�”}”(hŒ1``struct file *file`` [in] Eventfd file pointer. ”h]”(jÊ)�”}”(hŒ``struct file *file``”h]”jÐ)�”}”(hjÕvh]”hŒstruct file *file”…”�”}”(hj×vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÓvubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´MghjÏvubjæ)�”}”(hhh]”hÌ)�”}”(hŒ[in] Eventfd file pointer.”h]”hŒ[in] Eventfd file pointer.”…”�”}”(hjîvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jêvh´Mghjëvubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÏvubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jêvh´MghjÌvubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj°vubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjwh]”hŒ Description”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjwubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´Mihj°vubhÌ)�”}”(hŒOReturns a pointer to the internal eventfd context, otherwise the error pointer:”h]”hŒOReturns a pointer to the internal eventfd context, otherwise the error pointer:”…”�”}”(hj&wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´Mhhj°vubj"q)�”}”(hhh]”j'q)�”}”(hhh]”(j,q)�”}”(hhh]”j1q)�”}”(hŒ-EINVAL”h]”(j7q)�”}”(hŒ-E”h]”hŒ-E”…”�”}”hjBwsbah}”(h]”h ]”h"]”h$]”h&]”uh1j6qhj>wubjGq)�”}”(hŒINVAL”h]”hŒINVAL”…”�”}”(hjPwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œ delimiter”huh1jFqhj>wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j0qhj;wubah}”(h]”h ]”h"]”h$]”h&]”uh1j+qhj8wubjdq)�”}”(hŒ4: The **fd** file descriptor is not an eventfd file.”h]”hÌ)�”}”(hjmwh]”(hŒ: The ”…”�”}”(hjowh²hh³Nh´Nubj©)�”}”(hŒ**fd**”h]”hŒfd”…”�”}”(hjvwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjowubhŒ( file descriptor is not an eventfd file.”…”�”}”(hjowh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´Mkhjkwubah}”(h]”h ]”h"]”h$]”h&]”uh1jcqhj8wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j&qhj5wubah}”(h]”h ]”h"]”h$]”h&]”uh1j!qh³jŽwh´Mkhj°vubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjåjh²hh³Nh´Nubeh}”(h]”Œ events-based-on-file-descriptors”ah ]”h"]”Œ events based on file descriptors”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kxubh¶)�”}”(hhh]”(h»)�”}”(hŒeventpoll (epoll) interfaces”h]”hŒeventpoll (epoll) interfaces”…”�”}”(hj³wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj°wh²hh³hÊh´K~ubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ!busy_loop_ep_timeout (C function)”Œc.busy_loop_ep_timeout”hNt”auh1hýhj°wh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒJbool busy_loop_ep_timeout (unsigned long start_time, struct eventpoll *ep)”h]”j)�”}”(hŒIbool busy_loop_ep_timeout(unsigned long start_time, struct eventpoll *ep)”h]”(j�)�”}”(hj„h]”hŒbool”…”�”}”(hjÚwh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÖwh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´Mqubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèwh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÖwh²hh³jçwh´MqubjC)�”}”(hŒbusy_loop_ep_timeout”h]”jI)�”}”(hŒbusy_loop_ep_timeout”h]”hŒbusy_loop_ep_timeout”…”�”}”(hjúwh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjöwubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÖwh²hh³jçwh´Mqubj=)�”}”(hŒ0(unsigned long start_time, struct eventpoll *ep)”h]”(jC)�”}”(hŒunsigned long start_time”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjxubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$xh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjxubj�)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj2xh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjxubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@xh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjxubjI)�”}”(hŒ start_time”h]”hŒ start_time”…”�”}”(hjNxh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjxubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjxubjC)�”}”(hŒstruct eventpoll *ep”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjgxh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjcxubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtxh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjcxubh)�”}”(hhh]”jI)�”}”(hŒ eventpoll”h]”hŒ eventpoll”…”�”}”(hj…xh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‚xubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j‡xŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjüwsbŒc.busy_loop_ep_timeout”†”asbuh1hhjcxubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥xh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjcxubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj³xh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjcxubjI)�”}”(hŒep”h]”hŒep”…”�”}”(hjÀxh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjcxubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjxubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÖwh²hh³jçwh´Mqubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÒwh²hh³jçwh´Mqubah}”(h]”jÍwah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jçwh´MqhjÏwh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ«check if busy poll has timed out. The timeout value from the epoll instance ep is preferred, but if it is not set fallback to the system-wide global via busy_loop_timeout.”h]”hŒ«check if busy poll has timed out. The timeout value from the epoll instance ep is preferred, but if it is not set fallback to the system-wide global via busy_loop_timeout.”…”�”}”(hjêxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´Mqhjçxh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÏwh²hh³jçwh´Mqubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jyjšjyj›‰jœ‰j�‰uh1jh²hhj°wh³Nh´NubjŸ)�”}”(hŒì**Parameters** ``unsigned long start_time`` The start time used to compute the remaining time until timeout. ``struct eventpoll *ep`` Pointer to the eventpoll context. **Return** true if the timeout has expired, false otherwise.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj yh]”hŒ Parameters”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj yubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´Muhjyubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ^``unsigned long start_time`` The start time used to compute the remaining time until timeout. ”h]”(jÊ)�”}”(hŒ``unsigned long start_time``”h]”jÐ)�”}”(hj+yh]”hŒunsigned long start_time”…”�”}”(hj-yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj)yubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´Muhj%yubjæ)�”}”(hhh]”hÌ)�”}”(hŒ@The start time used to compute the remaining time until timeout.”h]”hŒ@The start time used to compute the remaining time until timeout.”…”�”}”(hjDyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j@yh´MuhjAyubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj%yubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j@yh´Muhj"yubjÄ)�”}”(hŒ;``struct eventpoll *ep`` Pointer to the eventpoll context. ”h]”(jÊ)�”}”(hŒ``struct eventpoll *ep``”h]”jÐ)�”}”(hjdyh]”hŒstruct eventpoll *ep”…”�”}”(hjfyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjbyubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´Mvhj^yubjæ)�”}”(hhh]”hÌ)�”}”(hŒ!Pointer to the eventpoll context.”h]”hŒ!Pointer to the eventpoll context.”…”�”}”(hj}yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jyyh´Mvhjzyubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj^yubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jyyh´Mvhj"yubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjyubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjŸyh]”hŒReturn”…”�”}”(hj¡yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj�yubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´MxhjyubhÌ)�”}”(hŒ1true if the timeout has expired, false otherwise.”h]”hŒ1true if the timeout has expired, false otherwise.”…”�”}”(hjµyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´Mxhjyubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj°wh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œreverse_path_check (C function)”Œc.reverse_path_check”hNt”auh1hýhj°wh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ/int reverse_path_check (struct ep_ctl_ctx *ctx)”h]”j)�”}”(hŒ.int reverse_path_check(struct ep_ctl_ctx *ctx)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjäyh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjàyh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´M²ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóyh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjàyh²hh³jòyh´M²ubjC)�”}”(hŒreverse_path_check”h]”jI)�”}”(hŒreverse_path_check”h]”hŒreverse_path_check”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjzubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjàyh²hh³jòyh´M²ubj=)�”}”(hŒ(struct ep_ctl_ctx *ctx)”h]”jC)�”}”(hŒstruct ep_ctl_ctx *ctx”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj!zh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjzubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.zh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjzubh)�”}”(hhh]”jI)�”}”(hŒ ep_ctl_ctx”h]”hŒ ep_ctl_ctx”…”�”}”(hj?zh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjah"]”h$]”h&]”uh1j1hjzubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjmzh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjzubjI)�”}”(hŒctx”h]”hŒctx”…”�”}”(hjzzh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjzubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjzubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjàyh²hh³jòyh´M²ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÜyh²hh³jòyh´M²ubah}”(h]”j×yah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jòyh´M²hjÙyh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ³ctx->tfile_check_list is a list of epitems_head anchoring files with newly proposed links; make sure those links don't push any path-length bucket over its limit in path_limits[].”h]”hŒµctx->tfile_check_list is a list of epitems_head anchoring files with newly proposed links; make sure those links don’t push any path-length bucket over its limit in path_limits[].”…”�”}”(hj¤zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´M²hj¡zh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÙyh²hh³jòyh´M²ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j¼zjšj¼zj›‰jœ‰j�‰uh1jh²hhj°wh³Nh´NubjŸ)�”}”(hŒ¾**Parameters** ``struct ep_ctl_ctx *ctx`` Per-do_epoll_ctl() scratch for the loop / path checks. **Return** ``zero`` if the proposed links don't create too many paths, ``-1`` otherwise.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÆzh]”hŒ Parameters”…”�”}”(hjÈzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÄzubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´M¶hjÀzubj¿)�”}”(hhh]”jÄ)�”}”(hŒR``struct ep_ctl_ctx *ctx`` Per-do_epoll_ctl() scratch for the loop / path checks. ”h]”(jÊ)�”}”(hŒ``struct ep_ctl_ctx *ctx``”h]”jÐ)�”}”(hjåzh]”hŒstruct ep_ctl_ctx *ctx”…”�”}”(hjçzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjãzubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´M¶hjßzubjæ)�”}”(hhh]”hÌ)�”}”(hŒ6Per-do_epoll_ctl() scratch for the loop / path checks.”h]”hŒ6Per-do_epoll_ctl() scratch for the loop / path checks.”…”�”}”(hjþzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³júzh´M¶hjûzubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjßzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³júzh´M¶hjÜzubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÀzubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj {h]”hŒReturn”…”�”}”(hj"{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´M¸hjÀzubhÌ)�”}”(hŒM``zero`` if the proposed links don't create too many paths, ``-1`` otherwise.”h]”(jÐ)�”}”(hŒ``zero``”h]”hŒzero”…”�”}”(hj:{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj6{ubhŒ6 if the proposed links don’t create too many paths, ”…”�”}”(hj6{h²hh³Nh´NubjÐ)�”}”(hŒ``-1``”h]”hŒ-1”…”�”}”(hjL{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj6{ubhŒ otherwise.”…”�”}”(hj6{h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´M¸hjÀzubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj°wh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œep_poll (C function)”Œ c.ep_poll”hNt”auh1hýhj°wh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒpint ep_poll (struct eventpoll *ep, struct epoll_event __user *events, int maxevents, struct timespec64 *timeout)”h]”j)�”}”(hŒoint ep_poll(struct eventpoll *ep, struct epoll_event __user *events, int maxevents, struct timespec64 *timeout)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj…{h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj�{h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´MÇubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”{h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�{h²hh³j“{h´MÇubjC)�”}”(hŒep_poll”h]”jI)�”}”(hŒep_poll”h]”hŒep_poll”…”�”}”(hj¦{h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¢{ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj�{h²hh³j“{h´MÇubj=)�”}”(hŒd(struct eventpoll *ep, struct epoll_event __user *events, int maxevents, struct timespec64 *timeout)”h]”(jC)�”}”(hŒstruct eventpoll *ep”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÂ{h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¾{ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏ{h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¾{ubh)�”}”(hhh]”jI)�”}”(hŒ eventpoll”h]”hŒ eventpoll”…”�”}”(hjà{h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÝ{ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jâ{Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj¨{sbŒ c.ep_poll”†”asbuh1hhj¾{ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¾{ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¾{ubjI)�”}”(hŒep”h]”hŒep”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¾{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjº{ubjC)�”}”(hŒ!struct epoll_event __user *events”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj4|h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj0|ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjA|h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj0|ubh)�”}”(hhh]”jI)�”}”(hŒ epoll_event”h]”hŒ epoll_event”…”�”}”(hjR|h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjO|ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jT|Œmodname”NŒ classname”Njj )�”}”j ]”jü{Œ c.ep_poll”†”asbuh1hhj0|ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp|h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj0|ubhŒ__user”…”�”}”(hj0|h²hh³Nh´Nubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚|h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj0|ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj�|h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj0|ubjI)�”}”(hŒevents”h]”hŒevents”…”�”}”(hj�|h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj0|ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjº{ubjC)�”}”(hŒ int maxevents”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj¶|h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj²|ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄ|h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj²|ubjI)�”}”(hŒ maxevents”h]”hŒ maxevents”…”�”}”(hjÒ|h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj²|ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjº{ubjC)�”}”(hŒstruct timespec64 *timeout”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjë|h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjç|ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjø|h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjç|ubh)�”}”(hhh]”jI)�”}”(hŒ timespec64”h]”hŒ timespec64”…”�”}”(hj }h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj}ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j }Œmodname”NŒ classname”Njj )�”}”j ]”jü{Œ c.ep_poll”†”asbuh1hhjç|ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'}h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjç|ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj5}h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjç|ubjI)�”}”(hŒtimeout”h]”hŒtimeout”…”�”}”(hjB}h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjç|ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjº{ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj�{h²hh³j“{h´MÇubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj}{h²hh³j“{h´MÇubah}”(h]”jx{ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j“{h´MÇhjz{h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒNRetrieves ready events, and delivers them to the caller-supplied event buffer.”h]”hŒNRetrieves ready events, and delivers them to the caller-supplied event buffer.”…”�”}”(hjl}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´MÇhji}h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjz{h²hh³j“{h´MÇubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j„}jšj„}j›‰jœ‰j�‰uh1jh²hhj°wh³Nh´NubjŸ)�”}”(hXž**Parameters** ``struct eventpoll *ep`` Pointer to the eventpoll context. ``struct epoll_event __user *events`` Pointer to the userspace buffer where the ready events should be stored. ``int maxevents`` Size (in terms of number of events) of the caller event buffer. ``struct timespec64 *timeout`` Maximum timeout for the ready events fetch operation, in timespec. If the timeout is zero, the function will not block, while if the **timeout** ptr is NULL, the function will block until at least one event has been retrieved (or an error occurred). **Return** the number of ready events which have been fetched, or an error code, in case of error.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjŽ}h]”hŒ Parameters”…”�”}”(hj�}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjŒ}ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´MËhjˆ}ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ;``struct eventpoll *ep`` Pointer to the eventpoll context. ”h]”(jÊ)�”}”(hŒ``struct eventpoll *ep``”h]”jÐ)�”}”(hj­}h]”hŒstruct eventpoll *ep”…”�”}”(hj¯}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj«}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´MÊhj§}ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ!Pointer to the eventpoll context.”h]”hŒ!Pointer to the eventpoll context.”…”�”}”(hjÆ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÂ}h´MÊhjÃ}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj§}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÂ}h´MÊhj¤}ubjÄ)�”}”(hŒo``struct epoll_event __user *events`` Pointer to the userspace buffer where the ready events should be stored. ”h]”(jÊ)�”}”(hŒ%``struct epoll_event __user *events``”h]”jÐ)�”}”(hjæ}h]”hŒ!struct epoll_event __user *events”…”�”}”(hjè}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjä}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´MÌhjà}ubjæ)�”}”(hhh]”hÌ)�”}”(hŒHPointer to the userspace buffer where the ready events should be stored.”h]”hŒHPointer to the userspace buffer where the ready events should be stored.”…”�”}”(hjÿ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´MËhjü}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjà}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jû}h´MÌhj¤}ubjÄ)�”}”(hŒR``int maxevents`` Size (in terms of number of events) of the caller event buffer. ”h]”(jÊ)�”}”(hŒ``int maxevents``”h]”jÐ)�”}”(hj ~h]”hŒ int maxevents”…”�”}”(hj"~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´MÍhj~ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ?Size (in terms of number of events) of the caller event buffer.”h]”hŒ?Size (in terms of number of events) of the caller event buffer.”…”�”}”(hj9~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j5~h´MÍhj6~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j5~h´MÍhj¤}ubjÄ)�”}”(hX``struct timespec64 *timeout`` Maximum timeout for the ready events fetch operation, in timespec. If the timeout is zero, the function will not block, while if the **timeout** ptr is NULL, the function will block until at least one event has been retrieved (or an error occurred). ”h]”(jÊ)�”}”(hŒ``struct timespec64 *timeout``”h]”jÐ)�”}”(hjY~h]”hŒstruct timespec64 *timeout”…”�”}”(hj[~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjW~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´MÒhjS~ubjæ)�”}”(hhh]”hÌ)�”}”(hŒùMaximum timeout for the ready events fetch operation, in timespec. If the timeout is zero, the function will not block, while if the **timeout** ptr is NULL, the function will block until at least one event has been retrieved (or an error occurred).”h]”(hŒ…Maximum timeout for the ready events fetch operation, in timespec. If the timeout is zero, the function will not block, while if the ”…”�”}”(hjr~h²hh³Nh´Nubj©)�”}”(hŒ **timeout**”h]”hŒtimeout”…”�”}”(hjz~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjr~ubhŒi ptr is NULL, the function will block until at least one event has been retrieved (or an error occurred).”…”�”}”(hjr~h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´MÎhjo~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjS~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jn~h´MÒhj¤}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjˆ}ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj§~h]”hŒReturn”…”�”}”(hj©~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¥~ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´MÔhjˆ}ubhÌ)�”}”(hŒWthe number of ready events which have been fetched, or an error code, in case of error.”h]”hŒWthe number of ready events which have been fetched, or an error code, in case of error.”…”�”}”(hj½~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´MÔhjˆ}ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj°wh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œep_loop_check_proc (C function)”Œc.ep_loop_check_proc”hNt”auh1hýhj°wh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒPint ep_loop_check_proc (struct ep_ctl_ctx *ctx, struct eventpoll *ep, int depth)”h]”j)�”}”(hŒOint ep_loop_check_proc(struct ep_ctl_ctx *ctx, struct eventpoll *ep, int depth)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjì~h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjè~h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´MS ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû~h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjè~h²hh³jú~h´MS ubjC)�”}”(hŒep_loop_check_proc”h]”jI)�”}”(hŒep_loop_check_proc”h]”hŒep_loop_check_proc”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjè~h²hh³jú~h´MS ubj=)�”}”(hŒ9(struct ep_ctl_ctx *ctx, struct eventpoll *ep, int depth)”h]”(jC)�”}”(hŒstruct ep_ctl_ctx *ctx”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj%ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj%ubh)�”}”(hhh]”jI)�”}”(hŒ ep_ctl_ctx”h]”hŒ ep_ctl_ctx”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjDubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jIŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjsbŒc.ep_loop_check_proc”†”asbuh1hhj%ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj%ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj%ubjI)�”}”(hŒctx”h]”hŒctx”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj!ubjC)�”}”(hŒstruct eventpoll *ep”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj—ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj—ubh)�”}”(hhh]”jI)�”}”(hŒ eventpoll”h]”hŒ eventpoll”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¶ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j»Œmodname”NŒ classname”Njj )�”}”j ]”jcŒc.ep_loop_check_proc”†”asbuh1hhj—ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj—ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj—ubjI)�”}”(hŒep”h]”hŒep”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj—ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj!ubjC)�”}”(hŒ int depth”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj €h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj€ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj€ubjI)�”}”(hŒdepth”h]”hŒdepth”…”�”}”(hj'€h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj€ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj!ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjè~h²hh³jú~h´MS ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjä~h²hh³jú~h´MS ubah}”(h]”jß~ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jú~h´MS hjá~h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ™verify that adding an epoll file **ep** inside another epoll file does not create closed loops, and determine the depth of the subtree starting at **ep**”h]”(hŒ!verify that adding an epoll file ”…”�”}”(hjQ€h²hh³Nh´Nubj©)�”}”(hŒ**ep**”h]”hŒep”…”�”}”(hjY€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjQ€ubhŒl inside another epoll file does not create closed loops, and determine the depth of the subtree starting at ”…”�”}”(hjQ€h²hh³Nh´Nubj©)�”}”(hŒ**ep**”h]”hŒep”…”�”}”(hjk€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjQ€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´MS hjN€h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjá~h²hh³jú~h´MS ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j‰€jšj‰€j›‰jœ‰j�‰uh1jh²hhj°wh³Nh´NubjŸ)�”}”(hXi**Parameters** ``struct ep_ctl_ctx *ctx`` Per-do_epoll_ctl() scratch for the loop / path checks. ``struct eventpoll *ep`` the :c:type:`struct eventpoll ` to be currently checked. ``int depth`` Current depth of the path being checked. **Return** depth of the subtree, or a value bigger than EP_MAX_NESTS if we found a loop or went too deep.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj“€h]”hŒ Parameters”…”�”}”(hj•€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‘€ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´MW hj�€ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒR``struct ep_ctl_ctx *ctx`` Per-do_epoll_ctl() scratch for the loop / path checks. ”h]”(jÊ)�”}”(hŒ``struct ep_ctl_ctx *ctx``”h]”jÐ)�”}”(hj²€h]”hŒstruct ep_ctl_ctx *ctx”…”�”}”(hj´€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj°€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´MW hj¬€ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ6Per-do_epoll_ctl() scratch for the loop / path checks.”h]”hŒ6Per-do_epoll_ctl() scratch for the loop / path checks.”…”�”}”(hjË€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÇ€h´MW hjÈ€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¬€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÇ€h´MW hj©€ubjÄ)�”}”(hŒ]``struct eventpoll *ep`` the :c:type:`struct eventpoll ` to be currently checked. ”h]”(jÊ)�”}”(hŒ``struct eventpoll *ep``”h]”jÐ)�”}”(hjë€h]”hŒstruct eventpoll *ep”…”�”}”(hjí€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjé€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´MX hjå€ubjæ)�”}”(hhh]”hÌ)�”}”(hŒCthe :c:type:`struct eventpoll ` to be currently checked.”h]”(hŒthe ”…”�”}”(hj�h²hh³Nh´Nubh)�”}”(hŒ&:c:type:`struct eventpoll `”h]”jÐ)�”}”(hj�h]”hŒstruct eventpoll”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”(jÌj“Œc-type”eh"]”h$]”h&]”uh1jÏhj �ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jØŒ refdomain”j“Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jjÞjጠeventpoll”uh1hh³j�h´MX hj�ubhŒ to be currently checked.”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�h´MX hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjå€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j�h´MX hj©€ubjÄ)�”}”(hŒ7``int depth`` Current depth of the path being checked. ”h]”(jÊ)�”}”(hŒ ``int depth``”h]”jÐ)�”}”(hjG�h]”hŒ int depth”…”�”}”(hjI�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjE�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´MY hjA�ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(Current depth of the path being checked.”h]”hŒ(Current depth of the path being checked.”…”�”}”(hj`�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j\�h´MY hj]�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjA�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j\�h´MY hj©€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj�€ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj‚�h]”hŒReturn”…”�”}”(hj„�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj€�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´M[ hj�€ubhÌ)�”}”(hŒ^depth of the subtree, or a value bigger than EP_MAX_NESTS if we found a loop or went too deep.”h]”hŒ^depth of the subtree, or a value bigger than EP_MAX_NESTS if we found a loop or went too deep.”…”�”}”(hj˜�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´M[ hj�€ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj°wh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œep_loop_check (C function)”Œc.ep_loop_check”hNt”auh1hýhj°wh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒVint ep_loop_check (struct ep_ctl_ctx *ctx, struct eventpoll *ep, struct eventpoll *to)”h]”j)�”}”(hŒUint ep_loop_check(struct ep_ctl_ctx *ctx, struct eventpoll *ep, struct eventpoll *to)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjÇ�h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÃ�h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´M˜ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖ�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÃ�h²hh³jÕ�h´M˜ ubjC)�”}”(hŒ ep_loop_check”h]”jI)�”}”(hŒ ep_loop_check”h]”hŒ ep_loop_check”…”�”}”(hjè�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjä�ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÃ�h²hh³jÕ�h´M˜ ubj=)�”}”(hŒD(struct ep_ctl_ctx *ctx, struct eventpoll *ep, struct eventpoll *to)”h]”(jC)�”}”(hŒstruct ep_ctl_ctx *ctx”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj‚ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‚ubh)�”}”(hhh]”jI)�”}”(hŒ ep_ctl_ctx”h]”hŒ ep_ctl_ctx”…”�”}”(hj"‚h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‚ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j$‚Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjê�sbŒc.ep_loop_check”†”asbuh1hhj‚ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjB‚h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‚ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjP‚h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj‚ubjI)�”}”(hŒctx”h]”hŒctx”…”�”}”(hj]‚h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjü�ubjC)�”}”(hŒstruct eventpoll *ep”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjv‚h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjr‚ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ‚h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjr‚ubh)�”}”(hhh]”jI)�”}”(hŒ eventpoll”h]”hŒ eventpoll”…”�”}”(hj”‚h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‘‚ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j–‚Œmodname”NŒ classname”Njj )�”}”j ]”j>‚Œc.ep_loop_check”†”asbuh1hhjr‚ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²‚h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjr‚ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÀ‚h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjr‚ubjI)�”}”(hŒep”h]”hŒep”…”�”}”(hjÍ‚h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjr‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjü�ubjC)�”}”(hŒstruct eventpoll *to”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjæ‚h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjâ‚ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjó‚h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjâ‚ubh)�”}”(hhh]”jI)�”}”(hŒ eventpoll”h]”hŒ eventpoll”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjƒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jƒŒmodname”NŒ classname”Njj )�”}”j ]”j>‚Œc.ep_loop_check”†”asbuh1hhjâ‚ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"ƒh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjâ‚ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj0ƒh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjâ‚ubjI)�”}”(hŒto”h]”hŒto”…”�”}”(hj=ƒh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjâ‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjü�ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÃ�h²hh³jÕ�h´M˜ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj¿�h²hh³jÕ�h´M˜ ubah}”(h]”jº�ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÕ�h´M˜ hj¼�h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒžPerforms a check to verify that adding an epoll file (**to**) into another epoll file (represented by **ep**) does not create closed loops or too deep chains.”h]”(hŒ6Performs a check to verify that adding an epoll file (”…”�”}”(hjgƒh²hh³Nh´Nubj©)�”}”(hŒ**to**”h]”hŒto”…”�”}”(hjoƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjgƒubhŒ*) into another epoll file (represented by ”…”�”}”(hjgƒh²hh³Nh´Nubj©)�”}”(hŒ**ep**”h]”hŒep”…”�”}”(hj�ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjgƒubhŒ2) does not create closed loops or too deep chains.”…”�”}”(hjgƒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´M˜ hjdƒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¼�h²hh³jÕ�h´M˜ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j£ƒjšj£ƒj›‰jœ‰j�‰uh1jh²hhj°wh³Nh´NubjŸ)�”}”(hXT**Parameters** ``struct ep_ctl_ctx *ctx`` Per-CTL_ADD scratch context. ``struct eventpoll *ep`` Pointer to the epoll we are inserting into. ``struct eventpoll *to`` Pointer to the epoll to be inserted. **Return** ``zero`` if adding the epoll **to** inside the epoll **from** does not violate the constraints, or ``-1`` otherwise.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj­ƒh]”hŒ Parameters”…”�”}”(hj¯ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj«ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´Mœ hj§ƒubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ8``struct ep_ctl_ctx *ctx`` Per-CTL_ADD scratch context. ”h]”(jÊ)�”}”(hŒ``struct ep_ctl_ctx *ctx``”h]”jÐ)�”}”(hj̃h]”hŒstruct ep_ctl_ctx *ctx”…”�”}”(hj΃h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjʃubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´Mœ hjƃubjæ)�”}”(hhh]”hÌ)�”}”(hŒPer-CTL_ADD scratch context.”h]”hŒPer-CTL_ADD scratch context.”…”�”}”(hjåƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jáƒh´Mœ hjâƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjƃubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jáƒh´Mœ hjÃubjÄ)�”}”(hŒE``struct eventpoll *ep`` Pointer to the epoll we are inserting into. ”h]”(jÊ)�”}”(hŒ``struct eventpoll *ep``”h]”jÐ)�”}”(hj„h]”hŒstruct eventpoll *ep”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´M� hjÿƒubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+Pointer to the epoll we are inserting into.”h]”hŒ+Pointer to the epoll we are inserting into.”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j„h´M� hj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÿƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j„h´M� hjÃubjÄ)�”}”(hŒ>``struct eventpoll *to`` Pointer to the epoll to be inserted. ”h]”(jÊ)�”}”(hŒ``struct eventpoll *to``”h]”jÐ)�”}”(hj>„h]”hŒstruct eventpoll *to”…”�”}”(hj@„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj<„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´Mž hj8„ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ$Pointer to the epoll to be inserted.”h]”hŒ$Pointer to the epoll to be inserted.”…”�”}”(hjW„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jS„h´Mž hjT„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj8„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jS„h´Mž hjÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj§ƒubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjy„h]”hŒReturn”…”�”}”(hj{„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjw„ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´M  hj§ƒubhÌ)�”}”(hŒt``zero`` if adding the epoll **to** inside the epoll **from** does not violate the constraints, or ``-1`` otherwise.”h]”(jÐ)�”}”(hŒ``zero``”h]”hŒzero”…”�”}”(hj“„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj�„ubhŒ if adding the epoll ”…”�”}”(hj�„h²hh³Nh´Nubj©)�”}”(hŒ**to**”h]”hŒto”…”�”}”(hj¥„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj�„ubhŒ inside the epoll ”…”�”}”(hj�„h²hh³Nh´Nubj©)�”}”(hŒ**from**”h]”hŒfrom”…”�”}”(hj·„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj�„ubhŒ& does not violate the constraints, or ”…”�”}”(hj�„h²hh³Nh´NubjÐ)�”}”(hŒ``-1``”h]”hŒ-1”…”�”}”(hjÉ„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj�„ubhŒ otherwise.”…”�”}”(hj�„h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´M  hj§ƒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj°wh²hh³Nh´Nubeh}”(h]”Œeventpoll-epoll-interfaces”ah ]”h"]”Œeventpoll (epoll) interfaces”ah$]”h&]”uh1hµhh·h²hh³hÊh´K~ubh¶)�”}”(hhh]”(h»)�”}”(hŒ+The Filesystem for Exporting Kernel Objects”h]”hŒ+The Filesystem for Exporting Kernel Objects”…”�”}”(hjô„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjñ„h²hh³hÊh´K„ubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ!sysfs_create_file_ns (C function)”Œc.sysfs_create_file_ns”hNt”auh1hýhjñ„h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒiint sysfs_create_file_ns (struct kobject *kobj, const struct attribute *attr, const struct ns_common *ns)”h]”j)�”}”(hŒhint sysfs_create_file_ns(struct kobject *kobj, const struct attribute *attr, const struct ns_common *ns)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj…h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Mjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*…h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj…h²hh³j)…h´MjubjC)�”}”(hŒsysfs_create_file_ns”h]”jI)�”}”(hŒsysfs_create_file_ns”h]”hŒsysfs_create_file_ns”…”�”}”(hj<…h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj8…ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj…h²hh³j)…h´Mjubj=)�”}”(hŒP(struct kobject *kobj, const struct attribute *attr, const struct ns_common *ns)”h]”(jC)�”}”(hŒstruct kobject *kobj”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjX…h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjT…ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hje…h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjT…ubh)�”}”(hhh]”jI)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hjv…h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjs…ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jx…Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj>…sbŒc.sysfs_create_file_ns”†”asbuh1hhjT…ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–…h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjT…ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¤…h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjT…ubjI)�”}”(hŒkobj”h]”hŒkobj”…”�”}”(hj±…h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjT…ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjP…ubjC)�”}”(hŒconst struct attribute *attr”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjÊ…h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÆ…ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×…h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÆ…ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjå…h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÆ…ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjò…h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÆ…ubh)�”}”(hhh]”jI)�”}”(hŒ attribute”h]”hŒ attribute”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj†ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j†Œmodname”NŒ classname”Njj )�”}”j ]”j’…Œc.sysfs_create_file_ns”†”asbuh1hhjÆ…ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!†h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÆ…ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj/†h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÆ…ubjI)�”}”(hŒattr”h]”hŒattr”…”�”}”(hj<†h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÆ…ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjP…ubjC)�”}”(hŒconst struct ns_common *ns”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjU†h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjQ†ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjb†h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjQ†ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjp†h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjQ†ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}†h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjQ†ubh)�”}”(hhh]”jI)�”}”(hŒ ns_common”h]”hŒ ns_common”…”�”}”(hjކh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‹†ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j�†Œmodname”NŒ classname”Njj )�”}”j ]”j’…Œc.sysfs_create_file_ns”†”asbuh1hhjQ†ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬†h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjQ†ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjº†h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjQ†ubjI)�”}”(hŒns”h]”hŒns”…”�”}”(hjdžh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjQ†ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjP…ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj…h²hh³j)…h´Mjubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj…h²hh³j)…h´Mjubah}”(h]”j…ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j)…h´Mjhj…h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ5create an attribute file for an object with custom ns”h]”hŒ5create an attribute file for an object with custom ns”…”�”}”(hjñ†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Mjhjî†h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj…h²hh³j)…h´Mjubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j ‡jšj ‡j›‰jœ‰j�‰uh1jh²hhjñ„h³Nh´NubjŸ)�”}”(hŒÇ**Parameters** ``struct kobject *kobj`` object we're creating for ``const struct attribute *attr`` attribute descriptor ``const struct ns_common *ns`` namespace the new file should belong to”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj‡h]”hŒ Parameters”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Mnhj ‡ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ3``struct kobject *kobj`` object we're creating for ”h]”(jÊ)�”}”(hŒ``struct kobject *kobj``”h]”jÐ)�”}”(hj2‡h]”hŒstruct kobject *kobj”…”�”}”(hj4‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj0‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Mkhj,‡ubjæ)�”}”(hhh]”hÌ)�”}”(hŒobject we're creating for”h]”hŒobject we’re creating for”…”�”}”(hjK‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jG‡h´MkhjH‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj,‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jG‡h´Mkhj)‡ubjÄ)�”}”(hŒ6``const struct attribute *attr`` attribute descriptor ”h]”(jÊ)�”}”(hŒ ``const struct attribute *attr``”h]”jÐ)�”}”(hjk‡h]”hŒconst struct attribute *attr”…”�”}”(hjm‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhji‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Mlhje‡ubjæ)�”}”(hhh]”hÌ)�”}”(hŒattribute descriptor”h]”hŒattribute descriptor”…”�”}”(hj„‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j€‡h´Mlhj�‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhje‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j€‡h´Mlhj)‡ubjÄ)�”}”(hŒF``const struct ns_common *ns`` namespace the new file should belong to”h]”(jÊ)�”}”(hŒ``const struct ns_common *ns``”h]”jÐ)�”}”(hj¤‡h]”hŒconst struct ns_common *ns”…”�”}”(hj¦‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¢‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Mnhjž‡ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ'namespace the new file should belong to”h]”hŒ'namespace the new file should belong to”…”�”}”(hj½‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Mmhjº‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjž‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¹‡h´Mnhj)‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj ‡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjñ„h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ$sysfs_add_file_to_group (C function)”Œc.sysfs_add_file_to_group”hNt”auh1hýhjñ„h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒcint sysfs_add_file_to_group (struct kobject *kobj, const struct attribute *attr, const char *group)”h]”j)�”}”(hŒbint sysfs_add_file_to_group(struct kobject *kobj, const struct attribute *attr, const char *group)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjþ‡h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjú‡h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MŒubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ˆh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjú‡h²hh³j ˆh´MŒubjC)�”}”(hŒsysfs_add_file_to_group”h]”jI)�”}”(hŒsysfs_add_file_to_group”h]”hŒsysfs_add_file_to_group”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjˆubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjú‡h²hh³j ˆh´MŒubj=)�”}”(hŒG(struct kobject *kobj, const struct attribute *attr, const char *group)”h]”(jC)�”}”(hŒstruct kobject *kobj”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj;ˆh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj7ˆubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHˆh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj7ˆubh)�”}”(hhh]”jI)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hjYˆh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjVˆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j[ˆŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj!ˆsbŒc.sysfs_add_file_to_group”†”asbuh1hhj7ˆubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyˆh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj7ˆubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj‡ˆh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj7ˆubjI)�”}”(hŒkobj”h]”hŒkobj”…”�”}”(hj”ˆh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj7ˆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj3ˆubjC)�”}”(hŒconst struct attribute *attr”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj­ˆh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj©ˆubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºˆh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj©ˆubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjȈh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj©ˆubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕˆh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj©ˆubh)�”}”(hhh]”jI)�”}”(hŒ attribute”h]”hŒ attribute”…”�”}”(hjæˆh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjãˆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j舌modname”NŒ classname”Njj )�”}”j ]”juˆŒc.sysfs_add_file_to_group”†”asbuh1hhj©ˆubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj©ˆubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj©ˆubjI)�”}”(hŒattr”h]”hŒattr”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj©ˆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj3ˆubjC)�”}”(hŒconst char *group”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj8‰h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj4‰ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE‰h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj4‰ubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjS‰h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj4‰ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hja‰h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj4‰ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjo‰h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj4‰ubjI)�”}”(hŒgroup”h]”hŒgroup”…”�”}”(hj|‰h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj4‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj3ˆubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjú‡h²hh³j ˆh´MŒubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjö‡h²hh³j ˆh´MŒubah}”(h]”jñ‡ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j ˆh´MŒhjó‡h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ.add an attribute file to a pre-existing group.”h]”hŒ.add an attribute file to a pre-existing group.”…”�”}”(hj¦‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MŒhj£‰h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjó‡h²hh³j ˆh´MŒubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j¾‰jšj¾‰j›‰jœ‰j�‰uh1jh²hhjñ„h³Nh´NubjŸ)�”}”(hŒ¢**Parameters** ``struct kobject *kobj`` object we're acting for. ``const struct attribute *attr`` attribute descriptor. ``const char *group`` group name.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjȉh]”hŒ Parameters”…”�”}”(hjʉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjƉubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M�hj‰ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ2``struct kobject *kobj`` object we're acting for. ”h]”(jÊ)�”}”(hŒ``struct kobject *kobj``”h]”jÐ)�”}”(hjç‰h]”hŒstruct kobject *kobj”…”�”}”(hjé‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjå‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M�hjá‰ubjæ)�”}”(hhh]”hÌ)�”}”(hŒobject we're acting for.”h]”hŒobject we’re acting for.”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jü‰h´M�hjý‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjá‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jü‰h´M�hjÞ‰ubjÄ)�”}”(hŒ7``const struct attribute *attr`` attribute descriptor. ”h]”(jÊ)�”}”(hŒ ``const struct attribute *attr``”h]”jÐ)�”}”(hj Šh]”hŒconst struct attribute *attr”…”�”}”(hj"Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MŽhjŠubjæ)�”}”(hhh]”hÌ)�”}”(hŒattribute descriptor.”h]”hŒattribute descriptor.”…”�”}”(hj9Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j5Šh´MŽhj6Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j5Šh´MŽhjÞ‰ubjÄ)�”}”(hŒ!``const char *group`` group name.”h]”(jÊ)�”}”(hŒ``const char *group``”h]”jÐ)�”}”(hjYŠh]”hŒconst char *group”…”�”}”(hj[Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjWŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M�hjSŠubjæ)�”}”(hhh]”hÌ)�”}”(hŒ group name.”h]”hŒ group name.”…”�”}”(hjrŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M�hjoŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjSŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jnŠh´M�hjÞ‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj‰ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjñ„h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œsysfs_chmod_file (C function)”Œc.sysfs_chmod_file”hNt”auh1hýhjñ„h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒWint sysfs_chmod_file (struct kobject *kobj, const struct attribute *attr, umode_t mode)”h]”j)�”}”(hŒVint sysfs_chmod_file(struct kobject *kobj, const struct attribute *attr, umode_t mode)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj³Šh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¯Šh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M­ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¯Šh²hh³jÁŠh´M­ubjC)�”}”(hŒsysfs_chmod_file”h]”jI)�”}”(hŒsysfs_chmod_file”h]”hŒsysfs_chmod_file”…”�”}”(hjÔŠh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjЊubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj¯Šh²hh³jÁŠh´M­ubj=)�”}”(hŒB(struct kobject *kobj, const struct attribute *attr, umode_t mode)”h]”(jC)�”}”(hŒstruct kobject *kobj”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjðŠh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjìŠubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýŠh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjìŠubh)�”}”(hhh]”jI)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ‹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j‹Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÖŠsbŒc.sysfs_chmod_file”†”asbuh1hhjìŠubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.‹h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjìŠubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj<‹h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjìŠubjI)�”}”(hŒkobj”h]”hŒkobj”…”�”}”(hjI‹h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjìŠubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjèŠubjC)�”}”(hŒconst struct attribute *attr”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjb‹h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj^‹ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo‹h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj^‹ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj}‹h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj^‹ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ‹h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj^‹ubh)�”}”(hhh]”jI)�”}”(hŒ attribute”h]”hŒ attribute”…”�”}”(hj›‹h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj˜‹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j�‹Œmodname”NŒ classname”Njj )�”}”j ]”j*‹Œc.sysfs_chmod_file”†”asbuh1hhj^‹ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹‹h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj^‹ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÇ‹h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj^‹ubjI)�”}”(hŒattr”h]”hŒattr”…”�”}”(hjÔ‹h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj^‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjèŠubjC)�”}”(hŒ umode_t mode”• h]”(h)�”}”(hhh]”jI)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hjð‹h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjí‹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jò‹Œmodname”NŒ classname”Njj )�”}”j ]”j*‹Œc.sysfs_chmod_file”†”asbuh1hhjé‹ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjé‹ubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjé‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjèŠubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj¯Šh²hh³jÁŠh´M­ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj«Šh²hh³jÁŠh´M­ubah}”(h]”j¦Šah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÁŠh´M­hj¨Šh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ6update the modified mode value on an object attribute.”h]”hŒ6update the modified mode value on an object attribute.”…”�”}”(hjFŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M­hjCŒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¨Šh²hh³jÁŠh´M­ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j^Œjšj^Œj›‰jœ‰j�‰uh1jh²hhjñ„h³Nh´NubjŸ)�”}”(hŒ£**Parameters** ``struct kobject *kobj`` object we're acting for. ``const struct attribute *attr`` attribute descriptor. ``umode_t mode`` file permissions.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjhŒh]”hŒ Parameters”…”�”}”(hjjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjfŒubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M±hjbŒubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ2``struct kobject *kobj`` object we're acting for. ”h]”(jÊ)�”}”(hŒ``struct kobject *kobj``”h]”jÐ)�”}”(hj‡Œh]”hŒstruct kobject *kobj”…”�”}”(hj‰Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj…Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M®hj�Œubjæ)�”}”(hhh]”hÌ)�”}”(hŒobject we're acting for.”h]”hŒobject we’re acting for.”…”�”}”(hj Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jœŒh´M®hj�Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj�Œubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jœŒh´M®hj~ŒubjÄ)�”}”(hŒ7``const struct attribute *attr`` attribute descriptor. ”h]”(jÊ)�”}”(hŒ ``const struct attribute *attr``”h]”jÐ)�”}”(hjÀŒh]”hŒconst struct attribute *attr”…”�”}”(hjÂŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¾Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M¯hjºŒubjæ)�”}”(hhh]”hÌ)�”}”(hŒattribute descriptor.”h]”hŒattribute descriptor.”…”�”}”(hjÙŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÕŒh´M¯hjÖŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjºŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÕŒh´M¯hj~ŒubjÄ)�”}”(hŒ"``umode_t mode`` file permissions.”h]”(jÊ)�”}”(hŒ``umode_t mode``”h]”jÐ)�”}”(hjùŒh]”hŒ umode_t mode”…”�”}”(hjûŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj÷Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M±hjóŒubjæ)�”}”(hhh]”hÌ)�”}”(hŒfile permissions.”h]”hŒfile permissions.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M°hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjóŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j�h´M±hj~Œubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjbŒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjñ„h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ*sysfs_break_active_protection (C function)”Œc.sysfs_break_active_protection”hNt”auh1hýhjñ„h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒgstruct kernfs_node * sysfs_break_active_protection (struct kobject *kobj, const struct attribute *attr)”h]”j)�”}”(hŒestruct kernfs_node *sysfs_break_active_protection(struct kobject *kobj, const struct attribute *attr)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjS�h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjO�h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MÉubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hja�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjO�h²hh³j`�h´MÉubh)�”}”(hhh]”jI)�”}”(hŒ kernfs_node”h]”hŒ kernfs_node”…”�”}”(hjr�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjo�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jt�Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒsysfs_break_active_protection”sbŒc.sysfs_break_active_protection”†”asbuh1hhjO�h²hh³j`�h´MÉubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjO�h²hh³j`�h´MÉubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¡�h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjO�h²hh³j`�h´MÉubjC)�”}”(hŒsysfs_break_active_protection”h]”jI)�”}”(hj��h]”hŒsysfs_break_active_protection”…”�”}”(hj²�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj®�ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjO�h²hh³j`�h´MÉubj=)�”}”(hŒ4(struct kobject *kobj, const struct attribute *attr)”h]”(jC)�”}”(hŒstruct kobject *kobj”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÍ�h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÉ�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚ�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÉ�ubh)�”}”(hhh]”jI)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hjë�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjè�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jí�Œmodname”NŒ classname”Njj )�”}”j ]”jŽ�Œc.sysfs_break_active_protection”†”asbuh1hhjÉ�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Žh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÉ�ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÉ�ubjI)�”}”(hŒkobj”h]”hŒkobj”…”�”}”(hj$Žh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÉ�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÅ�ubjC)�”}”(hŒconst struct attribute *attr”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj=Žh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj9Žubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJŽh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj9Žubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjXŽh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj9Žubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeŽh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj9Žubh)�”}”(hhh]”jI)�”}”(hŒ attribute”h]”hŒ attribute”…”�”}”(hjvŽh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjsŽubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jxŽŒmodname”NŒ classname”Njj )�”}”j ]”jŽ�Œc.sysfs_break_active_protection”†”asbuh1hhj9Žubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”Žh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj9Žubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¢Žh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj9ŽubjI)�”}”(hŒattr”h]”hŒattr”…”�”}”(hj¯Žh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj9Žubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÅ�ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjO�h²hh³j`�h´MÉubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjK�h²hh³j`�h´MÉubah}”(h]”jF�ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j`�h´MÉhjH�h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒbreak "active" protection”h]”hŒbreak “activeâ€� protection”…”�”}”(hjÙŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MÉhjÖŽh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjH�h²hh³j`�h´MÉubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jñŽjšjñŽj›‰jœ‰j�‰uh1jh²hhjñ„h³Nh´NubjŸ)�”}”(hX¬**Parameters** ``struct kobject *kobj`` The kernel object **attr** is associated with. ``const struct attribute *attr`` The attribute to break the "active" protection for. **Description** With sysfs, just like kernfs, deletion of an attribute is postponed until all active .show() and .store() callbacks have finished unless this function is called. Hence this function is useful in methods that implement self deletion.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjûŽh]”hŒ Parameters”…”�”}”(hjýŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjùŽubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MÍhjõŽubj¿)�”}”(hhh]”(jÄ)�”}”(hŒH``struct kobject *kobj`` The kernel object **attr** is associated with. ”h]”(jÊ)�”}”(hŒ``struct kobject *kobj``”h]”jÐ)�”}”(hj�h]”hŒstruct kobject *kobj”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MÊhj�ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.The kernel object **attr** is associated with.”h]”(hŒThe kernel object ”…”�”}”(hj3�h²hh³Nh´Nubj©)�”}”(hŒ**attr**”h]”hŒattr”…”�”}”(hj;�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj3�ubhŒ is associated with.”…”�”}”(hj3�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j/�h´MÊhj0�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j/�h´MÊhj�ubjÄ)�”}”(hŒU``const struct attribute *attr`` The attribute to break the "active" protection for. ”h]”(jÊ)�”}”(hŒ ``const struct attribute *attr``”h]”jÐ)�”}”(hje�h]”hŒconst struct attribute *attr”…”�”}”(hjg�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjc�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MËhj_�ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ3The attribute to break the "active" protection for.”h]”hŒ7The attribute to break the “activeâ€� protection for.”…”�”}”(hj~�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jz�h´MËhj{�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj_�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jz�h´MËhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjõŽubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj �h]”hŒ Description”…”�”}”(hj¢�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjž�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MÍhjõŽubhÌ)�”}”(hŒèWith sysfs, just like kernfs, deletion of an attribute is postponed until all active .show() and .store() callbacks have finished unless this function is called. Hence this function is useful in methods that implement self deletion.”h]”hŒèWith sysfs, just like kernfs, deletion of an attribute is postponed until all active .show() and .store() callbacks have finished unless this function is called. Hence this function is useful in methods that implement self deletion.”…”�”}”(hj¶�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MÌhjõŽubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjñ„h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ,sysfs_unbreak_active_protection (C function)”Œ!c.sysfs_unbreak_active_protection”hNt”auh1hýhjñ„h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ=void sysfs_unbreak_active_protection (struct kernfs_node *kn)”h]”j)�”}”(hŒah"]”h$]”h&]”uh1j1hjá�h²hh³jó�h´MâubjC)�”}”(hŒsysfs_unbreak_active_protection”h]”jI)�”}”(hŒsysfs_unbreak_active_protection”h]”hŒsysfs_unbreak_active_protection”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjá�h²hh³jó�h´Mâubj=)�”}”(hŒ(struct kernfs_node *kn)”h]”jC)�”}”(hŒstruct kernfs_node *kn”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj"�h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�ubh)�”}”(hhh]”jI)�”}”(hŒ kernfs_node”h]”hŒ kernfs_node”…”�”}”(hj@�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj=�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jB�Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj�sbŒ!c.sysfs_unbreak_active_protection”†”asbuh1hhj�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjn�h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj�ubjI)�”}”(hŒkn”h]”hŒkn”…”�”}”(hj{�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj�ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjá�h²hh³jó�h´Mâubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÝ�h²hh³jó�h´Mâubah}”(h]”jØ�ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jó�h´MâhjÚ�h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒrestore "active" protection”h]”hŒrestore “activeâ€� protection”…”�”}”(hj¥�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Mâhj¢�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÚ�h²hh³jó�h´Mâubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j½�jšj½�j›‰jœ‰j�‰uh1jh²hhjñ„h³Nh´NubjŸ)�”}”(hXô**Parameters** ``struct kernfs_node *kn`` Pointer returned by sysfs_break_active_protection(). **Description** Undo the effects of sysfs_break_active_protection(). Since this function calls kernfs_put() on the kernfs node that corresponds to the 'attr' argument passed to sysfs_break_active_protection() that attribute may have been removed between the sysfs_break_active_protection() and sysfs_unbreak_active_protection() calls, it is not safe to access **kn** after this function has returned.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÇ�h]”hŒ Parameters”…”�”}”(hjÉ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÅ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MæhjÁ�ubj¿)�”}”(hhh]”jÄ)�”}”(hŒP``struct kernfs_node *kn`` Pointer returned by sysfs_break_active_protection(). ”h]”(jÊ)�”}”(hŒ``struct kernfs_node *kn``”h]”jÐ)�”}”(hjæ�h]”hŒstruct kernfs_node *kn”…”�”}”(hjè�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjä�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Mãhjà�ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ4Pointer returned by sysfs_break_active_protection().”h]”hŒ4Pointer returned by sysfs_break_active_protection().”…”�”}”(hjÿ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jû�h´Mãhjü�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjà�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jû�h´MãhjÝ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÁ�ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj!‘h]”hŒ Description”…”�”}”(hj#‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MåhjÁ�ubhÌ)�”}”(hX€Undo the effects of sysfs_break_active_protection(). Since this function calls kernfs_put() on the kernfs node that corresponds to the 'attr' argument passed to sysfs_break_active_protection() that attribute may have been removed between the sysfs_break_active_protection() and sysfs_unbreak_active_protection() calls, it is not safe to access **kn** after this function has returned.”h]”(hX\Undo the effects of sysfs_break_active_protection(). Since this function calls kernfs_put() on the kernfs node that corresponds to the ‘attr’ argument passed to sysfs_break_active_protection() that attribute may have been removed between the sysfs_break_active_protection() and sysfs_unbreak_active_protection() calls, it is not safe to access ”…”�”}”(hj7‘h²hh³Nh´Nubj©)�”}”(hŒ**kn**”h]”hŒkn”…”�”}”(hj?‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj7‘ubhŒ" after this function has returned.”…”�”}”(hj7‘h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MähjÁ�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjñ„h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ!sysfs_remove_file_ns (C function)”Œc.sysfs_remove_file_ns”hNt”auh1hýhjñ„h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒjvoid sysfs_remove_file_ns (struct kobject *kobj, const struct attribute *attr, const struct ns_common *ns)”h]”j)�”}”(hŒivoid sysfs_remove_file_ns(struct kobject *kobj, const struct attribute *attr, const struct ns_common *ns)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjx‘h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjt‘h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M÷ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡‘h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjt‘h²hh³j†‘h´M÷ubjC)�”}”(hŒsysfs_remove_file_ns”h]”jI)�”}”(hŒsysfs_remove_file_ns”h]”hŒsysfs_remove_file_ns”…”�”}”(hj™‘h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj•‘ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjt‘h²hh³j†‘h´M÷ubj=)�”}”(hŒP(struct kobject *kobj, const struct attribute *attr, const struct ns_common *ns)”h]”(jC)�”}”(hŒstruct kobject *kobj”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjµ‘h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj±‘ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj±‘ubh)�”}”(hhh]”jI)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hjÓ‘h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjБubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÕ‘Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj›‘sbŒc.sysfs_remove_file_ns”†”asbuh1hhj±‘ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjó‘h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj±‘ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj±‘ubjI)�”}”(hŒkobj”h]”hŒkobj”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj±‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj­‘ubjC)�”}”(hŒconst struct attribute *attr”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj'’h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj#’ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4’h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj#’ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjB’h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj#’ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO’h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj#’ubh)�”}”(hhh]”jI)�”}”(hŒ attribute”h]”hŒ attribute”…”�”}”(hj`’h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj]’ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jb’Œmodname”NŒ classname”Njj )�”}”j ]”jc.sysfs_remove_file_ns”†”asbuh1hhj#’ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~’h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj#’ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjŒ’h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj#’ubjI)�”}”(hŒattr”h]”hŒattr”…”�”}”(hj™’h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj#’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj­‘ubjC)�”}”(hŒconst struct ns_common *ns”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj²’h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj®’ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿’h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj®’ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÍ’h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj®’ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚ’h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj®’ubh)�”}”(hhh]”jI)�”}”(hŒ ns_common”h]”hŒ ns_common”…”�”}”(hjë’h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjè’ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jí’Œmodname”NŒ classname”Njj )�”}”j ]”jc.sysfs_remove_file_ns”†”asbuh1hhj®’ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj “h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj®’ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj®’ubjI)�”}”(hŒns”h]”hŒns”…”�”}”(hj$“h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj®’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj­‘ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjt‘h²hh³j†‘h´M÷ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjp‘h²hh³j†‘h´M÷ubah}”(h]”jk‘ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j†‘h´M÷hjm‘h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ/remove an object attribute with a custom ns tag”h]”hŒ/remove an object attribute with a custom ns tag”…”�”}”(hjN“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M÷hjK“h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjm‘h²hh³j†‘h´M÷ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jf“jšjf“j›‰jœ‰j�‰uh1jh²hhjñ„h³Nh´NubjŸ)�”}”(hX**Parameters** ``struct kobject *kobj`` object we're acting for ``const struct attribute *attr`` attribute descriptor ``const struct ns_common *ns`` namespace tag of the file to remove **Description** Hash the attribute name and namespace tag and kill the victim.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjp“h]”hŒ Parameters”…”�”}”(hjr“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjn“ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Mûhjj“ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ1``struct kobject *kobj`` object we're acting for ”h]”(jÊ)�”}”(hŒ``struct kobject *kobj``”h]”jÐ)�”}”(hj�“h]”hŒstruct kobject *kobj”…”�”}”(hj‘“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj�“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Møhj‰“ubjæ)�”}”(hhh]”hÌ)�”}”(hŒobject we're acting for”h]”hŒobject we’re acting for”…”�”}”(hj¨“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¤“h´Møhj¥“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj‰“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¤“h´Møhj†“ubjÄ)�”}”(hŒ6``const struct attribute *attr`` attribute descriptor ”h]”(jÊ)�”}”(hŒ ``const struct attribute *attr``”h]”jÐ)�”}”(hjÈ“h]”hŒconst struct attribute *attr”…”�”}”(hjÊ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÆ“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Mùhj“ubjæ)�”}”(hhh]”hÌ)�”}”(hŒattribute descriptor”h]”hŒattribute descriptor”…”�”}”(hjá“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÝ“h´MùhjÞ“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÝ“h´Mùhj†“ubjÄ)�”}”(hŒC``const struct ns_common *ns`` namespace tag of the file to remove ”h]”(jÊ)�”}”(hŒ``const struct ns_common *ns``”h]”jÐ)�”}”(hj”h]”hŒconst struct ns_common *ns”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÿ“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Múhjû“ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ#namespace tag of the file to remove”h]”hŒ#namespace tag of the file to remove”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j”h´Múhj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjû“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j”h´Múhj†“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjj“ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj<”h]”hŒ Description”…”�”}”(hj>”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj:”ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Mühjj“ubhÌ)�”}”(hŒ>Hash the attribute name and namespace tag and kill the victim.”h]”hŒ>Hash the attribute name and namespace tag and kill the victim.”…”�”}”(hjR”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Mûhjj“ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjñ„h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ#sysfs_remove_file_self (C function)”Œc.sysfs_remove_file_self”hNt”auh1hýhjñ„h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒPbool sysfs_remove_file_self (struct kobject *kobj, const struct attribute *attr)”h]”j)�”}”(hŒObool sysfs_remove_file_self(struct kobject *kobj, const struct attribute *attr)”h]”(j�)�”}”(hj„h]”hŒbool”…”�”}”(hj�”h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj}”h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�”h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj}”h²hh³jŽ”h´MubjC)�”}”(hŒsysfs_remove_file_self”h]”jI)�”}”(hŒsysfs_remove_file_self”h]”hŒsysfs_remove_file_self”…”�”}”(hj¡”h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�”ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj}”h²hh³jŽ”h´Mubj=)�”}”(hŒ4(struct kobject *kobj, const struct attribute *attr)”h]”(jC)�”}”(hŒstruct kobject *kobj”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj½”h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¹”ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊ”h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¹”ubh)�”}”(hhh]”jI)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hjÛ”h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjØ”ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÝ”Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj£”sbŒc.sysfs_remove_file_self”†”asbuh1hhj¹”ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû”h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¹”ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj •h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¹”ubjI)�”}”(hŒkobj”h]”hŒkobj”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¹”ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjµ”ubjC)�”}”(hŒconst struct attribute *attr”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj/•h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj+•ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<•h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj+•ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjJ•h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj+•ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW•h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj+•ubh)�”}”(hhh]”jI)�”}”(hŒ attribute”h]”hŒ attribute”…”�”}”(hjh•h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhje•ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jj•Œmodname”NŒ classname”Njj )�”}”j ]”j÷”Œc.sysfs_remove_file_self”†”asbuh1hhj+•ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†•h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj+•ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj”•h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj+•ubjI)�”}”(hŒattr”h]”hŒattr”…”�”}”(hj¡•h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj+•ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjµ”ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj}”h²hh³jŽ”h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjy”h²hh³jŽ”h´Mubah}”(h]”jt”ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jŽ”h´Mhjv”h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ.remove an object attribute from its own method”h]”hŒ.remove an object attribute from its own method”…”�”}”(hjË•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MhjÈ•h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjv”h²hh³jŽ”h´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jã•jšjã•j›‰jœ‰j�‰uh1jh²hhjñ„h³Nh´NubjŸ)�”}”(hŒ³**Parameters** ``struct kobject *kobj`` object we're acting for ``const struct attribute *attr`` attribute descriptor **Description** See kernfs_remove_self() for details.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjí•h]”hŒ Parameters”…”�”}”(hjï•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjë•ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M hjç•ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ1``struct kobject *kobj`` object we're acting for ”h]”(jÊ)�”}”(hŒ``struct kobject *kobj``”h]”jÐ)�”}”(hj –h]”hŒstruct kobject *kobj”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj –ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M hj–ubjæ)�”}”(hhh]”hÌ)�”}”(hŒobject we're acting for”h]”hŒobject we’re acting for”…”�”}”(hj%–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j!–h´M hj"–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j!–h´M hj–ubjÄ)�”}”(hŒ6``const struct attribute *attr`` attribute descriptor ”h]”(jÊ)�”}”(hŒ ``const struct attribute *attr``”h]”jÐ)�”}”(hjE–h]”hŒconst struct attribute *attr”…”�”}”(hjG–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjC–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M hj?–ubjæ)�”}”(hhh]”hÌ)�”}”(hŒattribute descriptor”h]”hŒattribute descriptor”…”�”}”(hj^–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jZ–h´M hj[–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj?–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jZ–h´M hj–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjç•ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj€–h]”hŒ Description”…”�”}”(hj‚–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj~–ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M hjç•ubhÌ)�”}”(hŒ%See kernfs_remove_self() for details.”h]”hŒ%See kernfs_remove_self() for details.”…”�”}”(hj––h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M hjç•ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjñ„h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ)sysfs_remove_file_from_group (C function)”Œc.sysfs_remove_file_from_group”hNt”auh1hýhjñ„h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒivoid sysfs_remove_file_from_group (struct kobject *kobj, const struct attribute *attr, const char *group)”h]”j)�”}”(hŒhvoid sysfs_remove_file_from_group(struct kobject *kobj, const struct attribute *attr, const char *group)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÅ–h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÁ–h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M)ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ–h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÁ–h²hh³jÓ–h´M)ubjC)�”}”(hŒsysfs_remove_file_from_group”h]”jI)�”}”(hŒsysfs_remove_file_from_group”h]”hŒsysfs_remove_file_from_group”…”�”}”(hjæ–h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjâ–ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÁ–h²hh³jÓ–h´M)ubj=)�”}”(hŒG(struct kobject *kobj, const struct attribute *attr, const char *group)”h]”(jC)�”}”(hŒstruct kobject *kobj”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjþ–ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjþ–ubh)�”}”(hhh]”jI)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hj —h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj—ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j"—Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjè–sbŒc.sysfs_remove_file_from_group”†”asbuh1hhjþ–ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@—h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjþ–ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjN—h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjþ–ubjI)�”}”(hŒkobj”h]”hŒkobj”…”�”}”(hj[—h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjþ–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjú–ubjC)�”}”(hŒconst struct attribute *attr”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjt—h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjp—ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�—h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjp—ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj�—h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjp—ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœ—h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjp—ubh)�”}”(hhh]”jI)�”}”(hŒ attribute”h]”hŒ attribute”…”�”}”(hj­—h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjª—ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¯—Œmodname”NŒ classname”Njj )�”}”j ]”j<—Œc.sysfs_remove_file_from_group”†”asbuh1hhjp—ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjË—h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjp—ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÙ—h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjp—ubjI)�”}”(hŒattr”h]”hŒattr”…”�”}”(hjæ—h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjp—ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjú–ubjC)�”}”(hŒconst char *group”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjÿ—h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjû—ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ˜h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjû—ubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjû—ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(˜h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjû—ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj6˜h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjû—ubjI)�”}”(hŒgroup”h]”hŒgroup”…”�”}”(hjC˜h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjû—ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjú–ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÁ–h²hh³jÓ–h´M)ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj½–h²hh³jÓ–h´M)ubah}”(h]”j¸–ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÓ–h´M)hjº–h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ&remove an attribute file from a group.”h]”hŒ&remove an attribute file from a group.”…”�”}”(hjm˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M)hjj˜h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjº–h²hh³jÓ–h´M)ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j…˜jšj…˜j›‰jœ‰j�‰uh1jh²hhjñ„h³Nh´NubjŸ)�”}”(hŒ¢**Parameters** ``struct kobject *kobj`` object we're acting for. ``const struct attribute *attr`` attribute descriptor. ``const char *group`` group name.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj�˜h]”hŒ Parameters”…”�”}”(hj‘˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj�˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M-hj‰˜ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ2``struct kobject *kobj`` object we're acting for. ”h]”(jÊ)�”}”(hŒ``struct kobject *kobj``”h]”jÐ)�”}”(hj®˜h]”hŒstruct kobject *kobj”…”�”}”(hj°˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¬˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M*hj¨˜ubjæ)�”}”(hhh]”hÌ)�”}”(hŒobject we're acting for.”h]”hŒobject we’re acting for.”…”�”}”(hjǘh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jØh´M*hjĘubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¨˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jØh´M*hj¥˜ubjÄ)�”}”(hŒ7``const struct attribute *attr`` attribute descriptor. ”h]”(jÊ)�”}”(hŒ ``const struct attribute *attr``”h]”jÐ)�”}”(hjç˜h]”hŒconst struct attribute *attr”…”�”}”(hjé˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjå˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M+hjá˜ubjæ)�”}”(hhh]”hÌ)�”}”(hŒattribute descriptor.”h]”hŒattribute descriptor.”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jü˜h´M+hjý˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjá˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jü˜h´M+hj¥˜ubjÄ)�”}”(hŒ!``const char *group`` group name.”h]”(jÊ)�”}”(hŒ``const char *group``”h]”jÐ)�”}”(hj ™h]”hŒconst char *group”…”�”}”(hj"™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M-hj™ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ group name.”h]”hŒ group name.”…”�”}”(hj9™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M,hj6™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j5™h´M-hj¥˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj‰˜ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjñ„h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ"sysfs_create_bin_file (C function)”Œc.sysfs_create_bin_file”hNt”auh1hýhjñ„h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒRint sysfs_create_bin_file (struct kobject *kobj, const struct bin_attribute *attr)”h]”j)�”}”(hŒQint sysfs_create_bin_file(struct kobject *kobj, const struct bin_attribute *attr)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjz™h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjv™h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MBubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰™h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjv™h²hh³jˆ™h´MBubjC)�”}”(hŒsysfs_create_bin_file”h]”jI)�”}”(hŒsysfs_create_bin_file”h]”hŒsysfs_create_bin_file”…”�”}”(hj›™h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj—™ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjv™h²hh³jˆ™h´MBubj=)�”}”(hŒ8(struct kobject *kobj, const struct bin_attribute *attr)”h]”(jC)�”}”(hŒstruct kobject *kobj”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj·™h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj³™ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄ™h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj³™ubh)�”}”(hhh]”jI)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hjÕ™h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÒ™ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j×™Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj�™sbŒc.sysfs_create_bin_file”†”asbuh1hhj³™ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ™h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj³™ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj³™ubjI)�”}”(hŒkobj”h]”hŒkobj”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj³™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¯™ubjC)�”}”(hŒ const struct bin_attribute *attr”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj)šh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj%šubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6šh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj%šubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjDšh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj%šubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQšh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj%šubh)�”}”(hhh]”jI)�”}”(hŒ bin_attribute”h]”hŒ bin_attribute”…”�”}”(hjbšh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj_šubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jdšŒmodname”NŒ classname”Njj )�”}”j ]”jñ™Œc.sysfs_create_bin_file”†”asbuh1hhj%šubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€šh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj%šubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjŽšh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj%šubjI)�”}”(hŒattr”h]”hŒattr”…”�”}”(hj›šh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj%šubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¯™ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjv™h²hh³jˆ™h´MBubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjr™h²hh³jˆ™h´MBubah}”(h]”jm™ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jˆ™h´MBhjo™h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒcreate binary file for object.”h]”hŒcreate binary file for object.”…”�”}”(hjÅšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MBhjšh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjo™h²hh³jˆ™h´MBubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÝšjšjÝšj›‰jœ‰j�‰uh1jh²hhjñ„h³Nh´NubjŸ)�”}”(hŒp**Parameters** ``struct kobject *kobj`` object. ``const struct bin_attribute *attr`` attribute descriptor.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjçšh]”hŒ Parameters”…”�”}”(hjéšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjåšubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MFhjášubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ!``struct kobject *kobj`` object. ”h]”(jÊ)�”}”(hŒ``struct kobject *kobj``”h]”jÐ)�”}”(hj›h]”hŒstruct kobject *kobj”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MChj›ubjæ)�”}”(hhh]”hÌ)�”}”(hŒobject.”h]”hŒobject.”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j›h´MChj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j›h´MChjýšubjÄ)�”}”(hŒ:``const struct bin_attribute *attr`` attribute descriptor.”h]”(jÊ)�”}”(hŒ$``const struct bin_attribute *attr``”h]”jÐ)�”}”(hj?›h]”hŒ const struct bin_attribute *attr”…”�”}”(hjA›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj=›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MEhj9›ubjæ)�”}”(hhh]”hÌ)�”}”(hŒattribute descriptor.”h]”hŒattribute descriptor.”…”�”}”(hjX›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MDhjU›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj9›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jT›h´MEhjýšubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjášubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjñ„h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ"sysfs_remove_bin_file (C function)”Œc.sysfs_remove_bin_file”hNt”auh1hýhjñ„h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒSvoid sysfs_remove_bin_file (struct kobject *kobj, const struct bin_attribute *attr)”h]”j)�”}”(hŒRvoid sysfs_remove_bin_file(struct kobject *kobj, const struct bin_attribute *attr)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj™›h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj•›h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MVubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨›h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj•›h²hh³j§›h´MVubjC)�”}”(hŒsysfs_remove_bin_file”h]”jI)�”}”(hŒsysfs_remove_bin_file”h]”hŒsysfs_remove_bin_file”…”�”}”(hjº›h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¶›ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj•›h²hh³j§›h´MVubj=)�”}”(hŒ8(struct kobject *kobj, const struct bin_attribute *attr)”h]”(jC)�”}”(hŒstruct kobject *kobj”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÖ›h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÒ›ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjã›h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÒ›ubh)�”}”(hhh]”jI)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hjô›h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjñ›ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jö›Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj¼›sbŒc.sysfs_remove_bin_file”†”asbuh1hhjÒ›ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÒ›ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj"œh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÒ›ubjI)�”}”(hŒkobj”h]”hŒkobj”…”�”}”(hj/œh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÒ›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjΛubjC)�”}”(hŒ const struct bin_attribute *attr”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjHœh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjDœubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUœh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjDœubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjcœh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjDœubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpœh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjDœubh)�”}”(hhh]”jI)�”}”(hŒ bin_attribute”h]”hŒ bin_attribute”…”�”}”(hj�œh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj~œubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jƒœŒmodname”NŒ classname”Njj )�”}”j ]”jœŒc.sysfs_remove_bin_file”†”asbuh1hhjDœubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸœh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjDœubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj­œh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjDœubjI)�”}”(hŒattr”h]”hŒattr”…”�”}”(hjºœh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjDœubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjΛubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj•›h²hh³j§›h´MVubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj‘›h²hh³j§›h´MVubah}”(h]”jŒ›ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j§›h´MVhjŽ›h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒremove binary file for object.”h]”hŒremove binary file for object.”…”�”}”(hjäœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MVhjáœh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjŽ›h²hh³j§›h´MVubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jüœjšjüœj›‰jœ‰j�‰uh1jh²hhjñ„h³Nh´NubjŸ)�”}”(hŒp**Parameters** ``struct kobject *kobj`` object. ``const struct bin_attribute *attr`` attribute descriptor.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj�h]”hŒ Parameters”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MZhj�ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ!``struct kobject *kobj`` object. ”h]”(jÊ)�”}”(hŒ``struct kobject *kobj``”h]”jÐ)�”}”(hj%�h]”hŒstruct kobject *kobj”…”�”}”(hj'�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj#�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MWhj�ubjæ)�”}”(hhh]”hÌ)�”}”(hŒobject.”h]”hŒobject.”…”�”}”(hj>�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j:�h´MWhj;�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j:�h´MWhj�ubjÄ)�”}”(hŒ:``const struct bin_attribute *attr`` attribute descriptor.”h]”(jÊ)�”}”(hŒ$``const struct bin_attribute *attr``”h]”jÐ)�”}”(hj^�h]”hŒ const struct bin_attribute *attr”…”�”}”(hj`�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj\�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MYhjX�ubjæ)�”}”(hhh]”hÌ)�”}”(hŒattribute descriptor.”h]”hŒattribute descriptor.”…”�”}”(hjw�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MXhjt�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjX�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³js�h´MYhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjñ„h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œsysfs_emit (C function)”Œ c.sysfs_emit”hNt”auh1hýhjñ„h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ0int sysfs_emit (char *buf, const char *fmt, ...)”h]”j)�”}”(hŒ/int sysfs_emit(char *buf, const char *fmt, ...)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj¸�h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj´�h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Mçubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇ�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj´�h²hh³jÆ�h´MçubjC)�”}”(hŒ sysfs_emit”h]”jI)�”}”(hŒ sysfs_emit”h]”hŒ sysfs_emit”…”�”}”(hjÙ�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÕ�ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj´�h²hh³jÆ�h´Mçubj=)�”}”(hŒ!(char *buf, const char *fmt, ...)”h]”(jC)�”}”(hŒ char *buf”h]”(j�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjõ�h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjñ�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjñ�ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjñ�ubjI)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjñ�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjí�ubjC)�”}”(hŒconst char *fmt”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj7žh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj3žubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDžh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj3žubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjRžh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj3žubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`žh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj3žubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjnžh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj3žubjI)�”}”(hŒfmt”h]”hŒfmt”…”�”}”(hj{žh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj3žubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjí�ubjC)�”}”(hŒ...”h]”j¯)�”}”(hŒ...”h]”hŒ...”…”�”}”(hj”žh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj�žubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjí�ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj´�h²hh³jÆ�h´Mçubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj°�h²hh³jÆ�h´Mçubah}”(h]”j«�ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÆ�h´Mçhj­�h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ0scnprintf equivalent, aware of PAGE_SIZE buffer.”h]”hŒ0scnprintf equivalent, aware of PAGE_SIZE buffer.”…”�”}”(hj¾žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Mçhj»žh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj­�h²hh³jÆ�h´Mçubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÖžjšjÖžj›‰jœ‰j�‰uh1jh²hhjñ„h³Nh´NubjŸ)�”}”(hŒÇ**Parameters** ``char *buf`` start of PAGE_SIZE buffer. ``const char *fmt`` format ``...`` optional arguments to **format** **Description** Returns number of characters written to **buf**.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjàžh]”hŒ Parameters”…”�”}”(hjâžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÞžubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MëhjÚžubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ)``char *buf`` start of PAGE_SIZE buffer. ”h]”(jÊ)�”}”(hŒ ``char *buf``”h]”jÐ)�”}”(hjÿžh]”hŒ char *buf”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjýžubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Mèhjùžubjæ)�”}”(hhh]”hÌ)�”}”(hŒstart of PAGE_SIZE buffer.”h]”hŒstart of PAGE_SIZE buffer.”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jŸh´MèhjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjùžubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jŸh´MèhjöžubjÄ)�”}”(hŒ``const char *fmt`` format ”h]”(jÊ)�”}”(hŒ``const char *fmt``”h]”jÐ)�”}”(hj8Ÿh]”hŒconst char *fmt”…”�”}”(hj:Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj6Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Méhj2Ÿubjæ)�”}”(hhh]”hÌ)�”}”(hŒformat”h]”hŒformat”…”�”}”(hjQŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jMŸh´MéhjNŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj2Ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jMŸh´MéhjöžubjÄ)�”}”(hŒ)``...`` optional arguments to **format** ”h]”(jÊ)�”}”(hŒ``...``”h]”jÐ)�”}”(hjqŸh]”hŒ...”…”�”}”(hjsŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjoŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MêhjkŸubjæ)�”}”(hhh]”hÌ)�”}”(hŒ optional arguments to **format**”h]”(hŒoptional arguments to ”…”�”}”(hjŠŸh²hh³Nh´Nubj©)�”}”(hŒ **format**”h]”hŒformat”…”�”}”(hj’Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjŠŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j†Ÿh´Mêhj‡Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjkŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j†Ÿh´Mêhjöžubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÚžubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjºŸh]”hŒ Description”…”�”}”(hj¼Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¸Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MìhjÚžubhÌ)�”}”(hŒ0Returns number of characters written to **buf**.”h]”(hŒ(Returns number of characters written to ”…”�”}”(hjПh²hh³Nh´Nubj©)�”}”(hŒ**buf**”h]”hŒbuf”…”�”}”(hjØŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjПubhŒ.”…”�”}”(hjПh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MëhjÚžubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjñ„h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œsysfs_emit_at (C function)”Œc.sysfs_emit_at”hNt”auh1hýhjñ„h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ;int sysfs_emit_at (char *buf, int at, const char *fmt, ...)”h]”j)�”}”(hŒ:int sysfs_emit_at(char *buf, int at, const char *fmt, ...)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj  h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj  h²hh³j h´MubjC)�”}”(hŒ sysfs_emit_at”h]”jI)�”}”(hŒ sysfs_emit_at”h]”hŒ sysfs_emit_at”…”�”}”(hj2 h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj. ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj  h²hh³j h´Mubj=)�”}”(hŒ)(char *buf, int at, const char *fmt, ...)”h]”(jC)�”}”(hŒ char *buf”h]”(j�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjN h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjJ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\ h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjJ ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjj h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjJ ubjI)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjw h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjJ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjF ubjC)�”}”(hŒint at”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjŒ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjž h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjŒ ubjI)�”}”(hŒat”h]”hŒat”…”�”}”(hj¬ h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŒ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjF ubjC)�”}”(hŒconst char *fmt”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjÅ h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÁ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒ h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÁ ubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjà h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÁ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjî h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÁ ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjü h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÁ ubjI)�”}”(hŒfmt”h]”hŒfmt”…”�”}”(hj ¡h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÁ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjF ubjC)�”}”(hŒ...”h]”j¯)�”}”(hj–žh]”hŒ...”…”�”}”(hj"¡h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¡ubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjF ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj  h²hh³j h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj  h²hh³j h´Mubah}”(h]”j ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j h´Mhj h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ0scnprintf equivalent, aware of PAGE_SIZE buffer.”h]”hŒ0scnprintf equivalent, aware of PAGE_SIZE buffer.”…”�”}”(hjK¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MhjH¡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj h²hh³j h´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jc¡jšjc¡j›‰jœ‰j�‰uh1jh²hhjñ„h³Nh´NubjŸ)�”}”(hX3**Parameters** ``char *buf`` start of PAGE_SIZE buffer. ``int at`` offset in **buf** to start write in bytes **at** must be >= 0 && < PAGE_SIZE ``const char *fmt`` format ``...`` optional arguments to **fmt** **Description** Returns number of characters written starting at &**buf**[**at**].”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjm¡h]”hŒ Parameters”…”�”}”(hjo¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjk¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Mhjg¡ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ)``char *buf`` start of PAGE_SIZE buffer. ”h]”(jÊ)�”}”(hŒ ``char *buf``”h]”jÐ)�”}”(hjŒ¡h]”hŒ char *buf”…”�”}”(hjŽ¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjŠ¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Mhj†¡ubjæ)�”}”(hhh]”hÌ)�”}”(hŒstart of PAGE_SIZE buffer.”h]”hŒstart of PAGE_SIZE buffer.”…”�”}”(hj¥¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¡¡h´Mhj¢¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj†¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¡¡h´Mhjƒ¡ubjÄ)�”}”(hŒX``int at`` offset in **buf** to start write in bytes **at** must be >= 0 && < PAGE_SIZE ”h]”(jÊ)�”}”(hŒ ``int at``”h]”jÐ)�”}”(hjÅ¡h]”hŒint at”…”�”}”(hjÇ¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjáubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Mhj¿¡ubjæ)�”}”(hhh]”hÌ)�”}”(hŒLoffset in **buf** to start write in bytes **at** must be >= 0 && < PAGE_SIZE”h]”(hŒ offset in ”…”�”}”(hjÞ¡h²hh³Nh´Nubj©)�”}”(hŒ**buf**”h]”hŒbuf”…”�”}”(hjæ¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÞ¡ubhŒ to start write in bytes ”…”�”}”(hjÞ¡h²hh³Nh´Nubj©)�”}”(hŒ**at**”h]”hŒat”…”�”}”(hjø¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÞ¡ubhŒ must be >= 0 && < PAGE_SIZE”…”�”}”(hjÞ¡h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MhjÛ¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¿¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÚ¡h´Mhjƒ¡ubjÄ)�”}”(hŒ``const char *fmt`` format ”h]”(jÊ)�”}”(hŒ``const char *fmt``”h]”jÐ)�”}”(hj#¢h]”hŒconst char *fmt”…”�”}”(hj%¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj!¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Mhj¢ubjæ)�”}”(hhh]”hÌ)�”}”(hŒformat”h]”hŒformat”…”�”}”(hj<¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j8¢h´Mhj9¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j8¢h´Mhjƒ¡ubjÄ)�”}”(hŒ&``...`` optional arguments to **fmt** ”h]”(jÊ)�”}”(hŒ``...``”h]”jÐ)�”}”(hj\¢h]”hŒ...”…”�”}”(hj^¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjZ¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MhjV¢ubjæ)�”}”(hhh]”hÌ)�”}”(hŒoptional arguments to **fmt**”h]”(hŒoptional arguments to ”…”�”}”(hju¢h²hh³Nh´Nubj©)�”}”(hŒ**fmt**”h]”hŒfmt”…”�”}”(hj}¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hju¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jq¢h´Mhjr¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjV¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jq¢h´Mhjƒ¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjg¡ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj¥¢h]”hŒ Description”…”�”}”(hj§¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj£¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Mhjg¡ubhÌ)�”}”(hŒBReturns number of characters written starting at &**buf**[**at**].”h]”(hŒ:Returns number of characters written starting at &**buf**[”…”�”}”(hj»¢h²hh³Nh´Nubj©)�”}”(hŒ**at**”h]”hŒat”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj»¢ubhŒ].”…”�”}”(hj»¢h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Mhjg¡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjñ„h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ'sysfs_bin_attr_simple_read (C function)”Œc.sysfs_bin_attr_simple_read”hNt”auh1hýhjñ„h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ“ssize_t sysfs_bin_attr_simple_read (struct file *file, struct kobject *kobj, const struct bin_attribute *attr, char *buf, loff_t off, size_t count)”h]”j)�”}”(hŒ’ssize_t sysfs_bin_attr_simple_read(struct file *file, struct kobject *kobj, const struct bin_attribute *attr, char *buf, loff_t off, size_t count)”h]”(h)�”}”(hhh]”jI)�”}”(hŒssize_t”h]”hŒssize_t”…”�”•}”(hjÿ¢h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjü¢ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j£Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒsysfs_bin_attr_simple_read”sbŒc.sysfs_bin_attr_simple_read”†”asbuh1hhjø¢h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!£h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjø¢h²hh³j £h´MubjC)�”}”(hŒsysfs_bin_attr_simple_read”h]”jI)�”}”(hj£h]”hŒsysfs_bin_attr_simple_read”…”�”}”(hj3£h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj/£ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjø¢h²hh³j £h´Mubj=)�”}”(hŒp(struct file *file, struct kobject *kobj, const struct bin_attribute *attr, char *buf, loff_t off, size_t count)”h]”(jC)�”}”(hŒstruct file *file”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjN£h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjJ£ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[£h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjJ£ubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjl£h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhji£ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jn£Œmodname”NŒ classname”Njj )�”}”j ]”j£Œc.sysfs_bin_attr_simple_read”†”asbuh1hhjJ£ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ£h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjJ£ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj˜£h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjJ£ubjI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj¥£h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjJ£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjF£ubjC)�”}”(hŒstruct kobject *kobj”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¾£h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjº£ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjË£h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjº£ubh)�”}”(hhh]”jI)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hjÜ£h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÙ£ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÞ£Œmodname”NŒ classname”Njj )�”}”j ]”j£Œc.sysfs_bin_attr_simple_read”†”asbuh1hhjº£ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjú£h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjº£ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjº£ubjI)�”}”(hŒkobj”h]”hŒkobj”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjº£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjF£ubjC)�”}”(hŒ const struct bin_attribute *attr”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj.¤h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj*¤ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;¤h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj*¤ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjI¤h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj*¤ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjV¤h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj*¤ubh)�”}”(hhh]”jI)�”}”(hŒ bin_attribute”h]”hŒ bin_attribute”…”�”}”(hjg¤h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjd¤ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”ji¤Œmodname”NŒ classname”Njj )�”}”j ]”j£Œc.sysfs_bin_attr_simple_read”†”asbuh1hhj*¤ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…¤h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj*¤ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj“¤h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj*¤ubjI)�”}”(hŒattr”h]”hŒattr”…”�”}”(hj ¤h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj*¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjF£ubjC)�”}”(hŒ char *buf”h]”(j�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj¹¤h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjµ¤ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjǤh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjµ¤ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÕ¤h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjµ¤ubjI)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjâ¤h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjµ¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjF£ubjC)�”}”(hŒ loff_t off”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjþ¤h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjû¤ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¥Œmodname”NŒ classname”Njj )�”}”j ]”j£Œc.sysfs_bin_attr_simple_read”†”asbuh1hhj÷¤ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj÷¤ubjI)�”}”(hŒoff”h]”hŒoff”…”�”}”(hj*¥h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj÷¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjF£ubjC)�”}”(hŒ size_t count”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjF¥h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjC¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jH¥Œmodname”NŒ classname”Njj )�”}”j ]”j£Œc.sysfs_bin_attr_simple_read”†”asbuh1hhj?¥ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd¥h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj?¥ubjI)�”}”(hŒcount”h]”hŒcount”…”�”}”(hjr¥h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj?¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjF£ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjø¢h²hh³j £h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjô¢h²hh³j £h´Mubah}”(h]”jï¢ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j £h´Mhjñ¢h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ)read callback to simply copy from memory.”h]”hŒ)read callback to simply copy from memory.”…”�”}”(hjœ¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Mhj™¥h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjñ¢h²hh³j £h´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j´¥jšj´¥j›‰jœ‰j�‰uh1jh²hhjñ„h³Nh´NubjŸ)�”}”(hX**Parameters** ``struct file *file`` attribute file which is being read. ``struct kobject *kobj`` object to which the attribute belongs. ``const struct bin_attribute *attr`` attribute descriptor. ``char *buf`` destination buffer. ``loff_t off`` offset in bytes from which to read. ``size_t count`` maximum number of bytes to read. **Description** Simple ->read() callback for bin_attributes backed by a buffer in memory. The **private** and **size** members in struct bin_attribute must be set to the buffer's location and size before the bin_attribute is created in sysfs. Bounds check for **off** and **count** is done in sysfs_kf_bin_read(). Negative value check for **off** is done in vfs_setpos() and default_llseek(). Returns number of bytes written to **buf**.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj¾¥h]”hŒ Parameters”…”�”}”(hjÀ¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¼¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M!hj¸¥ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ:``struct file *file`` attribute file which is being read. ”h]”(jÊ)�”}”(hŒ``struct file *file``”h]”jÐ)�”}”(hjÝ¥h]”hŒstruct file *file”…”�”}”(hjߥh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÛ¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Mhj×¥ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ#attribute file which is being read.”h]”hŒ#attribute file which is being read.”…”�”}”(hjö¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jò¥h´Mhjó¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj×¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jò¥h´MhjÔ¥ubjÄ)�”}”(hŒ@``struct kobject *kobj`` object to which the attribute belongs. ”h]”(jÊ)�”}”(hŒ``struct kobject *kobj``”h]”jÐ)�”}”(hj¦h]”hŒstruct kobject *kobj”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Mhj¦ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ&object to which the attribute belongs.”h]”hŒ&object to which the attribute belongs.”…”�”}”(hj/¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j+¦h´Mhj,¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j+¦h´MhjÔ¥ubjÄ)�”}”(hŒ;``const struct bin_attribute *attr`` attribute descriptor. ”h]”(jÊ)�”}”(hŒ$``const struct bin_attribute *attr``”h]”jÐ)�”}”(hjO¦h]”hŒ const struct bin_attribute *attr”…”�”}”(hjQ¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjM¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M hjI¦ubjæ)�”}”(hhh]”hÌ)�”}”(hŒattribute descriptor.”h]”hŒattribute descriptor.”…”�”}”(hjh¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jd¦h´M hje¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjI¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jd¦h´M hjÔ¥ubjÄ)�”}”(hŒ"``char *buf`` destination buffer. ”h]”(jÊ)�”}”(hŒ ``char *buf``”h]”jÐ)�”}”(hjˆ¦h]”hŒ char *buf”…”�”}”(hjЦh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj†¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M!hj‚¦ubjæ)�”}”(hhh]”hÌ)�”}”(hŒdestination buffer.”h]”hŒdestination buffer.”…”�”}”(hj¡¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�¦h´M!hjž¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj‚¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j�¦h´M!hjÔ¥ubjÄ)�”}”(hŒ3``loff_t off`` offset in bytes from which to read. ”h]”(jÊ)�”}”(hŒ``loff_t off``”h]”jÐ)�”}”(hjÁ¦h]”hŒ loff_t off”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¿¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M"hj»¦ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ#offset in bytes from which to read.”h]”hŒ#offset in bytes from which to read.”…”�”}”(hjÚ¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÖ¦h´M"hjצubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj»¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÖ¦h´M"hjÔ¥ubjÄ)�”}”(hŒ2``size_t count`` maximum number of bytes to read. ”h]”(jÊ)�”}”(hŒ``size_t count``”h]”jÐ)�”}”(hjú¦h]”hŒ size_t count”…”�”}”(hjü¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjø¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M#hjô¦ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ maximum number of bytes to read.”h]”hŒ maximum number of bytes to read.”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j§h´M#hj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjô¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j§h´M#hjÔ¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj¸¥ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj5§h]”hŒ Description”…”�”}”(hj7§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj3§ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M%hj¸¥ubhÌ)�”}”(hŒâSimple ->read() callback for bin_attributes backed by a buffer in memory. The **private** and **size** members in struct bin_attribute must be set to the buffer's location and size before the bin_attribute is created in sysfs.”h]”(hŒNSimple ->read() callback for bin_attributes backed by a buffer in memory. The ”…”�”}”(hjK§h²hh³Nh´Nubj©)�”}”(hŒ **private**”h]”hŒprivate”…”�”}”(hjS§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjK§ubhŒ and ”…”�”}”(hjK§h²hh³Nh´Nubj©)�”}”(hŒ**size**”h]”hŒsize”…”�”}”(hje§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjK§ubhŒ~ members in struct bin_attribute must be set to the buffer’s location and size before the bin_attribute is created in sysfs.”…”�”}”(hjK§h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M$hj¸¥ubhÌ)�”}”(hŒ•Bounds check for **off** and **count** is done in sysfs_kf_bin_read(). Negative value check for **off** is done in vfs_setpos() and default_llseek().”h]”(hŒBounds check for ”…”�”}”(hj~§h²hh³Nh´Nubj©)�”}”(hŒ**off**”h]”hŒoff”…”�”}”(hj†§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj~§ubhŒ and ”…”�”}”(hj~§h²hh³Nh´Nubj©)�”}”(hŒ **count**”h]”hŒcount”…”�”}”(hj˜§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj~§ubhŒ: is done in sysfs_kf_bin_read(). Negative value check for ”…”�”}”(hj~§h²hh³Nh´Nubj©)�”}”(hŒ**off**”h]”hŒoff”…”�”}”(hjª§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj~§ubhŒ. is done in vfs_setpos() and default_llseek().”…”�”}”(hj~§h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M(hj¸¥ubhÌ)�”}”(hŒ+Returns number of bytes written to **buf**.”h]”(hŒ#Returns number of bytes written to ”…”�”}”(hjçh²hh³Nh´Nubj©)�”}”(hŒ**buf**”h]”hŒbuf”…”�”}”(hj˧h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjçubhŒ.”…”�”}”(hjçh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M+hj¸¥ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjñ„h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œsysfs_create_link (C function)”Œc.sysfs_create_link”hNt”auh1hýhjñ„h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒVint sysfs_create_link (struct kobject *kobj, struct kobject *target, const char *name)”h]”j)�”}”(hŒUint sysfs_create_link(struct kobject *kobj, struct kobject *target, const char *name)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¨h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´KTubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¨h²hh³j¨h´KTubjC)�”}”(hŒsysfs_create_link”h]”jI)�”}”(hŒsysfs_create_link”h]”hŒsysfs_create_link”…”�”}”(hj%¨h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj!¨ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj¨h²hh³j¨h´KTubj=)�”}”(hŒ@(struct kobject *kobj, struct kobject *target, const char *name)”h]”(jC)�”}”(hŒstruct kobject *kobj”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjA¨h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj=¨ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN¨h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj=¨ubh)�”}”(hhh]”jI)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hj_¨h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj\¨ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”ja¨Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj'¨sbŒc.sysfs_create_link”†”asbuh1hhj=¨ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj=¨ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj�¨h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj=¨ubjI)�”}”(hŒkobj”h]”hŒkobj”…”�”}”(hjš¨h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj=¨ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj9¨ubjC)�”}”(hŒstruct kobject *target”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj³¨h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¯¨ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀ¨h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¯¨ubh)�”}”(hhh]”jI)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hjѨh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjΨubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÓ¨Œmodname”NŒ classname”Njj )�”}”j ]”j{¨Œc.sysfs_create_link”†”asbuh1hhj¯¨ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï¨h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¯¨ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjý¨h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¯¨ubjI)�”}”(hŒtarget”h]”hŒtarget”…”�”}”(hj ©h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¯¨ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj9¨ubjC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj#©h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj©ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0©h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj©ubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj>©h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj©ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjL©h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj©ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjZ©h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj©ubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hjg©h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj9¨ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj¨h²hh³j¨h´KTubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjü§h²hh³j¨h´KTubah}”(h]”j÷§ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j¨h´KThjù§h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ#create symlink between two objects.”h]”hŒ#create symlink between two objects.”…”�”}”(hj‘©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´KThjŽ©h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjù§h²hh³j¨h´KTubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j©©jšj©©j›‰jœ‰j�‰uh1jh²hhjñ„h³Nh´NubjŸ)�”}”(hŒÂ**Parameters** ``struct kobject *kobj`` object whose directory we're creating the link in. ``struct kobject *target`` object we're pointing to. ``const char *name`` name of the symlink.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj³©h]”hŒ Parameters”…”�”}”(hjµ©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj±©ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´KXhj­©ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒL``struct kobject *kobj`` object whose directory we're creating the link in. ”h]”(jÊ)�”}”(hŒ``struct kobject *kobj``”h]”jÐ)�”}”(hjÒ©h]”hŒstruct kobject *kobj”…”�”}”(hjÔ©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjЩubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´KUhjÌ©ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ2object whose directory we're creating the link in.”h]”hŒ4object whose directory we’re creating the link in.”…”�”}”(hjë©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jç©h´KUhjè©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÌ©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jç©h´KUhjÉ©ubjÄ)�”}”(hŒ5``struct kobject *target`` object we're pointing to. ”h]”(jÊ)�”}”(hŒ``struct kobject *target``”h]”jÐ)�”}”(hj ªh]”hŒstruct kobject *target”…”�”}”(hj ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj ªubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´KVhjªubjæ)�”}”(hhh]”hÌ)�”}”(hŒobject we're pointing to.”h]”hŒobject we’re pointing to.”…”�”}”(hj$ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j ªh´KVhj!ªubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjªubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j ªh´KVhjÉ©ubjÄ)�”}”(hŒ)``const char *name`` name of the symlink.”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hjDªh]”hŒconst char *name”…”�”}”(hjFªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjBªubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´KXhj>ªubjæ)�”}”(hhh]”hÌ)�”}”(hŒname of the symlink.”h]”hŒname of the symlink.”…”�”}”(hj]ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´KWhjZªubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj>ªubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jYªh´KXhjÉ©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj­©ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjñ„h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ%sysfs_create_link_nowarn (C function)”Œc.sysfs_create_link_nowarn”hNt”auh1hýhjñ„h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ]int sysfs_create_link_nowarn (struct kobject *kobj, struct kobject *target, const char *name)”h]”j)�”}”(hŒ\int sysfs_create_link_nowarn(struct kobject *kobj, struct kobject *target, const char *name)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjžªh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjšªh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´Kaubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­ªh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjšªh²hh³j¬ªh´KaubjC)�”}”(hŒsysfs_create_link_nowarn”h]”jI)�”}”(hŒsysfs_create_link_nowarn”h]”hŒsysfs_create_link_nowarn”…”�”}”(hj¿ªh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj»ªubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjšªh²hh³j¬ªh´Kaubj=)�”}”(hŒ@(struct kobject *kobj, struct kobject *target, const char *name)”h]”(jC)�”}”(hŒstruct kobject *kobj”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÛªh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjתubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèªh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjתubh)�”}”(hhh]”jI)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hjùªh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjöªubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jûªŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÁªsbŒc.sysfs_create_link_nowarn”†”asbuh1hhjתubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjתubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj'«h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjתubjI)�”}”(hŒkobj”h]”hŒkobj”…”�”}”(hj4«h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjתubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÓªubjC)�”}”(hŒstruct kobject *target”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjM«h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjI«ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ«h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjI«ubh)�”}”(hhh]”jI)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hjk«h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjh«ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jm«Œmodname”NŒ classname”Njj )�”}”j ]”j«Œc.sysfs_create_link_nowarn”†”asbuh1hhjI«ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰«h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjI«ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj—«h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjI«ubjI)�”}”(hŒtarget”h]”hŒtarget”…”�”}”(hj¤«h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjI«ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÓªubjC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj½«h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¹«ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊ«h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¹«ubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjØ«h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¹«ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ«h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¹«ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjô«h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¹«ubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¹«ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÓªubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjšªh²hh³j¬ªh´Kaubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj–ªh²hh³j¬ªh´Kaubah}”(h]”j‘ªah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j¬ªh´Kahj“ªh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ#create symlink between two objects.”h]”hŒ#create symlink between two objects.”…”�”}”(hj+¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´Kahj(¬h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj“ªh²hh³j¬ªh´Kaubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jC¬jšjC¬j›‰jœ‰j�‰uh1jh²hhjñ„h³Nh´NubjŸ)�”}”(hXB**Parameters** ``struct kobject *kobj`` object whose directory we're creating the link in. ``struct kobject *target`` object we're pointing to. ``const char *name`` name of the symlink. **Description** This function does the same as sysfs_create_link(), but it doesn't warn if the link already exists.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjM¬h]”hŒ Parameters”…”�”}”(hjO¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjK¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´KehjG¬ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒL``struct kobject *kobj`` object whose directory we're creating the link in. ”h]”(jÊ)�”}”(hŒ``struct kobject *kobj``”h]”jÐ)�”}”(hjl¬h]”hŒstruct kobject *kobj”…”�”}”(hjn¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´Kbhjf¬ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ2object whose directory we're creating the link in.”h]”hŒ4object whose directory we’re creating the link in.”…”�”}”(hj…¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�¬h´Kbhj‚¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjf¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j�¬h´Kbhjc¬ubjÄ)�”}”(hŒ5``struct kobject *target`` object we're pointing to. ”h]”(jÊ)�”}”(hŒ``struct kobject *target``”h]”jÐ)�”}”(hj¥¬h]”hŒstruct kobject *target”…”�”}”(hj§¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj£¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´KchjŸ¬ubjæ)�”}”(hhh]”hÌ)�”}”(hŒobject we're pointing to.”h]”hŒobject we’re pointing to.”…”�”}”(hj¾¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jº¬h´Kchj»¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjŸ¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jº¬h´Kchjc¬ubjÄ)�”}”(hŒ*``const char *name`` name of the symlink. ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hjÞ¬h]”hŒconst char *name”…”�”}”(hjà¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjܬubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´Kdhjجubjæ)�”}”(hhh]”hÌ)�”}”(hŒname of the symlink.”h]”hŒname of the symlink.”…”�”}”(hj÷¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jó¬h´Kdhjô¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjجubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jó¬h´Kdhjc¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjG¬ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj­h]”hŒ Description”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´KfhjG¬ubjÁ™)�”}”(hŒcThis function does the same as sysfs_create_link(), but it doesn't warn if the link already exists.”h]”hÌ)�”}”(hŒcThis function does the same as sysfs_create_link(), but it doesn't warn if the link already exists.”h]”hŒeThis function does the same as sysfs_create_link(), but it doesn’t warn if the link already exists.”…”�”}”(hj3­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´Kehj/­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀ™h³jA­h´KehjG¬ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjñ„h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œsysfs_remove_link (C function)”Œc.sysfs_remove_link”hNt”auh1hýhjñ„h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ?void sysfs_remove_link (struct kobject *kobj, const char *name)”h]”j)�”}”(hŒ>void sysfs_remove_link(struct kobject *kobj, const char *name)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjh­h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjd­h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´K‹ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjw­h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjd­h²hh³jv­h´K‹ubjC)�”}”(hŒsysfs_remove_link”h]”jI)�”}”(hŒsysfs_remove_link”h]”hŒsysfs_remove_link”…”�”}”(hj‰­h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj…­ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjd­h²hh³jv­h´K‹ubj=)�”}”(hŒ((struct kobject *kobj, const char *name)”h]”(jC)�”}”(hŒstruct kobject *kobj”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¥­h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¡­ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²­h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¡­ubh)�”}”(hhh]”jI)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÀ­ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÅ­Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj‹­sbŒc.sysfs_remove_link”†”asbuh1hhj¡­ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjã­h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¡­ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjñ­h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¡­ubjI)�”}”(hŒkobj”h]”hŒkobj”…”�”}”(hjþ­h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¡­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj�­ubjC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj®ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$®h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj®ubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj2®h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj®ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@®h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj®ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjN®h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj®ubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj[®h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj®ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj�­ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjd­h²hh³jv­h´K‹ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj`­h²hh³jv­h´K‹ubah}”(h]”j[­ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jv­h´K‹hj]­h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ%remove symlink in object's directory.”h]”hŒ'remove symlink in object’s directory.”…”�”}”(hj…®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´K‹hj‚®h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj]­h²hh³jv­h´K‹ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j�®jšj�®j›‰jœ‰j�‰uh1jh²hhjñ„h³Nh´NubjŸ)�”}”(hŒz**Parameters** ``struct kobject *kobj`` object we're acting for. ``const char *name`` name of the symlink to remove.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj§®h]”hŒ Parameters”…”�”}”(hj©®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¥®ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´K�hj¡®ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ2``struct kobject *kobj`` object we're acting for. ”h]”(jÊ)�”}”(hŒ``struct kobject *kobj``”h]”jÐ)�”}”(hjÆ®h]”hŒstruct kobject *kobj”…”�”}”(hjÈ®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÄ®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´KŒhjÀ®ubjæ)�”}”(hhh]”hÌ)�”}”(hŒobject we're acting for.”h]”hŒobject we’re acting for.”…”�”}”(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Œ3``const char *name`` name of the symlink to remove.”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hjÿ®h]”hŒconst char *name”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjý®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´KŽhjù®ubjæ)�”}”(hhh]”hÌ)�”}”(hŒname of the symlink to remove.”h]”hŒname of the symlink to remove.”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´K�hj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjù®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¯h´KŽhj½®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj¡®ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjñ„h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ!sysfs_rename_link_ns (C function)”Œc.sysfs_rename_link_ns”hNt”auh1hýhjñ„h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ‡int sysfs_rename_link_ns (struct kobject *kobj, struct kobject *targ, const char *old, const char *new, const struct ns_common *new_ns)”h]”j)�”}”(hŒ†int sysfs_rename_link_ns(struct kobject *kobj, struct kobject *targ, const char *old, const char *new, const struct ns_common *new_ns)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjY¯h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjU¯h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´K�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh¯h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjU¯h²hh³jg¯h´K�ubjC)�”}”(hŒsysfs_rename_link_ns”h]”jI)�”}”(hŒsysfs_rename_link_ns”h]”hŒsysfs_rename_link_ns”…”�”}”(hjz¯h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjv¯ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjU¯h²hh³jg¯h´K�ubj=)�”}”(hŒn(struct kobject *kobj, struct kobject *targ, const char *old, const char *new, const struct ns_common *new_ns)”h]”(jC)�”}”(hŒstruct kobject *kobj”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj–¯h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj’¯ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£¯h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj’¯ubh)�”}”(hhh]”jI)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hj´¯h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj±¯ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¶¯Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj|¯sbŒc.sysfs_rename_link_ns”†”asbuh1hhj’¯ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ¯h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj’¯ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjâ¯h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj’¯ubjI)�”}”(hŒkobj”h]”hŒkobj”…”�”}”(hjï¯h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj’¯ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjޝubjC)�”}”(hŒstruct kobject *targ”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj°ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj°ubh)�”}”(hhh]”jI)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hj&°h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj#°ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j(°Œmodname”NŒ classname”Njj )�”}”j ]”jЯŒc.sysfs_rename_link_ns”†”asbuh1hhj°ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjD°h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj°ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjR°h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj°ubjI)�”}”(hŒtarg”h]”hŒtarg”…”�”}”(hj_°h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjޝubjC)�”}”(hŒconst char *old”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjx°h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjt°ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…°h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjt°ubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj“°h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjt°ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡°h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjt°ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¯°h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjt°ubjI)�”}”(hŒold”h]”hŒold”…”�”}”(hj¼°h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjt°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjޝubjC)�”}”(hŒconst char *new”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjÕ°h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjѰubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâ°h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjѰubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjð°h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjѰubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ°h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjѰubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj ±h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjѰubjI)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjѰubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjޝubjC)�”}”(hŒconst struct ns_common *new_ns”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj2±h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj.±ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?±h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj.±ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjM±h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj.±ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ±h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj.±ubh)�”}”(hhh]”jI)�”}”(hŒ ns_common”h]”hŒ ns_common”…”�”}”(hjk±h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjh±ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jm±Œmodname”NŒ classname”Njj )�”}”j ]”jЯŒc.sysfs_rename_link_ns”†”asbuh1hhj.±ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰±h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj.±ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj—±h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj.±ubjI)�”}”(hŒnew_ns”h]”hŒnew_ns”…”�”}”(hj¤±h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj.±ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjޝubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjU¯h²hh³jg¯h´K�ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjQ¯h²hh³jg¯h´K�ubah}”(h]”jL¯ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jg¯h´K�hjN¯h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ%rename symlink in object's directory.”h]”hŒ'rename symlink in object’s directory.”…”�”}”(hjαh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´K�hj˱h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjN¯h²hh³jg¯h´K�ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jæ±jšjæ±j›‰jœ‰j�‰uh1jh²hhjñ„h³Nh´NubjŸ)�”}”(hXp**Parameters** ``struct kobject *kobj`` object we're acting for. ``struct kobject *targ`` object we're pointing to. ``const char *old`` previous name of the symlink. ``const char *new`` new name of the symlink. ``const struct ns_common *new_ns`` new namespace of the symlink. **Description** A helper function for the common rename symlink idiom.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjð±h]”hŒ Parameters”…”�”}”(hjò±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjî±ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´K¡hjê±ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ2``struct kobject *kobj`` object we're acting for. ”h]”(jÊ)�”}”(hŒ``struct kobject *kobj``”h]”jÐ)�”}”(hj²h]”hŒstruct kobject *kobj”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj ²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´Kžhj ²ubjæ)�”}”(hhh]”hÌ)�”}”(hŒobject we're acting for.”h]”hŒobject we’re acting for.”…”�”}”(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Œ3``struct kobject *targ`` object we're pointing to. ”h]”(jÊ)�”}”(hŒ``struct kobject *targ``”h]”jÐ)�”}”(hjH²h]”hŒstruct kobject *targ”…”�”}”(hjJ²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjF²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´KŸhjB²ubjæ)�”}”(hhh]”hÌ)�”}”(hŒobject we're pointing to.”h]”hŒobject we’re pointing to.”…”�”}”(hja²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j]²h´KŸhj^²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjB²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j]²h´KŸhj²ubjÄ)�”}”(hŒ2``const char *old`` previous name of the symlink. ”h]”(jÊ)�”}”(hŒ``const char *old``”h]”jÐ)�”}”(hj�²h]”hŒconst char *old”…”�”}”(hjƒ²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´K hj{²ubjæ)�”}”(hhh]”hÌ)�”}”(hŒprevious name of the symlink.”h]”hŒprevious name of the symlink.”…”�”}”(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Œ-``const char *new`` new name of the symlink. ”h]”(jÊ)�”}”(hŒ``const char *new``”h]”jÐ)�”}”(hjº²h]”hŒconst char *new”…”�”}”(hj¼²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¸²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´K¡hj´²ubjæ)�”}”(hhh]”hÌ)�”}”(hŒnew name of the symlink.”h]”hŒnew name of the symlink.”…”�”}”(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ŒA``const struct ns_common *new_ns`` new namespace of the symlink. ”h]”(jÊ)�”}”(hŒ"``const struct ns_common *new_ns``”h]”jÐ)�”}”(hjó²h]”hŒconst struct ns_common *new_ns”…”�”}”(hjõ²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjñ²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´K¢hjí²ubjæ)�”}”(hhh]”hÌ)�”}”(hŒnew namespace of the symlink.”h]”hŒnew namespace of the symlink.”…”�”}”(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²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjê±ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj.³h]”hŒ Description”…”�”}”(hj0³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj,³ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´K¤hjê±ubjÁ™)�”}”(hŒ6A helper function for the common rename symlink idiom.”h]”hÌ)�”}”(hjF³h]”hŒ6A helper function for the common rename symlink idiom.”…”�”}”(hjH³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´K£hjD³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀ™h³jU³h´K£hjê±ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjñ„h²hh³Nh´Nubeh}”(h]”Œ+the-filesystem-for-exporting-kernel-objects”ah ]”h"]”Œ+the filesystem for exporting kernel objects”ah$]”h&]”uh1hµhh·h²hh³hÊh´K„ubh¶)�”}”(hhh]”(h»)�”}”(hŒThe debugfs filesystem”h]”hŒThe debugfs filesystem”…”�”}”(hjn³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjk³h²hh³hÊh´K�ubh¶)�”}”(hhh]”(h»)�”}”(hŒdebugfs interface”h]”hŒdebugfs interface”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj|³h²hh³hÊh´K�ubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdebugfs_lookup (C function)”Œc.debugfs_lookup”hNt”auh1hýhj|³h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒHstruct dentry * debugfs_lookup (const char *name, struct dentry *parent)”h]”j)�”}”(hŒFstruct dentry *debugfs_lookup(const char *name, struct dentry *parent)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¦³h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¢³h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´MNubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´³h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¢³h²hh³j³³h´MNubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjųh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj³ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jdzŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒdebugfs_lookup”sbŒc.debugfs_lookup”†”asbuh1hhj¢³h²hh³j³³h´MNubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ³h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¢³h²hh³j³³h´MNubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjô³h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¢³h²hh³j³³h´MNubjC)�”}”(hŒdebugfs_lookup”h]”jI)�”}”(hjã³h]”hŒdebugfs_lookup”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj´ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj¢³h²hh³j³³h´MNubj=)�”}”(hŒ)(const char *name, struct dentry *parent)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj ´h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj´ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-´h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj´ubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj;´h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj´ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI´h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj´ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjW´h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj´ubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hjd´h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj´ubjC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj}´h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjy´ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ´h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjy´ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj›´h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj˜´ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j�´Œmodname”NŒ classname”Njj )�”}”j ]”j᳌c.debugfs_lookup”†”asbuh1hhjy´ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹´h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjy´ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÇ´h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjy´ubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjÔ´h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjy´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj´ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj¢³h²hh³j³³h´MNubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjž³h²hh³j³³h´MNubah}”(h]”j™³ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j³³h´MNhj›³h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ look up an existing debugfs file”h]”hŒ look up an existing debugfs file”…”�”}”(hjþ´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´MNhjû´h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj›³h²hh³j³³h´MNubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jµjšjµj›‰jœ‰j�‰uh1jh²hhj|³h³Nh´NubjŸ)�”}”(hXê**Parameters** ``const char *name`` a pointer to a string containing the name of the file to look up. ``struct dentry *parent`` a pointer to the parent dentry of the file. **Description** This function will return a pointer to a dentry if it succeeds. If the file doesn't exist or an error occurs, ``NULL`` will be returned. The returned dentry must be passed to dput() when it is no longer needed. If debugfs is not enabled in the kernel, the value -``ENODEV`` will be returned.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj µh]”hŒ Parameters”…”�”}”(hj"µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjµubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´MRhjµubj¿)�”}”(hhh]”(jÄ)�”}”(hŒW``const char *name`` a pointer to a string containing the name of the file to look up. ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hj?µh]”hŒconst char *name”…”�”}”(hjAµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj=µubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´MOhj9µubjæ)�”}”(hhh]”hÌ)�”}”(hŒAa pointer to a string containing the name of the file to look up.”h]”hŒAa pointer to a string containing the name of the file to look up.”…”�”}”(hjXµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jTµh´MOhjUµubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj9µubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jTµh´MOhj6µubjÄ)�”}”(hŒF``struct dentry *parent`` a pointer to the parent dentry of the file. ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hjxµh]”hŒstruct dentry *parent”…”�”}”(hjzµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjvµubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´MPhjrµubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+a pointer to the parent dentry of the file.”h]”hŒ+a pointer to the parent dentry of the file.”…”�”}”(hj‘µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�µh´MPhj޵ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjrµubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j�µh´MPhj6µubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjµubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj³µh]”hŒ Description”…”�”}”(hjµµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj±µubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´MRhjµubhÌ)�”}”(hŒÔThis function will return a pointer to a dentry if it succeeds. If the file doesn't exist or an error occurs, ``NULL`` will be returned. The returned dentry must be passed to dput() when it is no longer needed.”h]”(hŒqThis function will return a pointer to a dentry if it succeeds. If the file doesn’t exist or an error occurs, ”…”�”}”(hjɵh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjѵh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjɵubhŒ] will be returned. The returned dentry must be passed to dput() when it is no longer needed.”…”�”}”(hjɵh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´MQhjµubhÌ)�”}”(hŒPIf debugfs is not enabled in the kernel, the value -``ENODEV`` will be returned.”h]”(hŒ4If debugfs is not enabled in the kernel, the value -”…”�”}”(hjêµh²hh³Nh´NubjÐ)�”}”(hŒ ``ENODEV``”h]”hŒENODEV”…”�”}”(hjòµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjêµubhŒ will be returned.”…”�”}”(hjêµh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´MUhjµubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj|³h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ'debugfs_create_file_unsafe (C function)”Œc.debugfs_create_file_unsafe”hNt”auh1hýhj|³h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ’struct dentry * debugfs_create_file_unsafe (const char *name, umode_t mode, struct dentry *parent, void *data, const struct file_operations *fops)”h]”j)�”}”(hŒ�struct dentry *debugfs_create_file_unsafe(const char *name, umode_t mode, struct dentry *parent, void *data, const struct file_operations *fops)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj+¶h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj'¶h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Máubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9¶h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj'¶h²hh³j8¶h´Máubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjJ¶h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjG¶ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jL¶Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒdebugfs_create_file_unsafe”sbŒc.debugfs_create_file_unsafe”†”asbuh1hhj'¶h²hh³j8¶h´Máubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjk¶h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj'¶h²hh³j8¶h´Máubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjy¶h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj'¶h²hh³j8¶h´MáubjC)�”}”(hŒdebugfs_create_file_unsafe”h]”jI)�”}”(hjh¶h]”hŒdebugfs_create_file_unsafe”…”�”}”(hjжh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj†¶ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj'¶h²hh³j8¶h´Máubj=)�”}”(hŒg(const char *name, umode_t mode, struct dentry *parent, void *data, const struct file_operations *fops)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj¥¶h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¡¶ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²¶h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¡¶ubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÀ¶h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¡¶ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjζh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¡¶ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjܶh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¡¶ubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hjé¶h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¡¶ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj�¶ubjC)�”}”(hŒ umode_t mode”h]”(h)�”}”(hhh]”jI)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj·ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j·Œmodname”NŒ classname”Njj )�”}”j ]”jf¶Œc.debugfs_create_file_unsafe”†”asbuh1hhjþ¶ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#·h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjþ¶ubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj1·h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjþ¶ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj�¶ubjC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjJ·h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjF·ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW·h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjF·ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjh·h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhje·ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jj·Œmodname”NŒ classname”Njj )�”}”j ]”jf¶Œc.debugfs_create_file_unsafe”†”asbuh1hhjF·ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†·h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjF·ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj”·h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjF·ubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hj¡·h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjF·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj�¶ubjC)�”}”(hŒ void *data”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjº·h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¶·ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈ·h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¶·ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÖ·h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¶·ubjI)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjã·h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¶·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj�¶ubjC)�”}”(hŒ"const struct file_operations *fops”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjü·h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjø·ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ¸h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjø·ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjø·ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$¸h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjø·ubh)�”}”(hhh]”jI)�”}”(hŒfile_operations”h]”hŒfile_operations”…”�”}”(hj5¸h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj2¸ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j7¸Œmodname”NŒ classname”Njj )�”}”j ]”jf¶Œc.debugfs_create_file_unsafe”†”asbuh1hhjø·ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS¸h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjø·ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hja¸h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjø·ubjI)�”}”(hŒfops”h]”hŒfops”…”�”}”(hjn¸h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjø·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj�¶ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj'¶h²hh³j8¶h´Máubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj#¶h²hh³j8¶h´Máubah}”(h]”j¶ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j8¶h´Máhj ¶h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ'create a file in the debugfs filesystem”h]”hŒ'create a file in the debugfs filesystem”…”�”}”(hj˜¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Máhj•¸h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj ¶h²hh³j8¶h´Máubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j°¸jšj°¸j›‰jœ‰j�‰uh1jh²hhj|³h³Nh´NubjŸ)�”}”(hX¾**Parameters** ``const char *name`` a pointer to a string containing the name of the file to create. ``umode_t mode`` the permission that the file should have. ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is NULL, then the file will be created in the root of the debugfs filesystem. ``void *data`` a pointer to something that the caller will want to get to later on. The inode.i_private pointer will point to this value on the open() call. ``const struct file_operations *fops`` a pointer to a struct file_operations that should be used for this file. **Description** debugfs_create_file_unsafe() is completely analogous to debugfs_create_file(), the only difference being that the fops handed it will not get protected against file removals by the debugfs core. It is your responsibility to protect your struct file_operation methods against file removals by means of debugfs_file_get() and debugfs_file_put(). ->open() is still protected by debugfs though. Any struct file_operations defined by means of DEFINE_DEBUGFS_ATTRIBUTE() is protected against file removals and thus, may be used here.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjº¸h]”hŒ Parameters”…”�”}”(hj¼¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¸¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Måhj´¸ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒV``const char *name`` a pointer to a string containing the name of the file to create. ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hjÙ¸h]”hŒconst char *name”…”�”}”(hjÛ¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj׸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´MâhjÓ¸ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ@a pointer to a string containing the name of the file to create.”h]”hŒ@a pointer to a string containing the name of the file to create.”…”�”}”(hjò¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jî¸h´Mâhjï¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÓ¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jî¸h´MâhjиubjÄ)�”}”(hŒ;``umode_t mode`` the permission that the file should have. ”h]”(jÊ)�”}”(hŒ``umode_t mode``”h]”jÐ)�”}”(hj¹h]”hŒ umode_t mode”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mãhj ¹ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ)the permission that the file should have.”h]”hŒ)the permission that the file should have.”…”�”}”(hj+¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j'¹h´Mãhj(¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj ¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j'¹h´MãhjиubjÄ)�”}”(hŒÔ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is NULL, then the file will be created in the root of the debugfs filesystem. ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hjK¹h]”hŒstruct dentry *parent”…”�”}”(hjM¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjI¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´MæhjE¹ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ¹a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is NULL, then the file will be created in the root of the debugfs filesystem.”h]”hŒ¹a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is NULL, then the file will be created in the root of the debugfs filesystem.”…”�”}”(hjd¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mähja¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjE¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j`¹h´MæhjиubjÄ)�”}”(hŒž``void *data`` a pointer to something that the caller will want to get to later on. The inode.i_private pointer will point to this value on the open() call. ”h]”(jÊ)�”}”(hŒ``void *data``”h]”jÐ)�”}”(hj…¹h]”hŒ void *data”…”�”}”(hj‡¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjƒ¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Méhj¹ubjæ)�”}”(hhh]”hÌ)�”}”(hŒŽa pointer to something that the caller will want to get to later on. The inode.i_private pointer will point to this value on the open() call.”h]”hŒŽa pointer to something that the caller will want to get to later on. The inode.i_private pointer will point to this value on the open() call.”…”�”}”(hjž¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mçhj›¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jš¹h´MéhjиubjÄ)�”}”(hŒp``const struct file_operations *fops`` a pointer to a struct file_operations that should be used for this file. ”h]”(jÊ)�”}”(hŒ&``const struct file_operations *fops``”h]”jÐ)�”}”(hj¿¹h]”hŒ"const struct file_operations *fops”…”�”}”(hjÁ¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj½¹uba•h}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mëhj¹¹ubjæ)�”}”(hhh]”hÌ)�”}”(hŒHa pointer to a struct file_operations that should be used for this file.”h]”hŒHa pointer to a struct file_operations that should be used for this file.”…”�”}”(hjعh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´MêhjÕ¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¹¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÔ¹h´Mëhjиubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj´¸ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjû¹h]”hŒ Description”…”�”}”(hjý¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjù¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Míhj´¸ubhÌ)�”}”(hŒÂdebugfs_create_file_unsafe() is completely analogous to debugfs_create_file(), the only difference being that the fops handed it will not get protected against file removals by the debugfs core.”h]”hŒÂdebugfs_create_file_unsafe() is completely analogous to debugfs_create_file(), the only difference being that the fops handed it will not get protected against file removals by the debugfs core.”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mìhj´¸ubhÌ)�”}”(hŒÃIt is your responsibility to protect your struct file_operation methods against file removals by means of debugfs_file_get() and debugfs_file_put(). ->open() is still protected by debugfs though.”h]”hŒÃIt is your responsibility to protect your struct file_operation methods against file removals by means of debugfs_file_get() and debugfs_file_put(). ->open() is still protected by debugfs though.”…”�”}”(hj ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mñhj´¸ubhÌ)�”}”(hŒˆAny struct file_operations defined by means of DEFINE_DEBUGFS_ATTRIBUTE() is protected against file removals and thus, may be used here.”h]”hŒˆAny struct file_operations defined by means of DEFINE_DEBUGFS_ATTRIBUTE() is protected against file removals and thus, may be used here.”…”�”}”(hj/ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Möhj´¸ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj|³h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ%debugfs_create_file_size (C function)”Œc.debugfs_create_file_size”hNt”auh1hýhj|³h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ—void debugfs_create_file_size (const char *name, umode_t mode, struct dentry *parent, void *data, const struct file_operations *fops, loff_t file_size)”h]”j)�”}”(hŒ–void debugfs_create_file_size(const char *name, umode_t mode, struct dentry *parent, void *data, const struct file_operations *fops, loff_t file_size)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj^ºh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjZºh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmºh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjZºh²hh³jlºh´MubjC)�”}”(hŒdebugfs_create_file_size”h]”jI)�”}”(hŒdebugfs_create_file_size”h]”hŒdebugfs_create_file_size”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj{ºubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjZºh²hh³jlºh´Mubj=)�”}”(hŒy(const char *name, umode_t mode, struct dentry *parent, void *data, const struct file_operations *fops, loff_t file_size)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj›ºh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj—ºubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨ºh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj—ºubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj¶ºh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj—ºubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjĺh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj—ºubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÒºh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj—ºubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hjߺh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj—ºubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj“ºubjC)�”}”(hŒ umode_t mode”h]”(h)�”}”(hhh]”jI)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hjûºh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjøºubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jýºŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj�ºsbŒc.debugfs_create_file_size”†”asbuh1hhjôºubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjôºubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj)»h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjôºubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj“ºubjC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjB»h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj>»ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO»h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj>»ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj`»h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj]»ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jb»Œmodname”NŒ classname”Njj )�”}”j ]”j»Œc.debugfs_create_file_size”†”asbuh1hhj>»ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~»h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj>»ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjŒ»h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj>»ubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hj™»h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj>»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj“ºubjC)�”}”(hŒ void *data”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj²»h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj®»ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀ»h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj®»ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjλh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj®»ubjI)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjÛ»h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj®»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj“ºubjC)�”}”(hŒ"const struct file_operations *fops”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjô»h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjð»ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjð»ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjð»ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjð»ubh)�”}”(hhh]”jI)�”}”(hŒfile_operations”h]”hŒfile_operations”…”�”}”(hj-¼h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj*¼ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j/¼Œmodname”NŒ classname”Njj )�”}”j ]”j»Œc.debugfs_create_file_size”†”asbuh1hhjð»ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjK¼h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjð»ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjY¼h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjð»ubjI)�”}”(hŒfops”h]”hŒfops”…”�”}”(hjf¼h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjð»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj“ºubjC)�”}”(hŒloff_t file_size”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hj‚¼h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¼ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j„¼Œmodname”NŒ classname”Njj )�”}”j ]”j»Œc.debugfs_create_file_size”†”asbuh1hhj{¼ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ¼h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj{¼ubjI)�”}”(hŒ file_size”h]”hŒ file_size”…”�”}”(hj®¼h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj{¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj“ºubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjZºh²hh³jlºh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjVºh²hh³jlºh´Mubah}”(h]”jQºah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jlºh´MhjSºh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ'create a file in the debugfs filesystem”h]”hŒ'create a file in the debugfs filesystem”…”�”}”(hjؼh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´MhjÕ¼h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjSºh²hh³jlºh´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jð¼jšjð¼j›‰jœ‰j�‰uh1jh²hhj|³h³Nh´NubjŸ)�”}”(hXÆ**Parameters** ``const char *name`` a pointer to a string containing the name of the file to create. ``umode_t mode`` the permission that the file should have. ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is NULL, then the file will be created in the root of the debugfs filesystem. ``void *data`` a pointer to something that the caller will want to get to later on. The inode.i_private pointer will point to this value on the open() call. ``const struct file_operations *fops`` a pointer to a struct file_operations that should be used for this file. ``loff_t file_size`` initial file size **Description** This is the basic "create a file" function for debugfs. It allows for a wide range of flexibility in creating a file, or a directory (if you want to create a directory, the debugfs_create_dir() function is recommended to be used instead.)”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjú¼h]”hŒ Parameters”…”�”}”(hjü¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjø¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M hjô¼ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒV``const char *name`` a pointer to a string containing the name of the file to create. ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hj½h]”hŒconst char *name”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mhj½ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ@a pointer to a string containing the name of the file to create.”h]”hŒ@a pointer to a string containing the name of the file to create.”…”�”}”(hj2½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j.½h´Mhj/½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j.½h´Mhj½ubjÄ)�”}”(hŒ;``umode_t mode`` the permission that the file should have. ”h]”(jÊ)�”}”(hŒ``umode_t mode``”h]”jÐ)�”}”(hjR½h]”hŒ umode_t mode”…”�”}”(hjT½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjP½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M hjL½ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ)the permission that the file should have.”h]”hŒ)the permission that the file should have.”…”�”}”(hjk½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jg½h´M hjh½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjL½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jg½h´M hj½ubjÄ)�”}”(hŒÔ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is NULL, then the file will be created in the root of the debugfs filesystem. ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hj‹½h]”hŒstruct dentry *parent”…”�”}”(hj�½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj‰½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M hj…½ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ¹a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is NULL, then the file will be created in the root of the debugfs filesystem.”h]”hŒ¹a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is NULL, then the file will be created in the root of the debugfs filesystem.”…”�”}”(hj¤½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M hj¡½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj…½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j ½h´M hj½ubjÄ)�”}”(hŒž``void *data`` a pointer to something that the caller will want to get to later on. The inode.i_private pointer will point to this value on the open() call. ”h]”(jÊ)�”}”(hŒ``void *data``”h]”jÐ)�”}”(hjŽh]”hŒ void *data”…”�”}”(hjǽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjýubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mhj¿½ubjæ)�”}”(hhh]”hÌ)�”}”(hŒŽa pointer to something that the caller will want to get to later on. The inode.i_private pointer will point to this value on the open() call.”h]”hŒŽa pointer to something that the caller will want to get to later on. The inode.i_private pointer will point to this value on the open() call.”…”�”}”(hjÞ½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M hjÛ½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¿½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÚ½h´Mhj½ubjÄ)�”}”(hŒp``const struct file_operations *fops`` a pointer to a struct file_operations that should be used for this file. ”h]”(jÊ)�”}”(hŒ&``const struct file_operations *fops``”h]”jÐ)�”}”(hjÿ½h]”hŒ"const struct file_operations *fops”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjý½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mhjù½ubjæ)�”}”(hhh]”hÌ)�”}”(hŒHa pointer to a struct file_operations that should be used for this file.”h]”hŒHa pointer to a struct file_operations that should be used for this file.”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mhj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjù½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¾h´Mhj½ubjÄ)�”}”(hŒ'``loff_t file_size`` initial file size ”h]”(jÊ)�”}”(hŒ``loff_t file_size``”h]”jÐ)�”}”(hj9¾h]”hŒloff_t file_size”…”�”}”(hj;¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj7¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mhj3¾ubjæ)�”}”(hhh]”hÌ)�”}”(hŒinitial file size”h]”hŒinitial file size”…”�”}”(hjR¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jN¾h´MhjO¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj3¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jN¾h´Mhj½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjô¼ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjt¾h]”hŒ Description”…”�”}”(hjv¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjr¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mhjô¼ubhÌ)�”}”(hŒïThis is the basic "create a file" function for debugfs. It allows for a wide range of flexibility in creating a file, or a directory (if you want to create a directory, the debugfs_create_dir() function is recommended to be used instead.)”h]”hŒóThis is the basic “create a fileâ€� function for debugfs. It allows for a wide range of flexibility in creating a file, or a directory (if you want to create a directory, the debugfs_create_dir() function is recommended to be used instead.)”…”�”}”(hjоh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mhjô¼ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj|³h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdebugfs_create_dir (C function)”Œc.debugfs_create_dir”hNt”auh1hýhj|³h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒLstruct dentry * debugfs_create_dir (const char *name, struct dentry *parent)”h]”j)�”}”(hŒJstruct dentry *debugfs_create_dir(const char *name, struct dentry *parent)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¹¾h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjµ¾h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M&ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjǾh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjµ¾h²hh³jƾh´M&ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjؾh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÕ¾ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÚ¾Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒdebugfs_create_dir”sbŒc.debugfs_create_dir”†”asbuh1hhjµ¾h²hh³jƾh´M&ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù¾h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjµ¾h²hh³jƾh´M&ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjµ¾h²hh³jƾh´M&ubjC)�”}”(hŒdebugfs_create_dir”h]”jI)�”}”(hjö¾h]”hŒdebugfs_create_dir”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¿ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjµ¾h²hh³jƾh´M&ubj=)�”}”(hŒ)(const char *name, struct dentry *parent)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj3¿h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj/¿ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@¿h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj/¿ubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjN¿h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj/¿ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\¿h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj/¿ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjj¿h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj/¿ubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hjw¿h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj/¿ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj+¿ubjC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj�¿h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjŒ¿ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�¿h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjŒ¿ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj®¿h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj«¿ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j°¿Œmodname”NŒ classname”Njj )�”}”j ]”jô¾Œc.debugfs_create_dir”†”asbuh1hhjŒ¿ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌ¿h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjŒ¿ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÚ¿h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjŒ¿ubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjç¿h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŒ¿ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj+¿ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjµ¾h²hh³jƾh´M&ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj±¾h²hh³jƾh´M&ubah}”(h]”j¬¾ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jƾh´M&hj®¾h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ,create a directory in the debugfs filesystem”h]”hŒ,create a directory in the debugfs filesystem”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M&hjÀh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj®¾h²hh³jƾh´M&ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j)Àjšj)Àj›‰jœ‰j�‰uh1jh²hhj|³h³Nh´NubjŸ)�”}”(hXF**Parameters** ``const char *name`` a pointer to a string containing the name of the directory to create. ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is NULL, then the directory will be created in the root of the debugfs filesystem. **Description** This function creates a directory in debugfs with the given name. This function will return a pointer to a dentry if it succeeds. This pointer must be passed to the debugfs_remove() function when the file is to be removed (no automatic cleanup happens if your module is unloaded, you are responsible here.) If an error occurs, ERR_PTR(-ERROR) will be returned. If debugfs is not enabled in the kernel, the value -``ENODEV`` will be returned. **NOTE** it's expected that most callers should _ignore_ the errors returned by this function. Other debugfs functions handle the fact that the "dentry" passed to them could be an error and they don't crash in that case. Drivers should generally work fine even if debugfs fails to init anyway.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj3Àh]”hŒ Parameters”…”�”}”(hj5Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj1Àubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M*hj-Àubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ[``const char *name`` a pointer to a string containing the name of the directory to create. ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hjRÀh]”hŒconst char *name”…”�”}”(hjTÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjPÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M(hjLÀubjæ)�”}”(hhh]”hÌ)�”}”(hŒEa pointer to a string containing the name of the directory to create.”h]”hŒEa pointer to a string containing the name of the directory to create.”…”�”}”(hjkÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M'hjhÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjLÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jgÀh´M(hjIÀubjÄ)�”}”(hŒÙ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is NULL, then the directory will be created in the root of the debugfs filesystem. ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hjŒÀh]”hŒstruct dentry *parent”…”�”}”(hjŽÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjŠÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M+hj†Àubjæ)�”}”(hhh]”hÌ)�”}”(hŒ¾a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is NULL, then the directory will be created in the root of the debugfs filesystem.”h]”hŒ¾a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is NULL, then the directory will be created in the root of the debugfs filesystem.”…”�”}”(hj¥Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M)hj¢Àubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj†Àubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¡Àh´M+hjIÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj-ÀubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÈÀh]”hŒ Description”…”�”}”(hjÊÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÆÀubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M-hj-ÀubhÌ)�”}”(hŒAThis function creates a directory in debugfs with the given name.”h]”hŒAThis function creates a directory in debugfs with the given name.”…”�”}”(hjÞÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M,hj-ÀubhÌ)�”}”(hX(This function will return a pointer to a dentry if it succeeds. This pointer must be passed to the debugfs_remove() function when the file is to be removed (no automatic cleanup happens if your module is unloaded, you are responsible here.) If an error occurs, ERR_PTR(-ERROR) will be returned.”h]”hX(This function will return a pointer to a dentry if it succeeds. This pointer must be passed to the debugfs_remove() function when the file is to be removed (no automatic cleanup happens if your module is unloaded, you are responsible here.) If an error occurs, ERR_PTR(-ERROR) will be returned.”…”�”}”(hjíÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M.hj-ÀubhÌ)�”}”(hŒPIf debugfs is not enabled in the kernel, the value -``ENODEV`` will be returned.”h]”(hŒ4If debugfs is not enabled in the kernel, the value -”…”�”}”(hjüÀh²hh³Nh´NubjÐ)�”}”(hŒ ``ENODEV``”h]”hŒENODEV”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjüÀubhŒ will be returned.”…”�”}”(hjüÀh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M4hj-ÀubhÌ)�”}”(hŒ**NOTE**”h]”j©)�”}”(hjÁh]”hŒNOTE”…”�”}”(hj!Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M7hj-ÀubhÌ)�”}”(hXit's expected that most callers should _ignore_ the errors returned by this function. Other debugfs functions handle the fact that the "dentry" passed to them could be an error and they don't crash in that case. Drivers should generally work fine even if debugfs fails to init anyway.”h]”hX$it’s expected that most callers should _ignore_ the errors returned by this function. Other debugfs functions handle the fact that the “dentryâ€� passed to them could be an error and they don’t crash in that case. Drivers should generally work fine even if debugfs fails to init anyway.”…”�”}”(hj5Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M8hj-Àubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj|³h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ%debugfs_create_automount (C function)”Œc.debugfs_create_automount”hNt”auh1hýhj|³h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒustruct dentry * debugfs_create_automount (const char *name, struct dentry *parent, debugfs_automount_t f, void *data)”h]”j)�”}”(hŒsstruct dentry *debugfs_create_automount(const char *name, struct dentry *parent, debugfs_automount_t f, void *data)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjdÁh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj`Áh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´MZubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrÁh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj`Áh²hh³jqÁh´MZubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjƒÁh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj€Áubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j…ÁŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒdebugfs_create_automount”sbŒc.debugfs_create_automount”†”asbuh1hhj`Áh²hh³jqÁh´MZubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤Áh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj`Áh²hh³jqÁh´MZubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj²Áh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj`Áh²hh³jqÁh´MZubjC)�”}”(hŒdebugfs_create_automount”h]”jI)�”}”(hj¡Áh]”hŒdebugfs_create_automount”…”�”}”(hjÃÁh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¿Áubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj`Áh²hh³jqÁh´MZubj=)�”}”(hŒL(const char *name, struct dentry *parent, debugfs_automount_t f, void *data)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjÞÁh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÚÁubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëÁh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÚÁubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjùÁh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÚÁubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÚÁubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÚÁubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj"Âh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÚÁubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÖÁubjC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj;Âh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj7Âubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHÂh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj7Âubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjYÂh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjVÂubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j[ÂŒmodname”NŒ classname”Njj )�”}”j ]”jŸÁŒc.debugfs_create_automount”†”asbuh1hhj7Âubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwÂh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj7Âubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj…Âh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj7ÂubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hj’Âh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj7Âubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÖÁubjC)�”}”(hŒdebugfs_automount_t f”h]”(h)�”}”(hhh]”jI)�”}”(hŒdebugfs_automount_t”h]”hŒdebugfs_automount_t”…”�”}”(hj®Âh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj«Âubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j°ÂŒmodname”NŒ classname”Njj )�”}”j ]”jŸÁŒc.debugfs_create_automount”†”asbuh1hhj§Âubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌÂh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj§ÂubjI)�”}”(hjph]”hŒf”…”�”}”(hjÚÂh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj§Âubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÖÁubjC)�”}”(hŒ void *data”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjòÂh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjîÂubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjîÂubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjîÂubjI)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjîÂubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÖÁubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj`Áh²hh³jqÁh´MZubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj\Áh²hh³jqÁh´MZubah}”(h]”jWÁah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jqÁh´MZhjYÁh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ0create automount point in the debugfs filesystem”h]”hŒ0create automount point in the debugfs filesystem”…”�”}”(hjEÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´MZhjBÃh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjYÁh²hh³jqÁh´MZubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j]Ãjšj]Ãj›‰jœ‰j�‰uh1jh²hhj|³h³Nh´NubjŸ)�”}”(hX**Parameters** ``const char *name`` a pointer to a string containing the name of the file to create. ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is NULL, then the file will be created in the root of the debugfs filesystem. ``debugfs_automount_t f`` function to be called when pathname resolution steps on that one. ``void *data`` opaque argument to pass to f(). **Description** **f** should return what ->d_automount() would.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjgÃh]”hŒ Parameters”…”�”}”(hjiÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjeÃubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M^hjaÃubj¿)�”}”(hhh]”(jÄ)�”}”(hŒV``const char *name`` a pointer to a string containing the name of the file to create. ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hj†Ãh]”hŒconst char *name”…”�”}”(hjˆÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj„Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M[hj€Ãubjæ)�”}”(hhh]”hÌ)�”}”(hŒ@a pointer to a string containing the name of the file to create.”h]”hŒ@a pointer to a string containing the name of the file to create.”…”�”}”(hjŸÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j›Ãh´M[hjœÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj€Ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j›Ãh´M[hj}ÃubjÄ)�”}”(hŒÔ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is NULL, then the file will be created in the root of the debugfs filesystem. ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hj¿Ãh]”hŒstruct dentry *parent”…”�”}”(hjÁÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj½Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M^hj¹Ãubjæ)�”}”(hhh]”hÌ)�”}”(hŒ¹a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is NULL, then the file will be created in the root of the debugfs filesystem.”h]”hŒ¹a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is NULL, then the file will be created in the root of the debugfs filesystem.”…”�”}”(hjØÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M\hjÕÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¹Ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÔÃh´M^hj}ÃubjÄ)�”}”(hŒ\``debugfs_automount_t f`` function to be called when pathname resolution steps on that one. ”h]”(jÊ)�”}”(hŒ``debugfs_automount_t f``”h]”jÐ)�”}”(hjùÃh]”hŒdebugfs_automount_t f”…”�”}”(hjûÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj÷Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M_hjóÃubjæ)�”}”(hhh]”hÌ)�”}”(hŒAfunction to be called when pathname resolution steps on that one.”h]”hŒAfunction to be called when pathname resolution steps on that one.”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÄh´M_hjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjóÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÄh´M_hj}ÃubjÄ)�”}”(hŒ/``void *data`` opaque argument to pass to f(). ”h]”(jÊ)�”}”(hŒ``void *data``”h]”jÐ)�”}”(hj2Äh]”hŒ void *data”…”�”}”(hj4Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj0Äubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M`hj,Äubjæ)�”}”(hhh]”hÌ)�”}”(hŒopaque argument to pass to f().”h]”hŒopaque argument to pass to f().”…”�”}”(hjKÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jGÄh´M`hjHÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj,Äubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jGÄh´M`hj}Ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjaÃubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjmÄh]”hŒ Description”…”�”}”(hjoÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjkÄubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´MbhjaÃubhÌ)�”}”(hŒ/**f** should return what ->d_automount() would.”h]”(j©)�”}”(hŒ**f**”h]”hŒf”…”�”}”(hj‡Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjƒÄubhŒ* should return what ->d_automount() would.”…”�”}”(hjƒÄh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´MahjaÃubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj|³h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ#debugfs_create_symlink (C function)”Œc.debugfs_create_symlink”hNt”auh1hýhj|³h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒdstruct dentry * debugfs_create_symlink (const char *name, struct dentry *parent, const char *target)”h]”j)�”}”(hŒbstruct dentry *debugfs_create_symlink(const char *name, struct dentry *parent, const char *target)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÀÄh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¼Äh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M„ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎÄh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¼Äh²hh³jÍÄh´M„ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjßÄh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÜÄubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jáÄŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒdebugfs_create_symlink”sbŒc.debugfs_create_symlink”†”asbuh1hhj¼Äh²hh³jÍÄh´M„ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¼Äh²hh³jÍÄh´M„ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¼Äh²hh³jÍÄh´M„ubjC)�”}”(hŒdebugfs_create_symlink”h]”jI)�”}”(hjýÄh]”hŒdebugfs_create_symlink”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÅubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj¼Äh²hh³jÍÄh´M„ubj=)�”}”(hŒ=(const char *name, struct dentry *parent, const char *target)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj:Åh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj6Åubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGÅh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj6Åubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjUÅh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj6Åubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcÅh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj6Åubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjqÅh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj6ÅubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj~Åh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj6Åubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj2ÅubjC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj—Åh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj“Åubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤Åh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj“Åubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjµÅh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj²Åubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j·ÅŒmodname”NŒ classname”Njj )�”}”j ]”jûÄŒc.debugfs_create_symlink”†”asbuh1hhj“Åubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓÅh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj“Åubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjáÅh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj“ÅubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjîÅh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj“Åubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj2ÅubjC)�”}”(hŒconst char *target”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÆubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÆubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj"Æh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÆubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0Æh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÆubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj>Æh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÆubjI)�”}”(hŒtarget”h]”hŒtarget”…”�”}”(hjKÆh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj2Åubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj¼Äh²hh³jÍÄh´M„ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj¸Äh²hh³jÍÄh´M„ubah}”(h]”j³Äah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÍÄh´M„hjµÄh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ0create a symbolic link in the debugfs filesystem”h]”hŒ0create a symbolic link in the debugfs filesystem”…”�”}”(hjuÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M„hjrÆh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjµÄh²hh³jÍÄh´M„ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j�Æjšj�Æj›‰jœ‰j�‰uh1jh²hhj|³h³Nh´NubjŸ)�”}”(hXÌ**Parameters** ``const char *name`` a pointer to a string containing the name of the symbolic link to create. ``struct dentry *parent`` a pointer to the parent dentry for this symbolic link. This should be a directory dentry if set. If this parameter is NULL, then the symbolic link will be created in the root of the debugfs filesystem. ``const char *target`` a pointer to a string containing the path to the target of the symbolic link. **Description** This function creates a symbolic link with the given name in debugfs that links to the given target path. This function will return a pointer to a dentry if it succeeds. This pointer must be passed to the debugfs_remove() function when the symbolic link is to be removed (no automatic cleanup happens if your module is unloaded, you are responsible here.) If an error occurs, ERR_PTR(-ERROR) will be returned. If debugfs is not enabled in the kernel, the value -``ENODEV`` will be returned.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj—Æh]”hŒ Parameters”…”�”}”(hj™Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj•Æubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mˆhj‘Æubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ_``const char *name`` a pointer to a string containing the name of the symbolic link to create. ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hj¶Æh]”hŒconst char *name”…”�”}”(hj¸Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj´Æubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M†hj°Æubjæ)�”}”(hhh]”hÌ)�”}”(hŒIa pointer to a string containing the name of the symbolic link to create.”h]”hŒIa pointer to a string containing the name of the symbolic link to create.”…”�”}”(hjÏÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M…hjÌÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj°Æubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jËÆh´M†hj­ÆubjÄ)�”}”(hŒæ``struct dentry *parent`` a pointer to the parent dentry for this symbolic link. This should be a directory dentry if set. If this parameter is NULL, then the symbolic link will be created in the root of the debugfs filesystem. ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hjðÆh]”hŒstruct dentry *parent”…”�”}”(hjòÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjîÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´MŠhjêÆubjæ)�”}”(hhh]”hÌ)�”}”(hŒËa pointer to the parent dentry for this symbolic link. This should be a directory dentry if set. If this parameter is NULL, then the symbolic link will be created in the root of the debugfs filesystem.”h]”hŒËa pointer to the parent dentry for this symbolic link. This should be a directory dentry if set. If this parameter is NULL, then the symbolic link will be created in the root of the debugfs filesystem.”…”�”}”(hj Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M‡hjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjêÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÇh´MŠhj­ÆubjÄ)�”}”(hŒe``const char *target`` a pointer to a string containing the path to the target of the symbolic link. ”h]”(jÊ)�”}”(hŒ``const char *target``”h]”jÐ)�”}”(hj*Çh]”hŒconst char *target”…”�”}”(hj,Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj(Çubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´MŒhj$Çubjæ)�”}”(hhh]”hÌ)�”}”(hŒMa pointer to a string containing the path to the target of the symbolic link.”h]”hŒMa pointer to a string containing the path to the target of the symbolic link.”…”�”}”(hjCÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M‹hj@Çubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj$Çubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j?Çh´MŒhj­Æubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj‘ÆubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjfÇh]”hŒ Description”…”�”}”(hjhÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjdÇubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´MŽhj‘ÆubhÌ)�”}”(hŒiThis function creates a symbolic link with the given name in debugfs that links to the given target path.”h]”hŒiThis function creates a symbolic link with the given name in debugfs that links to the given target path.”…”�”}”(hj|Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M�hj‘ÆubhÌ)�”}”(hX1This function will return a pointer to a dentry if it succeeds. This pointer must be passed to the debugfs_remove() function when the symbolic link is to be removed (no automatic cleanup happens if your module is unloaded, you are responsible here.) If an error occurs, ERR_PTR(-ERROR) will be returned.”h]”hX1This function will return a pointer to a dentry if it succeeds. This pointer must be passed to the debugfs_remove() function when the symbolic link is to be removed (no automatic cleanup happens if your module is unloaded, you are responsible here.) If an error occurs, ERR_PTR(-ERROR) will be returned.”…”�”}”(hj‹Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M�hj‘ÆubhÌ)�”}”(hŒPIf debugfs is not enabled in the kernel, the value -``ENODEV`` will be returned.”h]”(hŒ4If debugfs is not enabled in the kernel, the value -”…”�”}”(hjšÇh²hh³Nh´NubjÐ)�”}”(hŒ ``ENODEV``”h]”hŒENODEV”…”�”}”(hj¢Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjšÇubhŒ will be returned.”…”�”}”(hjšÇh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M–hj‘Æubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj|³h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdebugfs_remove (C function)”Œc.debugfs_remove”hNt”auh1hýhj|³h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ+void debugfs_remove (struct dentry *dentry)”h]”j)�”}”(hŒ*void debugfs_remove(struct dentry *dentry)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÛÇh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj×Çh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mþubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêÇh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj×Çh²hh³jéÇh´MþubjC)�”}”(hŒdebugfs_remove”h]”jI)�”}”(hŒdebugfs_remove”h]”hŒdebugfs_remove”…”�”}”(hjüÇh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjøÇubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj×Çh²hh³jéÇh´Mþubj=)�”}”(hŒ(struct dentry *dentry)”h]”jC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÈubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%Èh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÈubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj6Èh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj3Èubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j8ÈŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjþÇsbŒc.debugfs_remove”†”asbuh1hhjÈubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVÈh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÈubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjdÈh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÈubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjqÈh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÈubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÈubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj×Çh²hh³jéÇh´Mþubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÓÇh²hh³jéÇh´Mþubah}”(h]”jÎÇah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jéÇh´MþhjÐÇh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒrecursively removes a directory”h]”hŒrecursively removes a directory”…”�”}”(hj›Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mþhj˜Èh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÐÇh²hh³jéÇh´Mþubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j³Èjšj³Èj›‰jœ‰j�‰uh1jh²hhj|³h³Nh´NubjŸ)�”}”(hX**Parameters** ``struct dentry *dentry`` a pointer to a the dentry of the directory to be removed. If this parameter is NULL or an error value, nothing will be done. **Description** This function recursively removes a directory tree in debugfs that was previously created with a call to another debugfs function (like debugfs_create_file() or variants thereof.) This function is required to be called in order for the file to be removed, no automatic cleanup of files will happen when a module is removed, you are responsible here.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj½Èh]”hŒ Parameters”…”�”}”(hj¿Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj»Èubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mhj·Èubj¿)�”}”(hhh]”jÄ)�”}”(hŒ˜``struct dentry *dentry`` a pointer to a the dentry of the directory to be removed. If this parameter is NULL or an error value, nothing will be done. ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hjÜÈh]”hŒstruct dentry *dentry”…”�”}”(hjÞÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÚÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´MhjÖÈubjæ)�”}”(hhh]”hÌ)�”}”(hŒ}a pointer to a the dentry of the directory to be removed. If this parameter is NULL or an error value, nothing will be done.”h]”hŒ}a pointer to a the dentry of the directory to be removed. If this parameter is NULL or an error value, nothing will be done.”…”�”}”(hjõÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´MÿhjòÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÖÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jñÈh´MhjÓÈubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj·ÈubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÉh]”hŒ Description”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mhj·ÈubhÌ)�”}”(hŒ³This function recursively removes a directory tree in debugfs that was previously created with a call to another debugfs function (like debugfs_create_file() or variants thereof.)”h]”hŒ³This function recursively removes a directory tree in debugfs that was previously created with a call to another debugfs function (like debugfs_create_file() or variants thereof.)”…”�”}”(hj.Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mhj·ÈubhÌ)�”}”(hŒ©This function is required to be called in order for the file to be removed, no automatic cleanup of files will happen when a module is removed, you are responsible here.”h]”hŒ©This function is required to be called in order for the file to be removed, no automatic cleanup of files will happen when a module is removed, you are responsible here.”…”�”}”(hj=Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mhj·Èubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj|³h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ&debugfs_lookup_and_remove (C function)”Œc.debugfs_lookup_and_remove”hNt”auh1hýhj|³h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒHvoid debugfs_lookup_and_remove (const char *name, struct dentry *parent)”h]”j)�”}”(hŒGvoid debugfs_lookup_and_remove(const char *name, struct dentry *parent)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjlÉh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjhÉh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{Éh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjhÉh²hh³jzÉh´MubjC)�”}”(hŒdebugfs_lookup_and_remove”h]”jI)�”}”(hŒdebugfs_lookup_and_remove”h]”hŒdebugfs_lookup_and_remove”…”�”}”(hj�Éh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‰Éubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjhÉh²hh³jzÉh´Mubj=)�”}”(hŒ)(const char *name, struct dentry *parent)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj©Éh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¥Éubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶Éh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¥Éubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÄÉh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¥Éubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒÉh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¥Éubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjàÉh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¥ÉubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hjíÉh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¥Éubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¡ÉubjC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÊubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÊubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj$Êh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj!Êubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j&ÊŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj�ÉsbŒc.debugfs_lookup_and_remove”†”asbuh1hhjÊubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDÊh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÊubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjRÊh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÊubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hj_Êh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÊubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¡Éubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjhÉh²hh³jzÉh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjdÉh²hh³jzÉh´Mubah}”(h]”j_Éah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jzÉh´MhjaÉh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ4lookup a directory or file and recursively remove it”h]”hŒ4lookup a directory or file and recursively remove it”…”�”}”(hj‰Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mhj†Êh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjaÉh²hh³jzÉh´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j¡Êjšj¡Êj›‰jœ‰j�‰uh1jh²hhj|³h³Nh´NubjŸ)�”}”(hXf**Parameters** ``const char *name`` a pointer to a string containing the name of the item to look up. ``struct dentry *parent`` a pointer to the parent dentry of the item. **Description** This is the equlivant of doing something like debugfs_remove(debugfs_lookup(..)) but with the proper reference counting handled for the directory being looked up.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj«Êh]”hŒ Parameters”…”�”}”(hj­Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj©Êubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mhj¥Êubj¿)�”}”(hhh]”(jÄ)�”}”(hŒW``const char *name`` a pointer to a string containing the name of the item to look up. ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hjÊÊh]”hŒconst char *name”…”�”}”(hjÌÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÈÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´MhjÄÊubjæ)�”}”(hhh]”hÌ)�”}”(hŒAa pointer to a string containing the name of the item to look up.”h]”hŒAa pointer to a string containing the name of the item to look up.”…”�”}”(hjãÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jßÊh´MhjàÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÄÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jßÊh´MhjÁÊubjÄ)�”}”(hŒF``struct dentry *parent`` a pointer to the parent dentry of the item. ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hjËh]”hŒstruct dentry *parent”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjËubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´MhjýÊubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+a pointer to the parent dentry of the item.”h]”hŒ+a pointer to the parent dentry of the item.”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jËh´MhjËubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjýÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jËh´MhjÁÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj¥ÊubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj>Ëh]”hŒ Description”…”�”}”(hj@Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj<Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mhj¥ÊubhÌ)�”}”(hŒ¢This is the equlivant of doing something like debugfs_remove(debugfs_lookup(..)) but with the proper reference counting handled for the directory being looked up.”h]”hŒ¢This is the equlivant of doing something like debugfs_remove(debugfs_lookup(..)) but with the proper reference counting handled for the directory being looked up.”…”�”}”(hjTËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mhj¥Êubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj|³h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ debugfs_change_name (C function)”Œc.debugfs_change_name”hNt”auh1hýhj|³h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒFint debugfs_change_name (struct dentry *dentry, const char *fmt, ...)”h]”j)�”}”(hŒDint debugfs_change_name(struct dentry *dentry, const char *fmt, ...)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjƒËh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjËh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M,ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’Ëh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjËh²hh³j‘Ëh´M,ubjC)�”}”(hŒdebugfs_change_name”h]”jI)�”}”(hŒdebugfs_change_name”h]”hŒdebugfs_change_name”…”�”}”(hj¤Ëh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj Ëubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjËh²hh³j‘Ëh´M,ubj=)�”}”(hŒ-(struct dentry *dentry, const char *fmt, ...)”h]”(jC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÀËh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¼Ëubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍËh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¼Ëubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjÞËh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÛËubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jàËŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj¦ËsbŒc.debugfs_change_name”†”asbuh1hhj¼Ëubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþËh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¼Ëubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj Ìh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¼ËubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¼Ëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¸ËubjC)�”}”(hŒconst char *fmt”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj2Ìh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj.Ìubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?Ìh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj.Ìubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjMÌh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj.Ìubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[Ìh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj.Ìubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjiÌh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj.ÌubjI)�”}”(hŒfmt”h]”hŒfmt”…”�”}”(hjvÌh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj.Ìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¸ËubjC)�”}”(hŒ...”h]”j¯)�”}”(hj–žh]”hŒ...”…”�”}”(hj�Ìh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj‹Ìubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¸Ëubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjËh²hh³j‘Ëh´M,ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj{Ëh²hh³j‘Ëh´M,ubah}”(h]”jvËah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j‘Ëh´M,hjxËh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ1rename a file/directory in the debugfs filesystem”h]”hŒ1rename a file/directory in the debugfs filesystem”…”�”}”(hj¸Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M,hjµÌh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjxËh²hh³j‘Ëh´M,ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÐÌjšjÐÌj›‰jœ‰j�‰uh1jh²hhj|³h³Nh´NubjŸ)�”}”(hXž**Parameters** ``struct dentry *dentry`` dentry of an object to be renamed. ``const char *fmt`` format for new name ``...`` variable arguments **Description** This function renames a file/directory in debugfs. The target must not exist for rename to succeed. This function will return 0 on success and -E... on failure. If debugfs is not enabled in the kernel, the value -``ENODEV`` will be returned.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÚÌh]”hŒ Parameters”…”�”}”(hjÜÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjØÌubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M0hjÔÌubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ=``struct dentry *dentry`` dentry of an object to be renamed. ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(h•jùÌh]”hŒstruct dentry *dentry”…”�”}”(hjûÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj÷Ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M-hjóÌubjæ)�”}”(hhh]”hÌ)�”}”(hŒ"dentry of an object to be renamed.”h]”hŒ"dentry of an object to be renamed.”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÍh´M-hjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjóÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÍh´M-hjðÌubjÄ)�”}”(hŒ(``const char *fmt`` format for new name ”h]”(jÊ)�”}”(hŒ``const char *fmt``”h]”jÐ)�”}”(hj2Íh]”hŒconst char *fmt”…”�”}”(hj4Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj0Íubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M.hj,Íubjæ)�”}”(hhh]”hÌ)�”}”(hŒformat for new name”h]”hŒformat for new name”…”�”}”(hjKÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jGÍh´M.hjHÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj,Íubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jGÍh´M.hjðÌubjÄ)�”}”(hŒ``...`` variable arguments ”h]”(jÊ)�”}”(hŒ``...``”h]”jÐ)�”}”(hjkÍh]”hŒ...”…”�”}”(hjmÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjiÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´KhjeÍubjæ)�”}”(hhh]”hÌ)�”}”(hŒvariable arguments”h]”hŒvariable arguments”…”�”}”(hj„Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j€Íh´Khj�Íubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjeÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j€Íh´KhjðÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÔÌubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj¦Íh]”hŒ Description”…”�”}”(hj¨Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¤Íubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´KhjÔÌubhÌ)�”}”(hŒdThis function renames a file/directory in debugfs. The target must not exist for rename to succeed.”h]”hŒdThis function renames a file/directory in debugfs. The target must not exist for rename to succeed.”…”�”}”(hj¼Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M/hjÔÌubhÌ)�”}”(hŒah"]”h$]”h&]”uh1j1hjÎh²hh³j(Îh´MmubjC)�”}”(hŒdebugfs_initialized”h]”jI)�”}”(hŒdebugfs_initialized”h]”hŒdebugfs_initialized”…”�”}”(hj;Îh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj7Îubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÎh²hh³j(Îh´Mmubj=)�”}”(hŒ(void)”h]”jC)�”}”(hŒvoid”h]”j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjWÎh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjSÎubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjOÎubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÎh²hh³j(Îh´Mmubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÎh²hh³j(Îh´Mmubah}”(h]”jÎah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j(Îh´MmhjÎh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ)Tells whether debugfs has been registered”h]”hŒ)Tells whether debugfs has been registered”…”�”}”(hj�Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mmhj~Îh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÎh²hh³j(Îh´Mmubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j™Îjšj™Îj›‰jœ‰j�‰uh1jh²hhj|³h³Nh´NubjŸ)�”}”(hŒ'**Parameters** ``void`` no arguments”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj£Îh]”hŒ Parameters”…”�”}”(hj¥Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¡Îubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mqhj�Îubj¿)�”}”(hhh]”jÄ)�”}”(hŒ``void`` no arguments”h]”(jÊ)�”}”(hŒ``void``”h]”jÐ)�”}”(hjÂÎh]”hŒvoid”…”�”}”(hjÄÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÀÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mshj¼Îubjæ)�”}”(hhh]”hÌ)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hjÛÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´KhjØÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¼Îubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j×Îh´Mshj¹Îubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj�Îubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj|³h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdebugfs_file_get (C function)”Œc.debugfs_file_get”hNt”auh1hýhj|³h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ,int debugfs_file_get (struct dentry *dentry)”h]”j)�”}”(hŒ+int debugfs_file_get(struct dentry *dentry)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÏh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´K’ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+Ïh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÏh²hh³j*Ïh´K’ubjC)�”}”(hŒdebugfs_file_get”h]”jI)�”}”(hŒdebugfs_file_get”h]”hŒdebugfs_file_get”…”�”}”(hj=Ïh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj9Ïubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÏh²hh³j*Ïh´K’ubj=)�”}”(hŒ(struct dentry *dentry)”h]”jC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjYÏh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjUÏubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfÏh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjUÏubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjwÏh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjtÏubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jyÏŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj?ÏsbŒc.debugfs_file_get”†”asbuh1hhjUÏubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—Ïh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjUÏubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¥Ïh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjUÏubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj²Ïh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjUÏubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjQÏubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÏh²hh³j*Ïh´K’ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÏh²hh³j*Ïh´K’ubah}”(h]”jÏah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j*Ïh´K’hjÏh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ&mark the beginning of file data access”h]”hŒ&mark the beginning of file data access”…”�”}”(hjÜÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´K’hjÙÏh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÏh²hh³j*Ïh´K’ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jôÏjšjôÏj›‰jœ‰j�‰uh1jh²hhj|³h³Nh´NubjŸ)�”}”(hX«**Parameters** ``struct dentry *dentry`` the dentry object whose data is being accessed. **Description** Up to a matching call to debugfs_file_put(), any successive call into the file removing functions debugfs_remove() and debugfs_remove_recursive() will block. Since associated private file data may only get freed after a successful return of any of the removal functions, you may safely access it after a successful call to debugfs_file_get() without worrying about lifetime issues. If -``EIO`` is returned, the file has already been removed and thus, it is not safe to access any of its data. If, on the other hand, it is allowed to access the file data, zero is returned.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjþÏh]”hŒ Parameters”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjüÏubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´K–hjøÏubj¿)�”}”(hhh]”jÄ)�”}”(hŒJ``struct dentry *dentry`` the dentry object whose data is being accessed. ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hjÐh]”hŒstruct dentry *dentry”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´K“hjÐubjæ)�”}”(hhh]”hÌ)�”}”(hŒ/the dentry object whose data is being accessed.”h]”hŒ/the dentry object whose data is being accessed.”…”�”}”(hj6Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j2Ðh´K“hj3Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j2Ðh´K“hjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjøÏubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjXÐh]”hŒ Description”…”�”}”(hjZÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjVÐubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´K•hjøÏubhÌ)�”}”(hX}Up to a matching call to debugfs_file_put(), any successive call into the file removing functions debugfs_remove() and debugfs_remove_recursive() will block. Since associated private file data may only get freed after a successful return of any of the removal functions, you may safely access it after a successful call to debugfs_file_get() without worrying about lifetime issues.”h]”hX}Up to a matching call to debugfs_file_put(), any successive call into the file removing functions debugfs_remove() and debugfs_remove_recursive() will block. Since associated private file data may only get freed after a successful return of any of the removal functions, you may safely access it after a successful call to debugfs_file_get() without worrying about lifetime issues.”…”�”}”(hjnÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´K”hjøÏubhÌ)�”}”(hŒ¾If -``EIO`` is returned, the file has already been removed and thus, it is not safe to access any of its data. If, on the other hand, it is allowed to access the file data, zero is returned.”h]”(hŒIf -”…”�”}”(hj}Ðh²hh³Nh´NubjÐ)�”}”(hŒ``EIO``”h]”hŒEIO”…”�”}”(hj…Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj}ÐubhŒ³ is returned, the file has already been removed and thus, it is not safe to access any of its data. If, on the other hand, it is allowed to access the file data, zero is returned.”…”�”}”(hj}Ðh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´K›hjøÏubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj|³h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdebugfs_file_put (C function)”Œc.debugfs_file_put”hNt”auh1hýhj|³h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ-void debugfs_file_put (struct dentry *dentry)”h]”j)�”}”(hŒ,void debugfs_file_put(struct dentry *dentry)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¾Ðh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjºÐh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´K§ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍÐh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjºÐh²hh³jÌÐh´K§ubjC)�”}”(hŒdebugfs_file_put”h]”jI)�”}”(hŒdebugfs_file_put”h]”hŒdebugfs_file_put”…”�”}”(hjßÐh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÛÐubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjºÐh²hh³jÌÐh´K§ubj=)�”}”(hŒ(struct dentry *dentry)”h]”jC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjûÐh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj÷Ðubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj÷Ðubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÑubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÑŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjáÐsbŒc.debugfs_file_put”†”asbuh1hhj÷Ðubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9Ñh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj÷Ðubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjGÑh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj÷ÐubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjTÑh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj÷Ðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjóÐubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjºÐh²hh³jÌÐh´K§ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj¶Ðh²hh³jÌÐh´K§ubah}”(h]”j±Ðah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÌÐh´K§hj³Ðh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ mark the end of file data access”h]”hŒ mark the end of file data access”…”�”}”(hj~Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´K§hj{Ñh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj³Ðh²hh³jÌÐh´K§ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j–Ñjšj–Ñj›‰jœ‰j�‰uh1jh²hhj|³h³Nh´NubjŸ)�”}”(hX"**Parameters** ``struct dentry *dentry`` the dentry object formerly passed to debugfs_file_get(). **Description** Allow any ongoing concurrent call into debugfs_remove() or debugfs_remove_recursive() blocked by a former call to debugfs_file_get() to proceed and return to its caller.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj Ñh]”hŒ Parameters”…”�”}”(hj¢Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjžÑubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´K«hjšÑubj¿)�”}”(hhh]”jÄ)�”}”(hŒS``struct dentry *dentry`` the dentry object formerly passed to debugfs_file_get(). ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hj¿Ñh]”hŒstruct dentry *dentry”…”�”}”(hjÁÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj½Ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´K©hj¹Ñubjæ)�”}”(hhh]”hÌ)�”}”(hŒ8the dentry object formerly passed to debugfs_file_get().”h]”hŒ8the dentry object formerly passed to debugfs_file_get().”…”�”}”(hjØÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´K¨hjÕÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¹Ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÔÑh´K©hj¶Ñubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjšÑubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjûÑh]”hŒ Description”…”�”}”(hjýÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjùÑubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´K«hjšÑubhÌ)�”}”(hŒ©Allow any ongoing concurrent call into debugfs_remove() or debugfs_remove_recursive() blocked by a former call to debugfs_file_get() to proceed and return to its caller.”h]”hŒ©Allow any ongoing concurrent call into debugfs_remove() or debugfs_remove_recursive() blocked by a former call to debugfs_file_get() to proceed and return to its caller.”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´KªhjšÑubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj|³h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ'debugfs_enter_cancellation (C function)”Œc.debugfs_enter_cancellation”hNt”auh1hýhj|³h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ^void debugfs_enter_cancellation (struct file *file, struct debugfs_cancellation *cancellation)”h]”j)�”}”(hŒ]void debugfs_enter_cancellation(struct file *file, struct debugfs_cancellation *cancellation)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj@Òh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj<Òh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´K¹ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOÒh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj<Òh²hh³jNÒh´K¹ubjC)�”}”(hŒdebugfs_enter_cancellation”h]”jI)�”}”(hŒdebugfs_enter_cancellation”h]”hŒdebugfs_enter_cancellation”…”�”}”(hjaÒh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj]Òubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj<Òh²hh³jNÒh´K¹ubj=)�”}”(hŒ>(struct file *file, struct debugfs_cancellation *cancellation)”h]”(jC)�”}”(hŒstruct file *file”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj}Òh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjyÒubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠÒh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjyÒubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj›Òh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj˜Òubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j�ÒŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjcÒsbŒc.debugfs_enter_cancellation”†”asbuh1hhjyÒubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»Òh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjyÒubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÉÒh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjyÒubjI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjÖÒh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjyÒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjuÒubjC)�”}”(hŒ)struct debugfs_cancellation *cancellation”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjïÒh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjëÒubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüÒh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjëÒubh)�”}”(hhh]”jI)�”}”(hŒdebugfs_cancellation”h]”hŒdebugfs_cancellation”…”�”}”(hj Óh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj Óubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÓŒmodname”NŒ classname”Njj )�”}”j ]”j·ÒŒc.debugfs_enter_cancellation”†”asbuh1hhjëÒubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+Óh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjëÒubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj9Óh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjëÒubjI)�”}”(hŒ cancellation”h]”hŒ cancellation”…”�”}”(hjFÓh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjëÒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjuÒubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj<Òh²hh³jNÒh´K¹ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj8Òh²hh³jNÒh´K¹ubah}”(h]”j3Òah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jNÒh´K¹hj5Òh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒenter a debugfs cancellation”h]”hŒenter a debugfs cancellation”…”�”}”(hjpÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´K¹hjmÓh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj5Òh²hh³jNÒh´K¹ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jˆÓjšjˆÓj›‰jœ‰j�‰uh1jh²hhj|³h³Nh´NubjŸ)�”}”(hXÃ**Parameters** ``struct file *file`` the file being accessed ``struct debugfs_cancellation *cancellation`` the cancellation object, the cancel callback inside of it must be initialized **Description** When a debugfs file is removed it needs to wait for all active operations to complete. However, the operation itself may need to wait for hardware or completion of some asynchronous process or similar. As such, it may need to be cancelled to avoid long waits or even deadlocks. This function can be used inside a debugfs handler that may need to be cancelled. As soon as this function is called, the cancellation's 'cancel' callback may be called, at which point the caller should proceed to call debugfs_leave_cancellation() and leave the debugfs handler function as soon as possible. Note that the 'cancel' callback is only ever called in the context of some kind of debugfs_remove(). This function must be paired with debugfs_leave_cancellation().”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj’Óh]”hŒ Parameters”…”�”}”(hj”Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj�Óubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´K½hjŒÓubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ.``struct file *file`` the file being accessed ”h]”(jÊ)�”}”(hŒ``struct file *file``”h]”jÐ)�”}”(hj±Óh]”hŒstruct file *file”…”�”}”(hj³Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¯Óubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Kºhj«Óubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe file being accessed”h]”hŒthe file being accessed”…”�”}”(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Œ|``struct debugfs_cancellation *cancellation`` the cancellation object, the cancel callback inside of it must be initialized ”h]”(jÊ)�”}”(hŒ-``struct debugfs_cancellation *cancellation``”h]”jÐ)�”}”(hjêÓh]”hŒ)struct debugfs_cancellation *cancellation”…”�”}”(hjìÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjèÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´K¼hjäÓubjæ)�”}”(hhh]”hÌ)�”}”(hŒMthe cancellation object, the cancel callback inside of it must be initialized”h]”hŒMthe cancellation object, the cancel callback inside of it must be initialized”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´K»hjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjäÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÿÓh´K¼hj¨Óubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjŒÓubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj&Ôh]”hŒ Description”…”�”}”(hj(Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj$Ôubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´K¾hjŒÓubhÌ)�”}”(hXWhen a debugfs file is removed it needs to wait for all active operations to complete. However, the operation itself may need to wait for hardware or completion of some asynchronous process or similar. As such, it may need to be cancelled to avoid long waits or even deadlocks.”h]”hXWhen a debugfs file is removed it needs to wait for all active operations to complete. However, the operation itself may need to wait for hardware or completion of some asynchronous process or similar. As such, it may need to be cancelled to avoid long waits or even deadlocks.”…”�”}”(hj<Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´K½hjŒÓubhÌ)�”}”(hX˜This function can be used inside a debugfs handler that may need to be cancelled. As soon as this function is called, the cancellation's 'cancel' callback may be called, at which point the caller should proceed to call debugfs_leave_cancellation() and leave the debugfs handler function as soon as possible. Note that the 'cancel' callback is only ever called in the context of some kind of debugfs_remove().”h]”hX¢This function can be used inside a debugfs handler that may need to be cancelled. As soon as this function is called, the cancellation’s ‘cancel’ callback may be called, at which point the caller should proceed to call debugfs_leave_cancellation() and leave the debugfs handler function as soon as possible. Note that the ‘cancel’ callback is only ever called in the context of some kind of debugfs_remove().”…”�”}”(hjKÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´KÃhjŒÓubhÌ)�”}”(hŒ?This function must be paired with debugfs_leave_cancellation().”h]”hŒ?This function must be paired with debugfs_leave_cancellation().”…”�”}”(hjZÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´KËhjŒÓubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj|³h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ'debugfs_leave_cancellation (C function)”Œc.debugfs_leave_cancellation”hNt”auh1hýhj|³h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ^void debugfs_leave_cancellation (struct file *file, struct debugfs_cancellation *cancellation)”h]”j)�”}”(hŒ]void debugfs_leave_cancellation(struct file *file, struct debugfs_cancellation *cancellation)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‰Ôh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj…Ôh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Këubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜Ôh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj…Ôh²hh³j—Ôh´KëubjC)�”}”(hŒdebugfs_leave_cancellation”h]”jI)�”}”(hŒdebugfs_leave_cancellation”h]”hŒdebugfs_leave_cancellation”…”�”}”(hjªÔh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¦Ôubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj…Ôh²hh³j—Ôh´Këubj=)�”}”(hŒ>(struct file *file, struct debugfs_cancellation *cancellation)”h]”(jC)�”}”(hŒstruct file *file”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÆÔh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÂÔubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓÔh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÂÔubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjäÔh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjáÔubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jæÔŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj¬ÔsbŒc.debugfs_leave_cancellation”†”asbuh1hhjÂÔubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÂÔubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÂÔubjI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÂÔubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¾ÔubjC)�”}”(hŒ)struct debugfs_cancellation *cancellation”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj8Õh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj4Õubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEÕh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj4Õubh)�”}”(hhh]”jI)�”}”(hŒdebugfs_cancellation”h]”hŒdebugfs_cancellation”…”�”}”(hjVÕh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjSÕubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jXÕŒmodname”NŒ classname”Njj )�”}”j ]”jÕŒc.debugfs_leave_cancellation”†”asbuh1hhj4Õubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtÕh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj4Õubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj‚Õh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj4ÕubjI)�”}”(hŒ cancellation”h]”hŒ cancellation”…”�”}”(hj�Õh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj4Õubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¾Ôubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj…Ôh²hh³j—Ôh´Këubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj�Ôh²hh³j—Ôh´Këubah}”(h]”j|Ôah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j—Ôh´Këhj~Ôh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒleave cancellation section”h]”hŒleave cancellation section”…”�”}”(hj¹Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Këhj¶Õh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj~Ôh²hh³j—Ôh´Këubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÑÕjšjÑÕj›‰jœ‰j�‰uh1jh²hhj|³h³Nh´NubjŸ)�”}”(hX**Parameters** ``struct file *file`` the file being accessed ``struct debugfs_cancellation *cancellation`` the cancellation previously registered with debugfs_enter_cancellation() **Description** See the documentation of debugfs_enter_cancellation().”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÛÕh]”hŒ Parameters”…”�”}”(hjÝÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÙÕubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´KïhjÕÕubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ.``struct file *file`` the file being accessed ”h]”(jÊ)�”}”(hŒ``struct file *file``”h]”jÐ)�”}”(hjúÕh]”hŒstruct file *file”…”�”}”(hjüÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjøÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´KìhjôÕubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe file being accessed”h]”hŒthe file being accessed”…”�”}”(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Œw``struct debugfs_cancellation *cancellation`` the cancellation previously registered with debugfs_enter_cancellation() ”h]”(jÊ)�”}”(hŒ-``struct debugfs_cancellation *cancellation``”h]”jÐ)�”}”(hj3Öh]”hŒ)struct debugfs_cancellation *cancellation”…”�”}”(hj5Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj1Öubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Kîhj-Öubjæ)�”}”(hhh]”hÌ)�”}”(hŒHthe cancellation previously registered with debugfs_enter_cancellation()”h]”hŒHthe cancellation previously registered with debugfs_enter_cancellation()”…”�”}”(hjLÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´KíhjIÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj-Öubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jHÖh´KîhjñÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÕÕubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjoÖh]”hŒ Description”…”�”}”(hjqÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjmÖubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´KðhjÕÕubhÌ)�”}”(hŒ6See the documentation of debugfs_enter_cancellation().”h]”hŒ6See the documentation of debugfs_enter_cancellation().”…”�”}”(hj…Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´KïhjÕÕubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj|³h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdebugfs_create_u8 (C function)”Œc.debugfs_create_u8”hNt”auh1hýhj|³h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒYvoid debugfs_create_u8 (const char *name, umode_t mode, struct dentry *parent, u8 *value)”h]”j)�”}”(hŒXvoid debugfs_create_u8(const char *name, umode_t mode, struct dentry *parent, u8 *value)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj´Öh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj°Öh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MRubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃÖh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj°Öh²hh³jÂÖh´MRubjC)�”}”(hŒdebugfs_create_u8”h]”jI)�”}”(hŒdebugfs_create_u8”h]”hŒdebugfs_create_u8”…”�”}”(hjÕÖh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÑÖubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj°Öh²hh³jÂÖh´MRubj=)�”}”(hŒB(const char *name, umode_t mode, struct dentry *parent, u8 *value)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjñÖh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjíÖubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþÖh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjíÖubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj ×h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjíÖubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjíÖubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj(×h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjíÖubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj5×h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjíÖubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjéÖubjC)�”}”(hŒ umode_t mode”h]”(h)�”}”(hhh]”jI)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hjQ×h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjN×ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jS׌modname”NŒ classname”Njj )�”}”j ]”j)�”}”jj×ÖsbŒc.debugfs_create_u8”†”asbuh1hhjJ×ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq×h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjJ×ubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjJ×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjéÖubjC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj˜×h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj”×ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥×h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj”×ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj¶×h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj³×ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¸×Œmodname”NŒ classname”Njj )�”}”j ]”jm׌c.debugfs_create_u8”†”asbuh1hhj”×ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ×h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj”×ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjâ×h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj”×ubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjï×h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj”×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjéÖubjC)�”}”(hŒ u8 *value”h]”(h)�”}”(hhh]”jI)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj Øh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjØubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j ØŒmodname”NŒ classname”Njj )�”}”j ]”jm׌c.debugfs_create_u8”†”asbuh1hhjØubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)Øh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjØubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj7Øh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjØubjI)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hjDØh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjØubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjéÖubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj°Öh²hh³jÂÖh´MRubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj¬Öh²hh³jÂÖh´MRubah}”(h]”j§Öah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÂÖh´MRhj©Öh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒLcreate a debugfs file that is used to read and write an unsigned 8-bit value”h]”hŒLcreate a debugfs file that is used to read and write an unsigned 8-bit value”…”�”}”(hjnØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MRhjkØh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj©Öh²hh³jÂÖh´MRubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j†Øjšj†Øj›‰jœ‰j�‰uh1jh²hhj|³h³Nh´NubjŸ)�”}”(hX¨**Parameters** ``const char *name`` a pointer to a string containing the name of the file to create. ``umode_t mode`` the permission that the file should have ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ``u8 *value`` a pointer to the variable that the file should read to and write from. **Description** This function creates a file in debugfs with the given name that contains the value of the variable **value**. If the **mode** variable is so set, it can be read from, and written to.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj�Øh]”hŒ Parameters”…”�”}”(hj’Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjŽØubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MVhjŠØubj¿)�”}”(hhh]”(jÄ)�”}”(hŒV``const char *name`` a pointer to a string containing the name of the file to create. ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hj¯Øh]”hŒconst char *name”…”�”}”(hj±Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj­Øubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MShj©Øubjæ)�”}”(hhh]”hÌ)�”}”(hŒ@a pointer to a string containing the name of the file to create.”h]”hŒ@a pointer to a string containing the name of the file to create.”…”�”}”(hjÈØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÄØh´MShjÅØubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj©Øubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÄØh´MShj¦ØubjÄ)�”}”(hŒ:``umode_t mode`` the permission that the file should have ”h]”(jÊ)�”}”(hŒ``umode_t mode``”h]”jÐ)�”}”(hjèØh]”hŒ umode_t mode”…”�”}”(hjêØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjæØubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MThjâØubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(the permission that the file should have”h]”hŒ(the permission that the file should have”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jýØh´MThjþØubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjâØubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jýØh´MThj¦ØubjÄ)�”}”(hŒØ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hj!Ùh]”hŒstruct dentry *parent”…”�”}”(hj#Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MWhjÙubjæ)�”}”(hhh]”hÌ)�”}”(hŒ½a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem.”h]”(hŒoa pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ”…”�”}”(hj:Ùh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjBÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj:ÙubhŒF, then the file will be created in the root of the debugfs filesystem.”…”�”}”(hj:Ùh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MUhj7Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j6Ùh´MWhj¦ØubjÄ)�”}”(hŒU``u8 *value`` a pointer to the variable that the file should read to and write from. ”h]”(jÊ)�”}”(hŒ ``u8 *value``”h]”jÐ)�”}”(hjmÙh]”hŒ u8 *value”…”�”}”(hjoÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjkÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MYhjgÙubjæ)�”}”(hhh]”hÌ)�”}”(hŒFa pointer to the variable that the file should read to and write from.”h]”hŒFa pointer to the variable that the file should read to and write from.”…”�”}”(hj†Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MXhjƒÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjgÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‚Ùh´MYhj¦Øubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjŠØubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj©Ùh]”hŒ Description”…”�”}”(hj«Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj§Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M[hjŠØubhÌ)�”}”(hŒ¸This function creates a file in debugfs with the given name that contains the value of the variable **value**. If the **mode** variable is so set, it can be read from, and written to.”h]”(hŒdThis function creates a file in debugfs with the given name that contains the value of the variable ”…”�”}”(hj¿Ùh²hh³Nh´Nubj©)�”}”(hŒ **value**”h]”hŒvalue”…”�”}”(hjÇÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¿ÙubhŒ . If the ”…”�”}”(hj¿Ùh²hh³Nh´Nubj©)�”}”(hŒ**mode**”h]”hŒmode”…”�”}”(hjÙÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¿ÙubhŒ9 variable is so set, it can be read from, and written to.”…”�”}”(hj¿Ùh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MZhjŠØubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj|³h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdebugfs_create_u16 (C function)”Œc.debugfs_create_u16”hNt”auh1hýhj|³h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ[void debugfs_create_u16 (const char *name, umode_t mode, struct dentry *parent, u16 *value)”h]”j)�”}”(hŒZvoid debugfs_create_u16(const char *name, umode_t mode, struct dentry *parent, u16 *value)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÚh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mvubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!Úh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÚh²hh³j Úh´MvubjC)�”}”(hŒdebugfs_create_u16”h]”jI)�”}”(hŒdebugfs_create_u16”h]”hŒdebugfs_create_u16”…”�”}”(hj3Úh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj/Úubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÚh²hh³j Úh´Mvubj=)�”}”(hŒC(const char *name, umode_t mode, struct dentry *parent, u16 *value)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjOÚh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjKÚubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\Úh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjKÚubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjjÚh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjKÚubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxÚh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjKÚubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj†Úh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjKÚubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj“Úh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjKÚubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjGÚubjC)�”}”(hŒ umode_t mode”h]”(h)�”}”(hhh]”jI)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hj¯Úh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¬Úubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j±ÚŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj5ÚsbŒc.debugfs_create_u16”†”asbuh1hhj¨Úubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏÚh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¨ÚubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hjÝÚh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¨Úubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjGÚubjC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjöÚh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjòÚubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjòÚubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÛubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÛŒmodname”NŒ classname”Njj )�”}”j ]”jËÚŒc.debugfs_create_u16”†”asbuh1hhjòÚubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2Ûh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjòÚubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj@Ûh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjòÚubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjMÛh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjòÚubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjGÚubjC)�”}”(hŒ u16 *value”h]”(h)�”}”(hhh]”jI)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjiÛh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjfÛubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jkÛŒmodname”NŒ classname”Njj )�”}”j ]”jËÚŒc.debugfs_create_u16”†”asbuh1hhjbÛubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡Ûh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjbÛubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj•Ûh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjbÛubjI)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hj¢Ûh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjbÛubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjGÚubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÚh²hh³j Úh´Mvubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj Úh²hh³j Úh´Mvubah}”(h]”jÚah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j Úh´MvhjÚh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒMcreate a debugfs file that is used to read and write an unsigned 16-bit value”h]”hŒMcreate a debugfs file that is used to read and write an unsigned 16-bit value”…”�”}”(hjÌÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MvhjÉÛh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÚh²hh³j Úh´Mvubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jäÛjšjäÛj›‰jœ‰j�‰uh1jh²hhj|³h³Nh´NubjŸ)�”}”(hX©**Parameters** ``const char *name`` a pointer to a string containing the name of the file to create. ``umode_t mode`` the permission that the file should have ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ``u16 *value`` a pointer to the variable that the file should read to and write from. **Description** This function creates a file in debugfs with the given name that contains the value of the variable **value**. If the **mode** variable is so set, it can be read from, and written to.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjîÛh]”hŒ Parameters”…”�”}”(hjðÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjìÛubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MzhjèÛubj¿)�”}”(hhh]”(jÄ)�”}”(hŒV``const char *name`` a pointer to a string containing the name of the file to create. ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hj Üh]”hŒconst char *name”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MwhjÜubjæ)�”}”(hhh]”hÌ)�”}”(hŒ@a pointer to a string containing the name of the file to create.”h]”hŒ@a pointer to a string containing the name of the file to create.”…”�”}”(hj&Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j"Üh´Mwhj#Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j"Üh´MwhjÜubjÄ)�”}”(hŒ:``umode_t mode`` the permission that the file should have ”h]”(jÊ)�”}”(hŒ``umode_t mode``”h]”jÐ)�”}”(hjFÜh]”hŒ umode_t mode”…”�”}”(hjHÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjDÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mxhj@Üubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(the permission that the file should have”h]”hŒ(the permission that the file should have”…”�”}”(hj_Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j[Üh´Mxhj\Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj@Üubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j[Üh´MxhjÜubjÄ)�”}”(hŒØ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hjÜh]”hŒstruct dentry *parent”…”�”}”(hj�Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj}Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M{hjyÜubjæ)�”}”(hhh]”hÌ)�”}”(hŒ½a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem.”h]”(hŒoa pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ”…”�”}”(hj˜Üh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj˜ÜubhŒF, then the file will be created in the root of the debugfs filesystem.”…”�”}”(hj˜Üh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Myhj•Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjyÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j”Üh´M{hjÜubjÄ)�”}”(hŒV``u16 *value`` a pointer to the variable that the file should read to and write from. ”h]”(jÊ)�”}”(hŒ``u16 *value``”h]”jÐ)�”}”(hjËÜh]”hŒ u16 *value”…”�”}”(hjÍÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÉÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M}hjÅÜubjæ)�”}”(hhh]”hÌ)�”}”(hŒFa pointer to the variable that the file should read to and write from.”h]”hŒFa pointer to the variable that the file should read to and write from.”…”�”}”(hjäÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M|hjáÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÅÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jàÜh´M}hjÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjèÛubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÝh]”hŒ Description”…”�”}”(hj Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MhjèÛubhÌ)�”}”(hŒ¸This function creates a file in debugfs with the given name that contains the value of the variable **value**. If the **mode** variable is so set, it can be read from, and written to.”h]”(hŒdThis function creates a file in debugfs with the given name that contains the value of the variable ”…”�”}”(hjÝh²hh³Nh´Nubj©)�”}”(hŒ **value**”h]”hŒvalue”…”�”}”(hj%Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÝubhŒ . If the ”…”�”}”(hjÝh²hh³Nh´Nubj©)�”}”(hŒ**mode**”h]”hŒmode”…”�”}”(hj7Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÝubhŒ9 variable is so set, it can be read from, and written to.”…”�”}”(hjÝh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M~hjèÛubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj|³h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdebugfs_create_u32 (C function)”Œc.debugfs_create_u32”hNt”auh1hýhj|³h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ[void debugfs_create_u32 (const char *name, umode_t mode, struct dentry *parent, u32 *value)”h]”j)�”}”(hŒZvoid debugfs_create_u32(const char *name, umode_t mode, struct dentry *parent, u32 *value)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjpÝh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjlÝh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mšubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjlÝh²hh³j~Ýh´MšubjC)�”}”(hŒdebugfs_create_u32”h]”jI)�”}”(hŒdebugfs_create_u32”h]”hŒdebugfs_create_u32”…”�”}”(hj‘Ýh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�Ýubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjlÝh²hh³j~Ýh´Mšubj=)�”}”(hŒC(const char *name, umode_t mode, struct dentry *parent, u32 *value)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj­Ýh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj©Ýubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºÝh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj©Ýubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÈÝh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj©Ýubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖÝh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj©Ýubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjäÝh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj©ÝubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hjñÝh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj©Ýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¥ÝubjC)�”}”(hŒ umode_t mode”h]”(h)�”}”(hhh]”jI)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hj Þh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj Þubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÞŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj“ÝsbŒc.debugfs_create_u32”†”asbuh1hhjÞubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-Þh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÞubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj;Þh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÞubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¥ÝubjC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjTÞh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjPÞubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaÞh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjPÞubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjrÞh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjoÞubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jtÞŒmodname”NŒ classname”Njj )�”}”j ]”j)ÞŒc.debugfs_create_u32”†”asbuh1hhjPÞubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Þh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjPÞubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjžÞh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjPÞubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hj«Þh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjPÞubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¥ÝubjC)�”}”(hŒ u32 *value”h]”(h)�”}”(hhh]”jI)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjÇÞh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÄÞubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÉÞŒmodname”NŒ classname”Njj )�”}”j ]”j)ÞŒc.debugfs_create_u32”†”asbuh1hhjÀÞubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåÞh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÀÞubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjóÞh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÀÞubjI)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÀÞubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¥Ýubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjlÝh²hh³j~Ýh´Mšubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjhÝh²hh³j~Ýh´Mšubah}”(h]”jcÝah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j~Ýh´MšhjeÝh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒMcreate a debugfs file that is used to read and write an unsigned 32-bit value”h]”hŒMcreate a debugfs file that is used to read and write an unsigned 32-bit value”…”�”}”(hj*ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mšhj'ßh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjeÝh²hh³j~Ýh´Mšubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jBßjšjBßj›‰jœ‰j�‰uh1jh²hhj|³h³Nh´NubjŸ)�”}”(hX©**Parameters** ``const char *name`` a pointer to a string containing the name of the file to create. ``umode_t mode`` the permission that the file should have ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ``u32 *value`` a pointer to the variable that the file should read to and write from. **Description** This function creates a file in debugfs with the given name that contains the value of the variable **value**. If the **mode** variable is so set, it can be read from, and written to.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjLßh]”hŒ Parameters”…”�”}”(hjNßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjJßubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MžhjFßubj¿)�”}”(hhh]”(jÄ)�”}”(hŒV``const char *name`` a pointer to a string containing the name of the file to create. ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hjkßh]”hŒconst char *name”…”�”}”(hjmßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjißubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M›hjeßubjæ)�”}”(hhh]”hÌ)�”}”(hŒ@a pointer to a string containing the name of the file to create.”h]”hŒ@a pointer to a string containing the name of the file to create.”…”�”}”(hj„ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j€ßh´M›hj�ßubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjeßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j€ßh´M›hjbßubjÄ)�”}”(hŒ:``umode_t mode`` the permission that the file should have ”h]”(jÊ)�”}”(hŒ``umode_t mode``”h]”jÐ)�”}”(hj¤ßh]”hŒ umode_t mode”…”�”}”(hj¦ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¢ßubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mœhjžßubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(the permission that the file should have”h]”hŒ(the permission that the file should have”…”�”}”(hj½ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¹ßh´Mœhjºßubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjžßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¹ßh´MœhjbßubjÄ)�”}”(hŒØ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hjÝßh]”hŒstruct dentry *parent”…”�”}”(hjßßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÛßubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MŸhj×ßubjæ)�”}”(hhh]”hÌ)�”}”(hŒ½a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem.”h]”(hŒoa pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ”…”�”}”(hjößh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjþßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjößubhŒF, then the file will be created in the root of the debugfs filesystem.”…”�”}”(hjößh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M�hjóßubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj×ßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jòßh´MŸhjbßubjÄ)�”}”(hŒV``u32 *value`` a pointer to the variable that the file should read to and write from. ”h]”(jÊ)�”}”(hŒ``u32 *value``”h]”jÐ)�”}”(hj)àh]”hŒ u32 *value”…”�”}”(hj+àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj'àubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M¡hj#àubjæ)�”}”(hhh]”hÌ)�”}”(hŒFa pointer to the variable that the file should read to and write from.”h]”hŒFa pointer to the variable that the file should read to and write from.”…”�”}”(hjBàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M hj?àubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj#àubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j>àh´M¡hjbßubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjFßubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjeàh]”hŒ Description”…”�”}”(hjgàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjcàubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M£hjFßubhÌ)�”}”(hŒ¸This function creates a file in debugfs with the given name that contains the value of the variable **value**. If the **mode** variable is so set, it can be read from, and written to.”h]”(hŒdThis function creates a file in debugfs with the given name that contains the value of the variable ”…”�”}”(hj{àh²hh³Nh´Nubj©)�”}”(hŒ **value**”h]”hŒvalue”…”�”}”(hjƒàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj{àubhŒ . If the ”…”�”}”(hj{àh²hh³Nh´Nubj©)�”}”(hŒ**mode**”h]”hŒmode”…”�”}”(hj•àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj{àubhŒ9 variable is so set, it can be read from, and written to.”…”�”}”(hj{àh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M¢hjFßubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj|³h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdebugfs_create_u64 (C function)”Œc.debugfs_create_u64”hNt”auh1hýhj|³h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ[void debugfs_create_u64 (const char *name, umode_t mode, struct dentry *parent, u64 *value)”h]”j)�”}”(hŒZvoid debugfs_create_u64(const char *name, umode_t mode, struct dentry *parent, u64 *value)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÎàh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÊàh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M¿ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝàh²•Bhh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÊàh²hh³jÜàh´M¿ubjC)�”}”(hŒdebugfs_create_u64”h]”jI)�”}”(hŒdebugfs_create_u64”h]”hŒdebugfs_create_u64”…”�”}”(hjïàh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjëàubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÊàh²hh³jÜàh´M¿ubj=)�”}”(hŒC(const char *name, umode_t mode, struct dentry *parent, u64 *value)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj áh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjáubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjáubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj&áh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjáubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4áh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjáubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjBáh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjáubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hjOáh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjáubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjáubjC)�”}”(hŒ umode_t mode”h]”(h)�”}”(hhh]”jI)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hjkáh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjháubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jmáŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjñàsbŒc.debugfs_create_u64”†”asbuh1hhjdáubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹áh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjdáubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj™áh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjdáubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjáubjC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj²áh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj®áubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿áh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj®áubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjÐáh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÍáubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÒáŒmodname”NŒ classname”Njj )�”}”j ]”j‡áŒc.debugfs_create_u64”†”asbuh1hhj®áubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîáh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj®áubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjüáh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj®áubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hj âh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj®áubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjáubjC)�”}”(hŒ u64 *value”h]”(h)�”}”(hhh]”jI)�”}”(hŒu64”h]”hŒu64”…”�”}”(hj%âh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj"âubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j'âŒmodname”NŒ classname”Njj )�”}”j ]”j‡áŒc.debugfs_create_u64”†”asbuh1hhjâubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCâh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjâubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjQâh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjâubjI)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hj^âh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjâubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjáubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÊàh²hh³jÜàh´M¿ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÆàh²hh³jÜàh´M¿ubah}”(h]”jÁàah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÜàh´M¿hjÃàh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒMcreate a debugfs file that is used to read and write an unsigned 64-bit value”h]”hŒMcreate a debugfs file that is used to read and write an unsigned 64-bit value”…”�”}”(hjˆâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M¿hj…âh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÃàh²hh³jÜàh´M¿ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j âjšj âj›‰jœ‰j�‰uh1jh²hhj|³h³Nh´NubjŸ)�”}”(hX©**Parameters** ``const char *name`` a pointer to a string containing the name of the file to create. ``umode_t mode`` the permission that the file should have ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ``u64 *value`` a pointer to the variable that the file should read to and write from. **Description** This function creates a file in debugfs with the given name that contains the value of the variable **value**. If the **mode** variable is so set, it can be read from, and written to.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjªâh]”hŒ Parameters”…”�”}”(hj¬âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¨âubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MÃhj¤âubj¿)�”}”(hhh]”(jÄ)�”}”(hŒV``const char *name`` a pointer to a string containing the name of the file to create. ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hjÉâh]”hŒconst char *name”…”�”}”(hjËâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÇâubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MÀhjÃâubjæ)�”}”(hhh]”hÌ)�”}”(hŒ@a pointer to a string containing the name of the file to create.”h]”hŒ@a pointer to a string containing the name of the file to create.”…”�”}”(hjââh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÞâh´MÀhjßâubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÃâubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÞâh´MÀhjÀâubjÄ)�”}”(hŒ:``umode_t mode`` the permission that the file should have ”h]”(jÊ)�”}”(hŒ``umode_t mode``”h]”jÐ)�”}”(hjãh]”hŒ umode_t mode”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjãubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MÁhjüâubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(the permission that the file should have”h]”hŒ(the permission that the file should have”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jãh´MÁhjãubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjüâubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jãh´MÁhjÀâubjÄ)�”}”(hŒØ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hj;ãh]”hŒstruct dentry *parent”…”�”}”(hj=ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj9ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MÄhj5ãubjæ)�”}”(hhh]”hÌ)�”}”(hŒ½a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem.”h]”(hŒoa pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ”…”�”}”(hjTãh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj\ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjTãubhŒF, then the file will be created in the root of the debugfs filesystem.”…”�”}”(hjTãh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MÂhjQãubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj5ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jPãh´MÄhjÀâubjÄ)�”}”(hŒV``u64 *value`` a pointer to the variable that the file should read to and write from. ”h]”(jÊ)�”}”(hŒ``u64 *value``”h]”jÐ)�”}”(hj‡ãh]”hŒ u64 *value”…”�”}”(hj‰ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj…ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MÆhj�ãubjæ)�”}”(hhh]”hÌ)�”}”(hŒFa pointer to the variable that the file should read to and write from.”h]”hŒFa pointer to the variable that the file should read to and write from.”…”�”}”(hj ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MÅhj�ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj�ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jœãh´MÆhjÀâubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj¤âubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÃãh]”hŒ Description”…”�”}”(hjÅãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÁãubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MÈhj¤âubhÌ)�”}”(hŒ¸This function creates a file in debugfs with the given name that contains the value of the variable **value**. If the **mode** variable is so set, it can be read from, and written to.”h]”(hŒdThis function creates a file in debugfs with the given name that contains the value of the variable ”…”�”}”(hjÙãh²hh³Nh´Nubj©)�”}”(hŒ **value**”h]”hŒvalue”…”�”}”(hjáãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÙãubhŒ . If the ”…”�”}”(hjÙãh²hh³Nh´Nubj©)�”}”(hŒ**mode**”h]”hŒmode”…”�”}”(hjóãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÙãubhŒ9 variable is so set, it can be read from, and written to.”…”�”}”(hjÙãh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MÇhj¤âubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj|³h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ!debugfs_create_ulong (C function)”Œc.debugfs_create_ulong”hNt”auh1hýhj|³h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒgvoid debugfs_create_ulong (const char *name, umode_t mode, struct dentry *parent, unsigned long *value)”h]”j)�”}”(hŒfvoid debugfs_create_ulong(const char *name, umode_t mode, struct dentry *parent, unsigned long *value)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj,äh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj(äh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Måubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;äh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj(äh²hh³j:äh´MåubjC)�”}”(hŒdebugfs_create_ulong”h]”jI)�”}”(hŒdebugfs_create_ulong”h]”hŒdebugfs_create_ulong”…”�”}”(hjMäh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjIäubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj(äh²hh³j:äh´Måubj=)�”}”(hŒM(const char *name, umode_t mode, struct dentry *parent, unsigned long *value)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjiäh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjeäubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjväh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjeäubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj„äh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjeäubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’äh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjeäubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj äh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjeäubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj­äh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjeäubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjaäubjC)�”}”(hŒ umode_t mode”h]”(h)�”}”(hhh]”jI)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hjÉäh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÆäubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jËäŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjOäsbŒc.debugfs_create_ulong”†”asbuh1hhjÂäubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéäh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÂäubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj÷äh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÂäubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjaäubjC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj åubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj åubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj.åh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj+åubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j0åŒmodname”NŒ classname”Njj )�”}”j ]”jåäŒc.debugfs_create_ulong”†”asbuh1hhj åubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLåh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj åubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjZåh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj åubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjgåh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj åubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjaäubjC)�”}”(hŒunsigned long *value”h]”(j�)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj€åh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj|åubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽåh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj|åubj�)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjœåh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj|åubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªåh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj|åubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¸åh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj|åubjI)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hjÅåh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj|åubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjaäubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj(äh²hh³j:äh´Måubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj$äh²hh³j:äh´Måubah}”(h]”jäah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j:äh´Måhj!äh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒLcreate a debugfs file that is used to read and write an unsigned long value.”h]”hŒLcreate a debugfs file that is used to read and write an unsigned long value.”…”�”}”(hjïåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Måhjìåh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj!äh²hh³j:äh´Måubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jæjšjæj›‰jœ‰j�‰uh1jh²hhj|³h³Nh´NubjŸ)�”}”(hX³**Parameters** ``const char *name`` a pointer to a string containing the name of the file to create. ``umode_t mode`` the permission that the file should have ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ``unsigned long *value`` a pointer to the variable that the file should read to and write from. **Description** This function creates a file in debugfs with the given name that contains the value of the variable **value**. If the **mode** variable is so set, it can be read from, and written to.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjæh]”hŒ Parameters”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjæubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Méhj æubj¿)�”}”(hhh]”(jÄ)�”}”(hŒV``const char *name`` a pointer to a string containing the name of the file to create. ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hj0æh]”hŒconst char *name”…”�”}”(hj2æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj.æubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mçhj*æubjæ)�”}”(hhh]”hÌ)�”}”(hŒ@a pointer to a string containing the name of the file to create.”h]”hŒ@a pointer to a string containing the name of the file to create.”…”�”}”(hjIæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jEæh´MçhjFæubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj*æubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jEæh´Mçhj'æubjÄ)�”}”(hŒ:``umode_t mode`` the permission that the file should have ”h]”(jÊ)�”}”(hŒ``umode_t mode``”h]”jÐ)�”}”(hjiæh]”hŒ umode_t mode”…”�”}”(hjkæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjgæubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mèhjcæubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(the permission that the file should have”h]”hŒ(the permission that the file should have”…”�”}”(hj‚æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j~æh´Mèhjæubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjcæubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j~æh´Mèhj'æubjÄ)�”}”(hŒØ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hj¢æh]”hŒstruct dentry *parent”…”�”}”(hj¤æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj æubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mëhjœæubjæ)�”}”(hhh]”hÌ)�”}”(hŒ½a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem.”h]”(hŒoa pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ”…”�”}”(hj»æh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjÃæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj»æubhŒF, then the file will be created in the root of the debugfs filesystem.”…”�”}”(hj»æh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Méhj¸æubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjœæubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j·æh´Mëhj'æubjÄ)�”}”(hŒ```unsigned long *value`` a pointer to the variable that the file should read to and write from. ”h]”(jÊ)�”}”(hŒ``unsigned long *value``”h]”jÐ)�”}”(hjîæh]”hŒunsigned long *value”…”�”}”(hjðæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjìæubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Míhjèæubjæ)�”}”(hhh]”hÌ)�”}”(hŒFa pointer to the variable that the file should read to and write from.”h]”hŒFa pointer to the variable that the file should read to and write from.”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mìhjçubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjèæubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jçh´Míhj'æubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj æubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj*çh]”hŒ Description”…”�”}”(hj,çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj(çubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mïhj æubhÌ)�”}”(hŒ¸This function creates a file in debugfs with the given name that contains the value of the variable **value**. If the **mode** variable is so set, it can be read from, and written to.”h]”(hŒdThis function creates a file in debugfs with the given name that contains the value of the variable ”…”�”}”(hj@çh²hh³Nh´Nubj©)�”}”(hŒ **value**”h]”hŒvalue”…”�”}”(hjHçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj@çubhŒ . If the ”…”�”}”(hj@çh²hh³Nh´Nubj©)�”}”(hŒ**mode**”h]”hŒmode”…”�”}”(hjZçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj@çubhŒ9 variable is so set, it can be read from, and written to.”…”�”}”(hj@çh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mîhj æubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj|³h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdebugfs_create_x8 (C function)”Œc.debugfs_create_x8”hNt”auh1hýhj|³h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒYvoid debugfs_create_x8 (const char *name, umode_t mode, struct dentry *parent, u8 *value)”h]”j)�”}”(hŒXvoid debugfs_create_x8(const char *name, umode_t mode, struct dentry *parent, u8 *value)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj“çh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj�çh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢çh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�çh²hh³j¡çh´MubjC)�”}”(hŒdebugfs_create_x8”h]”jI)�”}”(hŒdebugfs_create_x8”h]”hŒdebugfs_create_x8”…”�”}”(hj´çh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj°çubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj�çh²hh³j¡çh´Mubj=)�”}”(hŒB(const char *name, umode_t mode, struct dentry *parent, u8 *value)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjÐçh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÌçubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝçh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÌçubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjëçh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÌçubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùçh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÌçubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÌçubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÌçubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÈçubjC)�”}”(hŒ umode_t mode”h]”(h)�”}”(hhh]”jI)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hj0èh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj-èubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j2èŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj¶çsbŒc.debugfs_create_x8”†”asbuh1hhj)èubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPèh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj)èubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj^èh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj)èubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÈçubjC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjwèh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjsèubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„èh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjsèubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj•èh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj’èubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j—èŒmodname”NŒ classname”Njj )�”}”j ]”jLèŒc.debugfs_create_x8”†”asbuh1hhjsèubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³èh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjsèubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÁèh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjsèubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjÎèh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjsèubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÈçubjC)�”}”(hŒ u8 *value”h]”(h)�”}”(hhh]”jI)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjêèh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjçèubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jìèŒmodname”NŒ classname”Njj )�”}”j ]”jLèŒc.debugfs_create_x8”†”asbuh1hhjãèubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjãèubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjãèubjI)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hj#éh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjãèubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÈçubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj�çh²hh³j¡çh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj‹çh²hh³j¡çh´Mubah}”(h]”j†çah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j¡çh´Mhjˆçh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒLcreate a debugfs file that is used to read and write an unsigned 8-bit value”h]”hŒLcreate a debugfs file that is used to read and write an unsigned 8-bit value”…”�”}”(hjMéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MhjJéh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjˆçh²hh³j¡çh´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jeéjšjeéj›‰jœ‰j�‰uh1jh²hhj|³h³Nh´NubjŸ)�”}”(hXÝ**Parameters** ``const char *name`` a pointer to a string containing the name of the file to create. ``umode_t mode`` the permission that the file should have ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ``u8 *value`` a pointer to the variable that the file should read to and write from.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjoéh]”hŒ Parameters”…”�”}”(hjqéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjméubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mhjiéubj¿)�”}”(hhh]”(jÄ)�”}”(hŒV``const char *name`` a pointer to a string containing the name of the file to create. ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hjŽéh]”hŒconst char *name”…”�”}”(hj�éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjŒéubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mhjˆéubjæ)�”}”(hhh]”hÌ)�”}”(hŒ@a pointer to a string containing the name of the file to create.”h]”hŒ@a pointer to a string containing the name of the file to create.”…”�”}”(hj§éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j£éh´Mhj¤éubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjˆéubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j£éh´Mhj…éubjÄ)�”}”(hŒ:``umode_t mode`` the permission that the file should have ”h]”(jÊ)�”}”(hŒ``umode_t mode``”h]”jÐ)�”}”(hjÇéh]”hŒ umode_t mode”…”�”}”(hjÉéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÅéubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MhjÁéubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(the permission that the file should have”h]”hŒ(the permission that the file should have”…”�”}”(hjàéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÜéh´MhjÝéubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÁéubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÜéh´Mhj…éubjÄ)�”}”(hŒØ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hjêh]”hŒstruct dentry *parent”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjþéubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mhjúéubjæ)�”}”(hhh]”hÌ)�”}”(hŒ½a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem.”h]”(hŒoa pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ”…”�”}”(hjêh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj!êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjêubhŒF, then the file will be created in the root of the debugfs filesystem.”…”�”}”(hjêh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mhjêubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjúéubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jêh´Mhj…éubjÄ)�”}”(hŒT``u8 *value`` a pointer to the variable that the file should read to and write from.”h]”(jÊ)�”}”(hŒ ``u8 *value``”h]”jÐ)�”}”(hjLêh]”hŒ u8 *value”…”�”}”(hjNêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjJêubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MhjFêubjæ)�”}”(hhh]”hÌ)�”}”(hŒFa pointer to the variable that the file should read to and write from.”h]”hŒFa pointer to the variable that the file should read to and write from.”…”�”}”(hjeêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jaêh´Mhjbêubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjFêubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jaêh´Mhj…éubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjiéubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj|³h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdebugfs_create_x16 (C function)”Œc.debugfs_create_x16”hNt”auh1hýhj|³h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ[void debugfs_create_x16 (const char *name, umode_t mode, struct dentry *parent, u16 *value)”h]”j)�”}”(hŒZvoid debugfs_create_x16(const char *name, umode_t mode, struct dentry *parent, u16 *value)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¥êh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¡êh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M)ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´êh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¡êh²hh³j³êh´M)ubjC)�”}”(hŒdebugfs_create_x16”h]”jI)�”}”(hŒdebugfs_create_x16”h]”hŒdebugfs_create_x16”…”�”}”(hjÆêh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÂêubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj¡êh²hh³j³êh´M)ubj=)�”}”(hŒC(const char *name, umode_t mode, struct dentry *parent, u16 *value)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjâêh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÞêubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïêh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÞêubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjýêh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÞêubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ëh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÞêubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÞêubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj&ëh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÞêubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÚêubjC)�”}”(hŒ umode_t mode”h]”(h)�”}”(hhh]”jI)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hjBëh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj?ëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jDëŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÈêsbŒc.debugfs_create_x16”†”asbuh1hhj;ëubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbëh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj;ëubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hjpëh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj;ëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÚêubjC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj‰ëh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj…ëubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–ëh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj…ëubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj§ëh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¤ëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j©ëŒmodname”NŒ classname”Njj )�”}”j ]”j^ëŒc.debugfs_create_x16”†”asbuh1hhj…ëubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅëh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj…ëubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÓëh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj…ëubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjàëh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj…ëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÚêubjC)�”}”(hŒ u16 *value”h]”(h)�”}”(hhh]”jI)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjüëh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjùëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jþëŒmodname”NŒ classname”Njj )�”}”j ]”j^ëŒc.debugfs_create_x16”†”asbuh1hhjõëubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjõëubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj(ìh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjõëubjI)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hj5ìh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjõëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÚêubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj¡êh²hh³j³êh´M)ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj�êh²hh³j³êh´M)ubah}”(h]”j˜êah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j³êh´M)hjšêh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒMcreate a debugfs file that is used to read and write an unsigned 16-bit value”h]”hŒMcreate a debugfs file that is used to read and write an unsigned 16-bit value”…”�”}”(hj_ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M)hj\ìh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjšêh²hh³j³êh´M)ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jwìjšjwìj›‰jœ‰j�‰uh1jh²hhj|³h³Nh´NubjŸ)�”}”(hXÞ**Parameters** ``const char *name`` a pointer to a string containing the name of the file to create. ``umode_t mode`` the permission that the file should have ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ``u16 *value`` a pointer to the variable that the file should read to and write from.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj�ìh]”hŒ Parameters”…”�”}”(hjƒìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjìubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M-hj{ìubj¿)�”}”(hhh]”(jÄ)�”}”(hŒV``const char *name`` a pointer to a string containing the name of the file to create. ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hj ìh]”hŒconst char *name”…”�”}”(hj¢ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjžìubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M*hjšìubjæ)�”}”(hhh]”hÌ)�”}”(hŒ@a pointer to a string containing the name of the file to create.”h]”hŒ@a pointer to a string containing the name of the file to create.”…”�”}”(hj¹ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jµìh´M*hj¶ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjšìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jµìh´M*hj—ìubjÄ)�”}”(hŒ:``umode_t mode`` the permission that the file should have ”h]”(jÊ)�”}”(hŒ``umode_t mode``”h]”jÐ)�”}”(hjÙìh]”hŒ umode_t mode”…”�”}”(hjÛìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj×ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M+hjÓìubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(the permission that the file should have”h]”hŒ(the permission that the file should have”…”�”}”(hjòìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jîìh´M+hjïìubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÓìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jîìh´M+hj—ìubjÄ)�”}”(hŒØ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hjíh]”hŒstruct dentry *parent”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjíubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M.hj íubjæ)�”}”(hhh]”hÌ)�”}”(hŒ½a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem.”h]”(hŒoa pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ”…”�”}”(hj+íh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj3íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj+íubhŒF, then the file will be created in the root of the debugfs filesystem.”…”�”}”(hj+íh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M,hj(íubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj íubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j'íh´M.hj—ìubjÄ)�”}”(hŒU``u16 *value`` a pointer to the variable that the file should read to and write from.”h]”(jÊ)�”}”(hŒ``u16 *value``”h]”jÐ)�”}”(hj^íh]”hŒ u16 *value”…”�”}”(hj`íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj\íubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M/hjXíubjæ)�”}”(hhh]”hÌ)�”}”(hŒFa pointer to the variable that the file should read to and write from.”h]”hŒFa pointer to the variable that the file should read to and write from.”…”�”}”(hjwíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jsíh´M/hjtíubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjXíubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jsíh´M/hj—ìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj{ìubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj|³h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdebugfs_create_x32 (C function)”Œc.debugfs_create_x32”hNt”auh1hýhj|³h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ[void debugfs_create_x32 (const char *name, umode_t mode, struct dentry *parent, u32 *value)”h]”j)�”}”(hŒZvoid debugfs_create_x32(const char *name, umode_t mode, struct dentry *parent, u32 *value)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj·íh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj³íh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M;ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆíh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj³íh²hh³jÅíh´M;ubjC)�”}”(hŒdebugfs_create_x32”h]”jI)�”}”(hŒdebugfs_create_x32”h]”hŒdebugfs_create_x32”…”�”}”(hjØíh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÔíubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj³íh²hh³jÅíh´M;ubj=)�”}”(hŒC(const char *name, umode_t mode, struct dentry *parent, u32 *value)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjôíh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjðíubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjðíubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjðíubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjðíubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj+îh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjðíubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj8îh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjðíubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjìíubjC)�”}”(hŒ umode_t mode”h]”(h)�”}”(hhh]”jI)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hjTîh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjQîubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jVîŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÚísbŒc.debugfs_create_x32”†”asbuh1hhjMîubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtîh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjMîubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj‚îh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjMîubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjìíubjC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj›îh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj—îubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨îh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj—îubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj¹îh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¶îubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j»îŒmodname”NŒ classname”Njj )�”}”j ]”jpîŒc.debugfs_create_x32”†”asbuh1hhj—îubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×îh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj—îubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjåîh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj—îubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjòîh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj—îubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjìíubjC)�”}”(hŒ u32 *value”h]”(h)�”}”(hhh]”jI)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ïubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jïŒmodname”NŒ classname”Njj )�”}”j ]”jpîŒc.debugfs_create_x32”†”asbuh1hhjïubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,ïh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjïubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj:ïh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjïubjI)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hjGïh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjïubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjìíubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj³íh²hh³jÅíh´M;ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj¯íh²hh³jÅíh´M;ubah}”(h]”jªíah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÅíh´M;hj¬íh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒMcreate a debugfs file that is used to read and write an unsigned 32-bit value”h]”hŒMcreate a debugfs file that is used to read and write an unsigned 32-bit value”…”�”}”(hjqïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M;hjnïh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¬íh²hh³jÅíh´M;ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j‰ïjšj‰ïj›‰jœ‰j�‰uh1jh²hhj|³h³Nh´NubjŸ)�”}”(hXÞ**Parameters** ``const char *name`` a pointer to a string containing the name of the file to create. ``umode_t mode`` the permission that the file should have ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ``u32 *value`` a pointer to the variable that the file should read to and write from.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj“ïh]”hŒ Parameters”…”�”}”(hj•ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‘ïubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M?hj�ïubj¿)�”}”(hhh]”(jÄ)�”}”(hŒV``const char *name`` a pointer to a string containing the name of the file to create. ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hj²ïh]”hŒconst char *name”…”�”}”(hj´ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj°ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M<hj¬ïubjæ)�”}”(hhh]”hÌ)�”}”(hŒ@a pointer to a string containing the name of the file to create.”h]”hŒ@a pointer to a string containing the name of the file to create.”…”�”}”(hjËïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÇïh´M<hjÈïubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¬ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÇïh´M<hj©ïubjÄ)�”}”(hŒ:``umode_t mode`` the permission that the file should have ”h]”(jÊ)�”}”(hŒ``umode_t mode``”h]”jÐ)�”}”(hjëïh]”hŒ umode_t mode”…”�”}”(hjíïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjéïubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M=hjåïubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(the permission that the file should have”h]”hŒ(the permission that the file should have”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jðh´M=hjðubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjåïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jðh´M=hj©ïubjÄ)�”}”(hŒØ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hj$ðh]”hŒstruct dentry *parent”…”�”}”(hj&ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj"ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M@hjðubjæ)�”}”(hhh]”hÌ)�”}”(hŒ½a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem.”h]”(hŒoa pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ”…”�”}”(hj=ðh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjEðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj=ðubhŒF, then the file will be created in the root of the debugfs filesystem.”…”�”}”(hj=ðh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M>hj:ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j9ðh´M@hj©ïubjÄ)�”}”(hŒU``u32 *value`` a pointer to the variable that the file should read to and write from.”h]”(jÊ)�”}”(hŒ``u32 *value``”h]”jÐ)�”}”(hjpðh]”hŒ u32 *value”…”�”}”(hjrðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjnðubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MAhjjðubjæ)�”}”(hhh]”hÌ)�”}”(hŒFa pointer to the variable that the file should read to and write from.”h]”hŒFa pointer to the variable that the file should read to and write from.”…”�”}”(hj‰ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j…ðh´MAhj†ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjjðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j…ðh´MAhj©ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj�ïubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj|³h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdebugfs_create_x64 (C function)”Œc.debugfs_create_x64”hNt”auh1hýhj|³h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ[void debugfs_create_x64 (const char *name, umode_t mode, struct dentry *parent, u64 *value)”h]”j)�”}”(hŒZvoid debugfs_create_x64(const char *name, umode_t mode, struct dentry *parent, u64 *value)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÉðh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÅðh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MMubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØðh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÅðh²hh³j×ðh´MMubjC)�”}”(hŒdebugfs_create_x64”h]”jI)�”}”(hŒdebugfs_create_x64”h]”hŒdebugfs_create_x64”…”�”}”(hjêðh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjæðubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÅðh²hh³j×ðh´MMubj=)�”}”(hŒC(const char *name, umode_t mode, struct dentry *parent, u64 *value)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjñubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjñubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj!ñh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjñubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/ñh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjñubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj=ñh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjñubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hjJñh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjþðubjC)�”}”(hŒ umode_t mode”h]”(h)�”}”(hhh]”jI)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hjfñh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjcñubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jhñŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjìðsbŒc.debugfs_create_x64”†”asbuh1hhj_ñubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†ñh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj_ñubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj”ñh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj_ñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjþðubjC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj­ñh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj©ñubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºñh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj©ñubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjËñh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÈñubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÍñŒmodname”NŒ classname”Njj )�”}”j ]”j‚ñŒc.debugfs_create_x64”†”asbuh1hhj©ñubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéñh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj©ñubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj÷ñh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj©ñubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj©ñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjþðubjC)�”}”(hŒ u64 *value”h]”(h)�”}”(hhh]”jI)�”}”(hŒu64”h]”hŒu64”…”�”}”(hj òh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjòubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j"òŒmodname”NŒ classname”Njj )�”}”j ]”j‚ñŒc.debugfs_create_x64”†”asbuh1hhjòubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>òh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjòubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjLòh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjòubjI)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hjYòh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjòubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjþðubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÅðh²hh³j×ðh´MMubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÁðh²hh³j×ðh´MMubah}”(h]”j¼ðah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j×ðh´MMhj¾ðh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒMcreate a debugfs file that is used to read and write an unsigned 64-bit value”h]”hŒMcreate a debugfs file that is used to read and write an unsigned 64-bit value”…”�”}”(hjƒòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MMhj€òh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¾ðh²hh³j×ðh´MMubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j›òjšj›òj›‰jœ‰j�‰uh1jh²hhj|³h³Nh´NubjŸ)�”}”(hXÞ**Parameters** ``const char *name`` a pointer to a string containing the name of the file to create. ``umode_t mode`` the permission that the file should have ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ``u64 *value`` a pointer to the variable that the file should read to and write from.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj¥òh]”hŒ Parameters”…”�”}”(hj§òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj£òubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MQhjŸòubj¿)�”}”(hhh]”(jÄ)�”}”(hŒV``const char *name`` a pointer to a string containing the name of the file to create. ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hjÄòh]”hŒconst char *name”…”�”}”(hjÆòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÂòubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MNhj¾òubjæ)�”}”(hhh]”hÌ)�”}”(hŒ@a pointer to a string containing the name of the file to create.”h]”hŒ@a pointer to a string containing the name of the file to create.”…”�”}”(hjÝòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÙòh´MNhjÚòubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¾òubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÙòh´MNhj»òubjÄ)�”}”(hŒ:``umode_t mode`` the permission that the file should have ”h]”(jÊ)�”}”(hŒ``umode_t mode``”h]”jÐ)�”}”(hjýòh]”hŒ umode_t mode”…”�”}”(hjÿòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjûòubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MOhj÷òubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(the permission that the file should have”h]”hŒ(the permission that the file should have”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jóh´MOhjóubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj÷òubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jóh´MOhj»òubjÄ)�”}”(hŒØ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hj6óh]”hŒstruct dentry *parent”…”�”}”(hj8óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj4óubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MRhj0óubjæ)�”}”(hhh]”hÌ)�”}”(hŒ½a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem.”h]”(hŒoa pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ”…”�”}”(hjOóh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjWóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjOóubhŒF, then the file will be created in the root of the debugfs filesystem.”…”�”}”(hjOóh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MPhjLóubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj0óubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jKóh´MRhj»òubjÄ)�”}”(hŒU``u64 *value`` a pointer to the variable that the file should read to and write from.”h]”(jÊ)�”}”(hŒ``u64 *value``”h]”jÐ)�”}”(hj‚óh]”hŒ u64 *value”…”�”}”(hj„óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj€óubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MShj|óubjæ)�”}”(hhh]”hÌ)�”}”(hŒFa pointer to the variable that the file should read to and write from.”h]”hŒFa pointer to the variable that the file should read to and write from.”…”�”}”(hj›óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j—óh´MShj˜óubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj|óubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j—óh´MShj»òubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjŸòubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj|³h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ"debugfs_create_size_t (C function)”Œc.debugfs_create_size_t”hNt”auh1hýhj|³h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒavoid debugfs_create_size_t (const char *name, umode_t mode, struct dentry *parent, size_t *value)”h]”j)�”}”(hŒ`void debugfs_create_size_t(const char *name, umode_t mode, struct dentry *parent, size_t *value)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÛóh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj×óh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Moubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêóh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj×óh²hh³jéóh´MoubjC)�”}”(hŒdebugfs_create_size_t”h]”jI)�”}”(hŒdebugfs_create_size_t”h]”hŒdebugfs_create_size_t”…”�”}”(hjüóh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjøóubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj×óh²hh³jéóh´Moubj=)�”}”(hŒF(const char *name, umode_t mode, struct dentry *parent, size_t *value)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjôubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%ôh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjôubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj3ôh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjôubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAôh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjôubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjOôh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjôubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj\ôh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjôubjC)�”}”(hŒ umode_t mode”h]”(h)�”}”(hhh]”jI)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hjxôh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjuôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jzôŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjþósbŒc.debugfs_create_size_t”†”asbuh1hhjqôubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜ôh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjqôubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj¦ôh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjqôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjôubjC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¿ôh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj»ôubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌôh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj»ôubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjÝôh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÚôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jßôŒmodname”NŒ classname”Njj )�”}”j ]”j”ôŒc.debugfs_create_size_t”†”asbuh1hhj»ôubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûôh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj»ôubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj õh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj»ôubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj»ôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjôubjC)�”}”(hŒ size_t *value”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj2õh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj/õubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j4õŒmodname”NŒ classname”Njj )�”}”j ]”j”ôŒc.debugfs_create_size_t”†”asbuh1hhj+õubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPõh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj+õubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj^õh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj+õubjI)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hjkõh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj+õubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjôubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj×óh²hh³jéóh´Moubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÓóh²hh³jéóh´Moubah}”(h]”jÎóah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jéóh´MohjÐóh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒDcreate a debugfs file that is used to read and write an size_t value”h]”hŒDcreate a debugfs file that is used to read and write an size_t value”…”�”}”(hj•õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mohj’õh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÐóh²hh³jéóh´Moubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j­õjšj­õj›‰jœ‰j�‰uh1jh²hhj|³h³Nh´NubjŸ)�”}”(hXá**Parameters** ``const char *name`` a pointer to a string containing the name of the file to create. ``umode_t mode`` the permission that the file should have ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ``size_t *value`` a pointer to the variable that the file should read to and write from.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj·õh]”hŒ Parameters”…”�”}”(hj¹õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjµõubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mshj±õubj¿)�”}”(hhh]”(jÄ)�”}”(hŒV``const char *name`` a pointer to a string containing the name of the file to create. ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hjÖõh]”hŒconst char *name”…”�”}”(hjØõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÔõubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MphjÐõubjæ)�”}”(hhh]”hÌ)�”}”(hŒ@a pointer to a string containing the name of the file to create.”h]”hŒ@a pointer to a string containing the name of the file to create.”…”�”}”(hjïõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jëõh´Mphjìõubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÐõubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jëõh´MphjÍõubjÄ)�”}”(hŒ:``umode_t mode`` the permission that the file should have ”h]”(jÊ)�”}”(hŒ``umode_t mode``”h]”jÐ)�”}”(hjöh]”hŒ umode_t mode”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj öubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mqhj öubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(the permission that the file should have”h]”hŒ(the permission that the file should have”…”�”}”(hj(öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j$öh´Mqhj%öubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj öubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j$öh´MqhjÍõubjÄ)�”}”(hŒØ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hjHöh]”hŒstruct dentry *parent”…”�”}”(hjJöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjFöubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MthjBöubjæ)�”}”(hhh]”hÌ)�”}”(hŒ½a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem.”•h]”(hŒoa pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ”…”�”}”(hjaöh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjiöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjaöubhŒF, then the file will be created in the root of the debugfs filesystem.”…”�”}”(hjaöh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mrhj^öubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjBöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j]öh´MthjÍõubjÄ)�”}”(hŒX``size_t *value`` a pointer to the variable that the file should read to and write from.”h]”(jÊ)�”}”(hŒ``size_t *value``”h]”jÐ)�”}”(hj”öh]”hŒ size_t *value”…”�”}”(hj–öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj’öubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MuhjŽöubjæ)�”}”(hhh]”hÌ)�”}”(hŒFa pointer to the variable that the file should read to and write from.”h]”hŒFa pointer to the variable that the file should read to and write from.”…”�”}”(hj­öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j©öh´Muhjªöubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjŽöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j©öh´MuhjÍõubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj±õubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj|³h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ$debugfs_create_atomic_t (C function)”Œc.debugfs_create_atomic_t”hNt”auh1hýhj|³h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒevoid debugfs_create_atomic_t (const char *name, umode_t mode, struct dentry *parent, atomic_t *value)”h]”j)�”}”(hŒdvoid debugfs_create_atomic_t(const char *name, umode_t mode, struct dentry *parent, atomic_t *value)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjíöh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjéöh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M’ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüöh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjéöh²hh³jûöh´M’ubjC)�”}”(hŒdebugfs_create_atomic_t”h]”jI)�”}”(hŒdebugfs_create_atomic_t”h]”hŒdebugfs_create_atomic_t”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ÷ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjéöh²hh³jûöh´M’ubj=)�”}”(hŒH(const char *name, umode_t mode, struct dentry *parent, atomic_t *value)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj*÷h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj&÷ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7÷h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj&÷ubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjE÷h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj&÷ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS÷h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj&÷ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hja÷h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj&÷ubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hjn÷h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj&÷ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj"÷ubjC)�”}”(hŒ umode_t mode”h]”(h)�”}”(hhh]”jI)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hjŠ÷h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‡÷ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jŒ÷Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj÷sbŒc.debugfs_create_atomic_t”†”asbuh1hhjƒ÷ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjª÷h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjƒ÷ubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj¸÷h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjƒ÷ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj"÷ubjC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÑ÷h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÍ÷ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞ÷h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÍ÷ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjï÷h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjì÷ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jñ÷Œmodname”NŒ classname”Njj )�”}”j ]”j¦÷Œc.debugfs_create_atomic_t”†”asbuh1hhjÍ÷ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj øh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÍ÷ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÍ÷ubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hj(øh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÍ÷ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj"÷ubjC)�”}”(hŒatomic_t *value”h]”(h)�”}”(hhh]”jI)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjDøh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjAøubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jFøŒmodname”NŒ classname”Njj )�”}”j ]”j¦÷Œc.debugfs_create_atomic_t”†”asbuh1hhj=øubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbøh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj=øubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjpøh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj=øubjI)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hj}øh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj=øubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj"÷ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjéöh²hh³jûöh´M’ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjåöh²hh³jûöh´M’ubah}”(h]”jàöah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jûöh´M’hjâöh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒFcreate a debugfs file that is used to read and write an atomic_t value”h]”hŒFcreate a debugfs file that is used to read and write an atomic_t value”…”�”}”(hj§øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M’hj¤øh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjâöh²hh³jûöh´M’ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j¿øjšj¿øj›‰jœ‰j�‰uh1jh²hhj|³h³Nh´NubjŸ)�”}”(hXã**Parameters** ``const char *name`` a pointer to a string containing the name of the file to create. ``umode_t mode`` the permission that the file should have ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ``atomic_t *value`` a pointer to the variable that the file should read to and write from.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÉøh]”hŒ Parameters”…”�”}”(hjËøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÇøubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M–hjÃøubj¿)�”}”(hhh]”(jÄ)�”}”(hŒV``const char *name`` a pointer to a string containing the name of the file to create. ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hjèøh]”hŒconst char *name”…”�”}”(hjêøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjæøubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M”hjâøubjæ)�”}”(hhh]”hÌ)�”}”(hŒ@a pointer to a string containing the name of the file to create.”h]”hŒ@a pointer to a string containing the name of the file to create.”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jýøh´M”hjþøubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjâøubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jýøh´M”hjßøubjÄ)�”}”(hŒ:``umode_t mode`` the permission that the file should have ”h]”(jÊ)�”}”(hŒ``umode_t mode``”h]”jÐ)�”}”(hj!ùh]”hŒ umode_t mode”…”�”}”(hj#ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjùubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M•hjùubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(the permission that the file should have”h]”hŒ(the permission that the file should have”…”�”}”(hj:ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j6ùh´M•hj7ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j6ùh´M•hjßøubjÄ)�”}”(hŒØ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hjZùh]”hŒstruct dentry *parent”…”�”}”(hj\ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjXùubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M˜hjTùubjæ)�”}”(hhh]”hÌ)�”}”(hŒ½a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem.”h]”(hŒoa pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ”…”�”}”(hjsùh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj{ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjsùubhŒF, then the file will be created in the root of the debugfs filesystem.”…”�”}”(hjsùh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M–hjpùubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjTùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³joùh´M˜hjßøubjÄ)�”}”(hŒZ``atomic_t *value`` a pointer to the variable that the file should read to and write from.”h]”(jÊ)�”}”(hŒ``atomic_t *value``”h]”jÐ)�”}”(hj¦ùh]”hŒatomic_t *value”…”�”}”(hj¨ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¤ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M™hj ùubjæ)�”}”(hhh]”hÌ)�”}”(hŒFa pointer to the variable that the file should read to and write from.”h]”hŒFa pointer to the variable that the file should read to and write from.”…”�”}”(hj¿ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j»ùh´M™hj¼ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j»ùh´M™hjßøubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÃøubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj|³h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ debugfs_create_bool (C function)”Œc.debugfs_create_bool”hNt”auh1hýhj|³h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ]void debugfs_create_bool (const char *name, umode_t mode, struct dentry *parent, bool *value)”h]”j)�”}”(hŒ\void debugfs_create_bool(const char *name, umode_t mode, struct dentry *parent, bool *value)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÿùh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjûùh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mäubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjûùh²hh³j úh´MäubjC)�”}”(hŒdebugfs_create_bool”h]”jI)�”}”(hŒdebugfs_create_bool”h]”hŒdebugfs_create_bool”…”�”}”(hj úh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjúubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjûùh²hh³j úh´Mäubj=)�”}”(hŒD(const char *name, umode_t mode, struct dentry *parent, bool *value)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj<úh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj8úubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIúh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj8úubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjWúh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj8úubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeúh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj8úubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjsúh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj8úubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj€úh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj8úubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj4úubjC)�”}”(hŒ umode_t mode”h]”(h)�”}”(hhh]”jI)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hjœúh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj™úubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jžúŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj"úsbŒc.debugfs_create_bool”†”asbuh1hhj•úubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼úh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj•úubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hjÊúh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj•úubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj4úubjC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjãúh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjßúubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðúh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjßúubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjþúubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jûŒmodname”NŒ classname”Njj )�”}”j ]”j¸úŒc.debugfs_create_bool”†”asbuh1hhjßúubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjßúubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj-ûh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjßúubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hj:ûh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjßúubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj4úubjC)�”}”(hŒ bool *value”h]”(j�)�”}”(hj„h]”hŒbool”…”�”}”(hjSûh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjOûubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`ûh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjOûubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjnûh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjOûubjI)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hj{ûh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjOûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj4úubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjûùh²hh³j úh´Mäubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj÷ùh²hh³j úh´Mäubah}”(h]”jòùah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j úh´Mähjôùh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒDcreate a debugfs file that is used to read and write a boolean value”h]”hŒDcreate a debugfs file that is used to read and write a boolean value”…”�”}”(hj¥ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mähj¢ûh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjôùh²hh³j úh´Mäubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j½ûjšj½ûj›‰jœ‰j�‰uh1jh²hhj|³h³Nh´NubjŸ)�”}”(hXª**Parameters** ``const char *name`` a pointer to a string containing the name of the file to create. ``umode_t mode`` the permission that the file should have ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ``bool *value`` a pointer to the variable that the file should read to and write from. **Description** This function creates a file in debugfs with the given name that contains the value of the variable **value**. If the **mode** variable is so set, it can be read from, and written to.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÇûh]”hŒ Parameters”…”�”}”(hjÉûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÅûubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MèhjÁûubj¿)�”}”(hhh]”(jÄ)�”}”(hŒV``const char *name`` a pointer to a string containing the name of the file to create. ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hjæûh]”hŒconst char *name”…”�”}”(hjèûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjäûubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Måhjàûubjæ)�”}”(hhh]”hÌ)�”}”(hŒ@a pointer to a string containing the name of the file to create.”h]”hŒ@a pointer to a string containing the name of the file to create.”…”�”}”(hjÿûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jûûh´Måhjüûubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjàûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jûûh´MåhjÝûubjÄ)�”}”(hŒ:``umode_t mode`` the permission that the file should have ”h]”(jÊ)�”}”(hŒ``umode_t mode``”h]”jÐ)�”}”(hjüh]”hŒ umode_t mode”…”�”}”(hj!üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjüubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mæhjüubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(the permission that the file should have”h]”hŒ(the permission that the file should have”…”�”}”(hj8üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j4üh´Mæhj5üubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjüubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j4üh´MæhjÝûubjÄ)�”}”(hŒØ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hjXüh]”hŒstruct dentry *parent”…”�”}”(hjZüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjVüubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MéhjRüubjæ)�”}”(hhh]”hÌ)�”}”(hŒ½a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem.”h]”(hŒoa pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ”…”�”}”(hjqüh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjyüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjqüubhŒF, then the file will be created in the root of the debugfs filesystem.”…”�”}”(hjqüh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mçhjnüubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjRüubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jmüh´MéhjÝûubjÄ)�”}”(hŒW``bool *value`` a pointer to the variable that the file should read to and write from. ”h]”(jÊ)�”}”(hŒ``bool *value``”h]”jÐ)�”}”(hj¤üh]”hŒ bool *value”…”�”}”(hj¦üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¢üubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mëhjžüubjæ)�”}”(hhh]”hÌ)�”}”(hŒFa pointer to the variable that the file should read to and write from.”h]”hŒFa pointer to the variable that the file should read to and write from.”…”�”}”(hj½üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mêhjºüubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjžüubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¹üh´MëhjÝûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÁûubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjàüh]”hŒ Description”…”�”}”(hjâüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÞüubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MíhjÁûubhÌ)�”}”(hŒ¸This function creates a file in debugfs with the given name that contains the value of the variable **value**. If the **mode** variable is so set, it can be read from, and written to.”h]”(hŒdThis function creates a file in debugfs with the given name that contains the value of the variable ”…”�”}”(hjöüh²hh³Nh´Nubj©)�”}”(hŒ **value**”h]”hŒvalue”…”�”}”(hjþüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjöüubhŒ . If the ”…”�”}”(hjöüh²hh³Nh´Nubj©)�”}”(hŒ**mode**”h]”hŒmode”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjöüubhŒ9 variable is so set, it can be read from, and written to.”…”�”}”(hjöüh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MìhjÁûubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj|³h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdebugfs_create_str (C function)”Œc.debugfs_create_str”hNt”auh1hýhj|³h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ]void debugfs_create_str (const char *name, umode_t mode, struct dentry *parent, char **value)”h]”j)�”}”(hŒ\void debugfs_create_str(const char *name, umode_t mode, struct dentry *parent, char **value)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjIýh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjEýh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M#ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXýh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjEýh²hh³jWýh´M#ubjC)�”}”(hŒdebugfs_create_str”h]”jI)�”}”(hŒdebugfs_create_str”h]”hŒdebugfs_create_str”…”�”}”(hjjýh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjfýubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjEýh²hh³jWýh´M#ubj=)�”}”(hŒE(const char *name, umode_t mode, struct dentry *parent, char **value)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj†ýh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj‚ýubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“ýh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‚ýubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj¡ýh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj‚ýubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯ýh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‚ýubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj½ýh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj‚ýubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hjÊýh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‚ýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj~ýubjC)�”}”(hŒ umode_t mode”h]”(h)�”}”(hhh]”jI)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hjæýh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjãýubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jèýŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjlýsbŒc.debugfs_create_str”†”asbuh1hhjßýubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjßýubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjßýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj~ýubjC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj-þh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj)þubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:þh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj)þubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjKþh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjHþubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jMþŒmodname”NŒ classname”Njj )�”}”j ]”jþŒc.debugfs_create_str”†”asbuh1hhj)þubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiþh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj)þubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjwþh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj)þubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hj„þh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj)þubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj~ýubjC)�”}”(hŒ char **value”h]”(j�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj�þh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj™þubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«þh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj™þubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj¹þh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj™þubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÆþh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj™þubjI)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hjÓþh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj™þubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj~ýubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjEýh²hh³jWýh´M#ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjAýh²hh³jWýh´M#ubah}”(h]”j<ýah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jWýh´M#hj>ýh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ9create a debugfs file that is used to read a string value”h]”hŒ9create a debugfs file that is used to read a string value”…”�”}”(hjýþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M#hjúþh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj>ýh²hh³jWýh´M#ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÿjšjÿj›‰jœ‰j�‰uh1jh²hhj|³h³Nh´NubjŸ)�”}”(hX**Parameters** ``const char *name`` a pointer to a string containing the name of the file to create. ``umode_t mode`` the permission that the file should have ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ``char **value`` a pointer to the variable that the file should read from. This pointer and the string it points to must not be ``NULL``. **Description** This function creates a file in debugfs with the given name that contains the value of the variable **value**. The file can be read from. Writable files are not supported; if **mode** contains write permission bits, no file is created.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÿh]”hŒ Parameters”…”�”}”(hj!ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M'hjÿubj¿)�”}”(hhh]”(jÄ)�”}”(hŒV``const char *name`` a pointer to a string containing the name of the file to create. ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hj>ÿh]”hŒconst char *name”…”�”}”(hj@ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj<ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M$hj8ÿubjæ)�”}”(hhh]”hÌ)�”}”(hŒ@a pointer to a string containing the name of the file to create.”h]”hŒ@a pointer to a string containing the name of the file to create.”…”�”}”(hjWÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jSÿh´M$hjTÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj8ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jSÿh´M$hj5ÿubjÄ)�”}”(hŒ:``umode_t mode`` the permission that the file should have ”h]”(jÊ)�”}”(hŒ``umode_t mode``”h]”jÐ)�”}”(hjwÿh]”hŒ umode_t mode”…”�”}”(hjyÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjuÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M%hjqÿubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(the permission that the file should have”h]”hŒ(the permission that the file should have”…”�”}”(hj�ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jŒÿh´M%hj�ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjqÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jŒÿh´M%hj5ÿubjÄ)�”}”(hŒØ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hj°ÿh]”hŒstruct dentry *parent”…”�”}”(hj²ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj®ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M(hjªÿubjæ)�”}”(hhh]”hÌ)�”}”(hŒ½a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem.”h]”(hŒoa pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ”…”�”}”(hjÉÿh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjÑÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÉÿubhŒF, then the file will be created in the root of the debugfs filesystem.”…”�”}”(hjÉÿh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M&hjÆÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjªÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÅÿh´M(hj5ÿubjÄ)�”}”(hŒŠ``char **value`` a pointer to the variable that the file should read from. This pointer and the string it points to must not be ``NULL``. ”h]”(jÊ)�”}”(hŒ``char **value``”h]”jÐ)�”}”(hjüÿh]”hŒ char **value”…”�”}”(hjþÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjúÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M*hjöÿubjæ)�”}”(hhh]”hÌ)�”}”(hŒxa pointer to the variable that the file should read from. This pointer and the string it points to must not be ``NULL``.”h]”(hŒoa pointer to the variable that the file should read from. This pointer and the string it points to must not be ”…”�”}”(hjh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjubhŒ.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M)hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjöÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jh´M*hj5ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÿubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjJh]”hŒ Description”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjHubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M,hjÿubhÌ)�”}”(hŒìThis function creates a file in debugfs with the given name that contains the value of the variable **value**. The file can be read from. Writable files are not supported; if **mode** contains write permission bits, no file is created.”h]”(hŒdThis function creates a file in debugfs with the given name that contains the value of the variable ”…”�”}”(hj`h²hh³Nh´Nubj©)�”}”(hŒ **value**”h]”hŒvalue”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj`ubhŒC. The file can be read from. Writable files are not supported; if ”…”�”}”(hj`h²hh³Nh´Nubj©)�”}”(hŒ**mode**”h]”hŒmode”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj`ubhŒ4 contains write permission bits, no file is created.”…”�”}”(hj`h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M+hjÿubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj|³h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ debugfs_create_blob (C function)”Œc.debugfs_create_blob”hNt”auh1hýhj|³h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ~struct dentry * debugfs_create_blob (const char *name, umode_t mode, struct dentry *parent, struct debugfs_blob_wrapper *blob)”h]”j)�”}”(hŒ|struct dentry *debugfs_create_blob(const char *name, umode_t mode, struct dentry *parent, struct debugfs_blob_wrapper *blob)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¯h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mgubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¯h²hh³jÀh´Mgubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÏubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÔŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒdebugfs_create_blob”sbŒc.debugfs_create_blob”†”asbuh1hhj¯h²hh³jÀh´Mgubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¯h²hh³jÀh´Mgubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¯h²hh³jÀh´MgubjC)�”}”(hŒdebugfs_create_blob”h]”jI)�”}”(hjðh]”hŒdebugfs_create_blob”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj¯h²hh³jÀh´Mgubj=)�”}”(hŒZ(const char *name, umode_t mode, struct dentry *parent, struct debugfs_blob_wrapper *blob)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj)ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj)ubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj)ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj)ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj)ubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj%ubjC)�”}”(hŒ umode_t mode”h]”(h)�”}”(hhh]”jI)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŠubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j�Œmodname”NŒ classname”Njj )�”}”j ]”jîŒc.debugfs_create_blob”†”asbuh1hhj†ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj†ubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj†ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj%ubjC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÎubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÎubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjíubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jòŒmodname”NŒ classname”Njj )�”}”j ]”jîŒc.debugfs_create_blob”†”asbuh1hhjÎubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÎubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÎubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÎubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj%ubjC)�”}”(hŒ!struct debugfs_blob_wrapper *blob”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj>ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj>ubh)�”}”(hhh]”jI)�”}”(hŒdebugfs_blob_wrapper”h]”hŒdebugfs_blob_wrapper”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj]ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jbŒmodname”NŒ classname”Njj )�”}”j ]”jîŒc.debugfs_create_blob”†”asbuh1hhj>ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj>ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj>ubjI)�”}”(hŒblob”h]”hŒblob”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj%ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj¯h²hh³jÀh´Mgubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj«h²hh³jÀh´Mgubah}”(h]”j¦ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÀh´Mghj¨h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒBcreate a debugfs file that is used to read and write a binary blob”h]”hŒBcreate a debugfs file that is used to read and write a binary blob”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MghjÀh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¨h²hh³jÀh´Mgubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÛjšjÛj›‰jœ‰j�‰uh1jh²hhj|³h³Nh´NubjŸ)�”}”(hXa**Parameters** ``const char *name`` a pointer to a string containing the name of the file to create. ``umode_t mode`` the permission that the file should have ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ``struct debugfs_blob_wrapper *blob`` a pointer to a struct debugfs_blob_wrapper which contains a pointer to the blob data and the size of the data. **Description** This function creates a file in debugfs with the given name that exports **blob->data** as a binary blob. If the **mode** variable is so set it can be read from and written to. This function will return a pointer to a dentry if it succeeds. This pointer must be passed to the debugfs_remove() function when the file is to be removed (no automatic cleanup happens if your module is unloaded, you are responsible here.) If an error occurs, ERR_PTR(-ERROR) will be returned. If debugfs is not enabled in the kernel, the value ERR_PTR(-ENODEV) will be returned.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjåh]”hŒ Parameters”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjãubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mkhjßubj¿)�”}”(hhh]”(jÄ)�”}”(hŒV``const char *name`` a pointer to a string containing the name of the file to create. ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hjh]”hŒconst char *name”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mihjþubjæ)�”}”(hhh]”hÌ)�”}”(hŒ@a pointer to a string containing the name of the file to create.”h]”hŒ@a pointer to a string containing the name of the file to create.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´Mihjubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjþubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jh´MihjûubjÄ)�”}”(hŒ:``umode_t mode`` the permission that the file should have ”h]”(jÊ)�”}”(hŒ``umode_t mode``”h]”jÐ)�”}”(hj=h]”hŒ umode_t mode”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mjhj7ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(the permission that the file should have”h]”hŒ(the permission that the file should have”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jRh´MjhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jRh´MjhjûubjÄ)�”}”(hŒØ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hjvh]”hŒstruct dentry *parent”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjtubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mmhjpubjæ)�”}”(hhh]”hÌ)�”}”(hŒ½a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem.”h]”(hŒoa pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ”…”�”}”(hj�h²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj�ubhŒF, then the file will be created in the root of the debugfs filesystem.”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MkhjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‹h´MmhjûubjÄ)�”}”(hŒ•``struct debugfs_blob_wrapper *blob`` a pointer to a struct debugfs_blob_wrapper which contains a pointer to the blob data and the size of the data. ”h]”(jÊ)�”}”(hŒ%``struct debugfs_blob_wrapper *blob``”h]”jÐ)�”}”(hjÂh]”hŒ!struct debugfs_blob_wrapper *blob”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mohj¼ubjæ)�”}”(hhh]”hÌ)�”}”(hŒna pointer to a struct debugfs_blob_wrapper which contains a pointer to the blob data and the size of the data.”h]”hŒna pointer to a struct debugfs_blob_wrapper which contains a pointer to the blob data and the size of the data.”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MnhjØubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j×h´Mohjûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjßubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjþh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjüubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MqhjßubhÌ)�”}”(hŒ°This function creates a file in debugfs with the given name that exports **blob->data** as a binary blob. If the **mode** variable is so set it can be read from and written to.”h]”(hŒIThis function creates a file in debugfs with the given name that exports ”…”�”}”(hjh²hh³Nh´Nubj©)�”}”(hŒ**blob->data**”h]”hŒ blob->data”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjubhŒ as a binary blob. If the ”…”�”}”(hjh²hh³Nh´Nubj©)�”}”(hŒ**mode**”h]”hŒmode”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjubhŒ7 variable is so set it can be read from and written to.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MphjßubhÌ)�”}”(hX(This function will return a pointer to a dentry if it succeeds. This pointer must be passed to the debugfs_remove() function when the file is to be removed (no automatic cleanup happens if your module is unloaded, you are responsible here.) If an error occurs, ERR_PTR(-ERROR) will be returned.”h]”hX(This function will return a pointer to a dentry if it succeeds. This pointer must be passed to the debugfs_remove() function when the file is to be removed (no automatic cleanup happens if your module is unloaded, you are responsible here.) If an error occurs, ERR_PTR(-ERROR) will be returned.”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MthjßubhÌ)�”}”(hŒUIf debugfs is not enabled in the kernel, the value ERR_PTR(-ENODEV) will be returned.”h]”hŒUIf debugfs is not enabled in the kernel, the value ERR_PTR(-ENODEV) will be returned.”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mzhjßubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj|³h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ%debugfs_create_u32_array (C function)”Œc.debugfs_create_u32_array”hNt”auh1hýhj|³h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒvvoid debugfs_create_u32_array (const char *name, umode_t mode, struct dentry *parent, struct debugfs_u32_array *array)”h]”j)�”}”(hŒuvoid debugfs_create_u32_array(const char *name, umode_t mode, struct dentry *parent, struct debugfs_u32_array *array)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj�h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MÇubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�h²hh³j“h´MÇubjC)�”}”(hŒdebugfs_create_u32_array”h]”jI)�”}”(hŒdebugfs_create_u32_array”h]”hŒdebugfs_create_u32_array”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¢ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj�h²hh³j“h´MÇubj=)�”}”(hŒX(const char *name, umode_t mode, struct dentry *parent, struct debugfs_u32_array *array)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¾ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¾ubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj¾ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¾ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj¾ubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjºubjC)�”}”(hŒ umode_t mode”h]”(h)�”}”(hhh]”jI)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j$Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj¨sbŒc.debugfs_create_u32_array”†”asbuh1hhjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjºubjC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjeubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjeubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj„ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j‰Œmodname”NŒ classname”Njj )�”}”j ]”j>Œc.debugfs_create_u32_array”†”asbuh1hhjeubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjeubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjeubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjºubjC)�”}”(hŒstruct debugfs_u32_array *array”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÕubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÕubh)�”}”(hhh]”jI)�”}”(hŒdebugfs_u32_array”h]”hŒdebugfs_u32_array”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jùŒmodname”NŒ classname”Njj )�”}”j ]”j>Œc.debugfs_create_u32_array”†”asbuh1hhjÕubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÕubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÕubjI)�”}”(hŒarray”h]”hŒarray”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÕubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjºubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj�h²hh³j“h´MÇubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj}h²hh³j“h´MÇubah}”(h]”jxah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j“h´MÇhjzh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ5create a debugfs file that is used to read u32 array.”h]”hŒ5create a debugfs file that is used to read u32 array.”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MÇhjWh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjzh²hh³j“h´MÇubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jrjšjrj›‰jœ‰j�‰uh1jh²hhj|³h³Nh´NubjŸ)�”}”(hX**Parameters** ``const char *name`` a pointer to a string containing the name of the file to create. ``umode_t mode`` the permission that the file should have. ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ``struct debugfs_u32_array *array`` wrapper struct containing data pointer and size of the array. **Description** This function creates a file in debugfs with the given name that exports **array** as data. If the **mode** variable is so set it can be read from. Writing is not supported. Seek within the file is also not supported. Once array is created its size can not be changed.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj|h]”hŒ Parameters”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjzubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MËhjvubj¿)�”}”(hhh]”(jÄ)�”}”(hŒV``const char *name`` a pointer to a string containing the name of the file to create. ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hj›h]”hŒconst char *name”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MÉhj•ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ@a pointer to a string containing the name of the file to create.”h]”hŒ@a pointer to a string containing the name of the file to create.”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j°h´MÉhj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j°h´MÉhj’ubjÄ)�”}”(hŒ;``umode_t mode`` the permission that the file should have. ”h]”(jÊ)�”}”(hŒ``umode_t mode``”h]”jÐ)�”}”(hjÔh]”hŒ umode_t mode”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MÊhjÎubjæ)�”}”(hhh]”hÌ)�”}”(hŒ)the permission that the file should have.”h]”hŒ)the permission that the file should have.”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jéh´MÊhjêubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jéh´MÊhj’ubjÄ)�”}”(hŒØ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hj h]”hŒstruct dentry *parent”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MÍhjubjæ)�”}”(hhh]”hÌ)�”}”(hŒ½a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem.”h]”(hŒoa pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ”…”�”}”(hj&h²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj&ubhŒF, then the file will be created in the root of the debugfs filesystem.”…”�”}”(hj&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MËhj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j"h´MÍhj’ubjÄ)�”}”(hŒb``struct debugfs_u32_array *array`` wrapper struct containing data pointer and size of the array. ”h]”(jÊ)�”}”(hŒ#``struct debugfs_u32_array *array``”h]”jÐ)�”}”(hjYh]”hŒstruct debugfs_u32_array *array”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MÎhjSubjæ)�”}”(hhh]”hÌ)�”}”(hŒ=wrapper struct containing data pointer and size of the array.”h]”hŒ=wrapper struct containing data pointer and size of the array.”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jnh´MÎhjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjSubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jnh´MÎhj’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjvubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj”h]”hŒ Description”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MÐhjvubhÌ)�”}”(hX This function creates a file in debugfs with the given name that exports **array** as data. If the **mode** variable is so set it can be read from. Writing is not supported. Seek within the file is also not supported. Once array is created its size can not be changed.”h]”(hŒIThis function creates a file in debugfs with the given name that exports ”…”�”}”(hjªh²hh³Nh´Nubj©)�”}”(hŒ **array**”h]”hŒarray”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjªubhŒ as data. If the ”…”�”}”(hjªh²hh³Nh´Nubj©)�”}”(hŒ**mode**”h]”hŒmode”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjªubhŒ¡ variable is so set it can be read from. Writing is not supported. Seek within the file is also not supported. Once array is created its size can not be changed.”…”�”}”(hjªh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MÏhjvubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj|³h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ!debugfs_print_regs32 (C function)”Œc.debugfs_print_regs32”hNt”auh1hýhj|³h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ}void debugfs_print_regs32 (struct seq_file *s, const struct debugfs_reg32 *regs, int nregs, void __iomem *base, char *prefix)”h]”j)�”}”(hŒ|void debugfs_print_regs32(struct seq_file *s, const struct debugfs_reg32 *regs, int nregs, void __iomem *base, char *prefix)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjùh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mæubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjùh²hh³j h´MæubjC)�”}”(hŒdebugfs_print_regs32”h]”jI)�”}”(hŒdebugfs_print_regs32”h]”hŒdebugfs_print_regs32”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjùh²hh³j h´Mæubj=)�”}”(hŒc(struct seq_file *s, const struct debugfs_reg32 *regs, int nregs, void __iomem *base, char *prefix)”h]”(jC)�”}”(hŒstruct seq_file *s”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj6ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj6ubh)�”}”(hhh]”jI)�”}”(hŒseq_file”h]”hŒseq_file”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjUubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jZŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj sbŒc.debugfs_print_regs32”†”asbuh1hhj6ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj6ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj6ubjI)�”}”(hj9h]”hŒs”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj2ubjC)�”}”(hŒ const struct debugfs_reg32 *regs”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj§ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj§ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj§ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj§ubh)�”}”(hhh]”jI)�”}”(hŒ debugfs_reg32”h]”hŒ debugfs_reg32”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjáubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jæŒmodname”NŒ classname”Njj )�”}”j ]”jtŒc.debugfs_print_regs32”†”asbuh1hhj§ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj§ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj§ubjI)�”}”(hŒregs”h]”hŒregs”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj2ubjC)�”}”(hŒ int nregs”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hj6 h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj2 ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjD h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj2 ubjI)�”}”(hŒnregs”h]”hŒnregs”…”�”}”(hjR h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj2 ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj2ubjC)�”}”(hŒvoid __iomem *base”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjk h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjg ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjg ubhŒ__iomem”…”�”}”(hjg h²hh³Nh´Nubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹ h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjg ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj™ h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjg ubjI)�”}”(hŒbase”h]”hŒbase”…”�”}”(hj¦ h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjg ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj2ubjC)�”}”(hŒ char *prefix”h]”(j�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj¿ h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj» ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍ h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj» ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÛ h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj» ubjI)�”}”(hŒprefix”h]”hŒprefix”…”�”}”(hjè h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj» ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj2ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjùh²hh³j h´Mæubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjõh²hh³j h´Mæubah}”(h]”jðah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j h´Mæhjòh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ,use seq_print to describe a set of registers”h]”hŒ,use seq_print to describe a set of registers”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mæhj h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjòh²hh³j h´Mæubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j* jšj* j›‰jœ‰j�‰uh1jh²hhj|³h³Nh´NubjŸ)�”}”(hX**Parameters** ``struct seq_file *s`` the seq_file structure being used to generate output ``const struct debugfs_reg32 *regs`` an array if struct debugfs_reg32 structures ``int nregs`` the length of the above array ``void __iomem *base`` the base address to be used in reading the registers ``char *prefix`` a string to be prefixed to every output line **Description** This function outputs a text block describing the current values of some 32-bit hardware registers. It is meant to be used within debugfs files based on seq_file that need to show registers, intermixed with other information. The prefix argument may be used to specify a leading string, because some peripherals have several blocks of identical registers, for example configuration of dma channels”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj4 h]”hŒ Parameters”…”�”}”(hj6 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj2 ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mêhj. ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒL``struct seq_file *s`` the seq_file structure being used to generate output ”h]”(jÊ)�”}”(hŒ``struct seq_file *s``”h]”jÐ)�”}”(hjS h]”hŒstruct seq_file *s”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjQ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MçhjM ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ4the seq_file structure being used to generate output”h]”hŒ4the seq_file structure being used to generate output”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh h´Mçhji ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjM ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jh h´MçhjJ ubjÄ)�”}”(hŒQ``const struct debugfs_reg32 *regs`` an array if struct debugfs_reg32 structures ”h]”(jÊ)�”}”(hŒ$``const struct debugfs_reg32 *regs``”h]”jÐ)�”}”(hjŒ h]”hŒ const struct debugfs_reg32 *regs”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjŠ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mèhj† ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+an array if struct debugfs_reg32 structures”h]”hŒ+an array if struct debugfs_reg32 structures”…”�”}”(hj¥ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¡ h´Mèhj¢ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj† ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¡ h´MèhjJ ubjÄ)�”}”(hŒ,``int nregs`` the length of the above array ”h]”(jÊ)�”}”(hŒ ``int nregs``”h]”jÐ)�”}”(hjÅ h]”hŒ int nregs”…”�”}”(hjÇ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjà ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Méhj¿ ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe length of the above array”h]”hŒthe length of the above array”…”�”}”(hjÞ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÚ h´MéhjÛ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¿ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÚ h´MéhjJ ubjÄ•{})�”}”(hŒL``void __iomem *base`` the base address to be used in reading the registers ”h]”(jÊ)�”}”(hŒ``void __iomem *base``”h]”jÐ)�”}”(hjþ h]”hŒvoid __iomem *base”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjü ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mêhjø ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ4the base address to be used in reading the registers”h]”hŒ4the base address to be used in reading the registers”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j h´Mêhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjø ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j h´MêhjJ ubjÄ)�”}”(hŒ>``char *prefix`` a string to be prefixed to every output line ”h]”(jÊ)�”}”(hŒ``char *prefix``”h]”jÐ)�”}”(hj7 h]”hŒ char *prefix”…”�”}”(hj9 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj5 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mëhj1 ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ,a string to be prefixed to every output line”h]”hŒ,a string to be prefixed to every output line”…”�”}”(hjP h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jL h´MëhjM ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj1 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jL h´MëhjJ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj. ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjr h]”hŒ Description”…”�”}”(hjt h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjp ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Míhj. ubhÌ)�”}”(hX�This function outputs a text block describing the current values of some 32-bit hardware registers. It is meant to be used within debugfs files based on seq_file that need to show registers, intermixed with other information. The prefix argument may be used to specify a leading string, because some peripherals have several blocks of identical registers, for example configuration of dma channels”h]”hX�This function outputs a text block describing the current values of some 32-bit hardware registers. It is meant to be used within debugfs files based on seq_file that need to show registers, intermixed with other information. The prefix argument may be used to specify a leading string, because some peripherals have several blocks of identical registers, for example configuration of dma channels”…”�”}”(hjˆ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mìhj. ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj|³h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ$debugfs_create_regset32 (C function)”Œc.debugfs_create_regset32”hNt”auh1hýhj|³h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒuvoid debugfs_create_regset32 (const char *name, umode_t mode, struct dentry *parent, struct debugfs_regset32 *regset)”h]”j)�”}”(hŒtvoid debugfs_create_regset32(const char *name, umode_t mode, struct dentry *parent, struct debugfs_regset32 *regset)”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj³ h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆ h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj³ h²hh³jÅ h´MubjC)�”}”(hŒdebugfs_create_regset32”h]”jI)�”}”(hŒdebugfs_create_regset32”h]”hŒdebugfs_create_regset32”…”�”}”(hjØ h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÔ ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj³ h²hh³jÅ h´Mubj=)�”}”(hŒX(const char *name, umode_t mode, struct dentry *parent, struct debugfs_regset32 *regset)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjô h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjð ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjð ubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjð ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjð ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj+ h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjð ubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj8 h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjð ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjì ubjC)�”}”(hŒ umode_t mode”h]”(h)�”}”(hhh]”jI)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hjT h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjQ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jV Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÚ sbŒc.debugfs_create_regset32”†”asbuh1hhjM ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjM ubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj‚ h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjM ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjì ubjC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj— ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨ h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj— ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj¹ h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¶ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j» Œmodname”NŒ classname”Njj )�”}”j ]”jp Œc.debugfs_create_regset32”†”asbuh1hhj— ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj× h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj— ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjå h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj— ubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjò h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj— ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjì ubjC)�”}”(hŒstruct debugfs_regset32 *regset”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ubh)�”}”(hhh]”jI)�”}”(hŒdebugfs_regset32”h]”hŒdebugfs_regset32”…”�”}”(hj) h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj& ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j+ Œmodname”NŒ classname”Njj )�”}”j ]”jp Œc.debugfs_create_regset32”†”asbuh1hhj ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjG h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj ubjI)�”}”(hŒregset”h]”hŒregset”…”�”}”(hjb h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjì ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj³ h²hh³jÅ h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj¯ h²hh³jÅ h´Mubah}”(h]”jª ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÅ h´Mhj¬ h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ2create a debugfs file that returns register values”h]”hŒ2create a debugfs file that returns register values”…”�”}”(hjŒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mhj‰ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¬ h²hh³jÅ h´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j¤ jšj¤ j›‰jœ‰j�‰uh1jh²hhj|³h³Nh´NubjŸ)�”}”(hX@**Parameters** ``const char *name`` a pointer to a string containing the name of the file to create. ``umode_t mode`` the permission that the file should have ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ``struct debugfs_regset32 *regset`` a pointer to a struct debugfs_regset32, which contains a pointer to an array of register definitions, the array size and the base address where the register bank is to be found. **Description** This function creates a file in debugfs with the given name that reports the names and values of a set of 32-bit registers. If the **mode** variable is so set it can be read from. Writing is not supported.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj® h]”hŒ Parameters”…”�”}”(hj° h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¬ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mhj¨ ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒV``const char *name`` a pointer to a string containing the name of the file to create. ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hjÍ h]”hŒconst char *name”…”�”}”(hjÏ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjË ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MhjÇ ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ@a pointer to a string containing the name of the file to create.”h]”hŒ@a pointer to a string containing the name of the file to create.”…”�”}”(hjæ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jâ h´Mhjã ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÇ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jâ h´MhjÄ ubjÄ)�”}”(hŒ:``umode_t mode`` the permission that the file should have ”h]”(jÊ)�”}”(hŒ``umode_t mode``”h]”jÐ)�”}”(hjh]”hŒ umode_t mode”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mhjubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(the permission that the file should have”h]”hŒ(the permission that the file should have”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jh´MhjÄ ubjÄ)�”}”(hŒØ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hj?h]”hŒstruct dentry *parent”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mhj9ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ½a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem.”h]”(hŒoa pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ”…”�”}”(hjXh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjXubhŒF, then the file will be created in the root of the debugfs filesystem.”…”�”}”(hjXh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jTh´MhjÄ ubjÄ)�”}”(hŒÖ``struct debugfs_regset32 *regset`` a pointer to a struct debugfs_regset32, which contains a pointer to an array of register definitions, the array size and the base address where the register bank is to be found. ”h]”(jÊ)�”}”(hŒ#``struct debugfs_regset32 *regset``”h]”jÐ)�”}”(hj‹h]”hŒstruct debugfs_regset32 *regset”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mhj…ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ±a pointer to a struct debugfs_regset32, which contains a pointer to an array of register definitions, the array size and the base address where the register bank is to be found.”h]”hŒ±a pointer to a struct debugfs_regset32, which contains a pointer to an array of register definitions, the array size and the base address where the register bank is to be found.”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mhj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j h´MhjÄ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj¨ ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÇh]”hŒ Description”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M hj¨ ubhÌ)�”}”(hŒÍThis function creates a file in debugfs with the given name that reports the names and values of a set of 32-bit registers. If the **mode** variable is so set it can be read from. Writing is not supported.”h]”(hŒƒThis function creates a file in debugfs with the given name that reports the names and values of a set of 32-bit registers. If the ”…”�”}”(hjÝh²hh³Nh´Nubj©)�”}”(hŒ**mode**”h]”hŒmode”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÝubhŒB variable is so set it can be read from. Writing is not supported.”…”�”}”(hjÝh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mhj¨ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj|³h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ(debugfs_create_devm_seqfile (C function)”Œc.debugfs_create_devm_seqfile”hNt”auh1hýhj|³h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒŽvoid debugfs_create_devm_seqfile (struct device *dev, const char *name, struct dentry *parent, int (*read_fn)(struct seq_file *s, void *data))”h]”j)�”}”(hŒ�void debugfs_create_devm_seqfile(struct device *dev, const char *name, struct dentry *parent, int (*read_fn)(struct seq_file *s, void *data))”h]”(j�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MCubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjh²hh³j,h´MCubjC)�”}”(hŒdebugfs_create_devm_seqfile”h]”jI)�”}”(hŒdebugfs_create_devm_seqfile”h]”hŒdebugfs_create_devm_seqfile”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj;ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjh²hh³j,h´MCubj=)�”}”(hŒm(struct device *dev, const char *name, struct dentry *parent, int (*read_fn)(struct seq_file *s, void *data))”h]”(jC)�”}”(hŒstruct device *dev”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjWubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjWubh)�”}”(hhh]”jI)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjvubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j{Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjAsbŒc.debugfs_create_devm_seqfile”†”asbuh1hhjWubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjWubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjWubjI)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjSubjC)�”}”(hŒconst char *name”h]”(j )�”}”(hjJh]”hŒconst”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÉubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÉubj�)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hjÉubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÉubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hjÉubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÉubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjSubjC)�”}”(hŒstruct dentry *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj&ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj&ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjEubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jJŒmodname”NŒ classname”Njj )�”}”j ]”j•Œc.debugfs_create_devm_seqfile”†”asbuh1hhj&ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj&ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj&ubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjSubjC)�”}”(hŒ.int (*read_fn)(struct seq_file *s, void *data)”h]”(j�)�”}”(hŒint”h]”hŒint”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj–ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj–ubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj–ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj–ubjI)�”}”(hŒread_fn”h]”hŒread_fn”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj–ubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj–ubj¯)�”}”(hjÊ¥h]”hŒ(”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj–ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj–ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj–ubh)�”}”(hhh]”jI)�”}”(hŒseq_file”h]”hŒseq_file”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jŒmodname”NŒ classname”Njj )�”}”j ]”j•Œc.debugfs_create_devm_seqfile”†”asbuh1hhj–ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj–ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj–ubjI)�”}”(hj9h]”hŒs”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj–ubj¯)�”}”(hjW¦h]”hŒ,”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj–ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj–ubj�)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j€hj–ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj–ubj¯)�”}”(hj²h]”hŒ*”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj–ubjI)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj–ubj¯)�”}”(hjó¥h]”hŒ)”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”j»ah"]”h$]”h&]”uh1j®hj–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjSubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjh²hh³j,h´MCubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjh²hh³j,h´MCubah}”(h]”jah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j,h´MChjh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ.create a debugfs file that is bound to device.”h]”hŒ.create a debugfs file that is bound to device.”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MChjÔh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjh²hh³j,h´MCubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jïjšjïj›‰jœ‰j�‰uh1jh²hhj|³h³Nh´NubjŸ)�”}”(hXË**Parameters** ``struct device *dev`` device related to this debugfs file. ``const char *name`` name of the debugfs file. ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ``int (*read_fn)(struct seq_file *s, void *data)`` function pointer called to print the seq_file content.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjùh]”hŒ Parameters”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MGhjóubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ<``struct device *dev`` device related to this debugfs file. ”h]”(jÊ)�”}”(hŒ``struct device *dev``”h]”jÐ)�”}”(hjh]”hŒstruct device *dev”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MEhjubjæ)�”}”(hhh]”hÌ)�”}”(hŒ$device related to this debugfs file.”h]”hŒ$device related to this debugfs file.”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j-h´MEhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j-h´MEhjubjÄ)�”}”(hŒ/``const char *name`` name of the debugfs file. ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hjQh]”hŒconst char *name”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MFhjKubjæ)�”}”(hhh]”hÌ)�”}”(hŒname of the debugfs file.”h]”hŒname of the debugfs file.”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jfh´MFhjgubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjKubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jfh´MFhjubjÄ)�”}”(hŒØ``struct dentry *parent`` a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem. ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hjŠh]”hŒstruct dentry *parent”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MIhj„ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ½a pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ``NULL``, then the file will be created in the root of the debugfs filesystem.”h]”(hŒoa pointer to the parent dentry for this file. This should be a directory dentry if set. If this parameter is ”…”�”}”(hj£h²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj£ubhŒF, then the file will be created in the root of the debugfs filesystem.”…”�”}”(hj£h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MGhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jŸh´MIhjubjÄ)�”}”(hŒi``int (*read_fn)(struct seq_file *s, void *data)`` function pointer called to print the seq_file content.”h]”(jÊ)�”}”(hŒ2``int (*read_fn)(struct seq_file *s, void *data)``”h]”jÐ)�”}”(hjÖh]”hŒ.int (*read_fn)(struct seq_file *s, void *data)”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MKhjÐubjæ)�”}”(hhh]”hÌ)�”}”(hŒ6function pointer called to print the seq_file content.”h]”hŒ6function pointer called to print the seq_file content.”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MJhjìubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jëh´MKhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjóubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj|³h²hh³Nh´Nubeh}”(h]”Œdebugfs-interface”ah ]”h"]”Œdebugfs interface”ah$]”h&]”uh1hµhjk³h²hh³hÊh´K�ubeh}”(h]”Œthe-debugfs-filesystem”ah ]”h"]”Œthe debugfs filesystem”ah$]”h&]”uh1hµhh·h²hh³hÊh´K�ubeh}”(h]”Œlinux-filesystems-api-summary”ah ]”h"]”Œlinux filesystems api summary”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”Œentry”Œ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”jRŒ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)j4Ej1EjÜEjÙEj�j�jtjqj@4j=4jLgjIgj,Ej)EjâjjßjjÎhjËhjÚjj×jj­wjªwjî„jë„jh³je³j$j!jjuŒ nametypes”}”(j,‰j4E‰jÜE‰j�‰jt‰j@4‰jLg‰j,E‰jâj‰jÎh‰jÚj‰j­w‰jjh³‰j$‰j‰uh}”(j)h·j1EhÛjÙEhìj jjj„j\jajãjèjÝjâjsjxjájæjj!j¡j¦j jjF"jK"j¯$j´$j'j'j§)j¬)j{,j€,j.j.j±/j¶/j2j2j«3j°3j+5j05j#7j(7j¤8j©8j%:j*:j¦;j«;j'=j,=j?j?jE@jJ@jÆAjËAjGCjLCj�jßEjüEjFjªGj¯GjìJjñJjºLj¿Lj…NjŠNjPj Pj¢Qj§QjýRjSj�Uj”UjáWjæWj)Zj.Zj9\j>\jI^jN^juajzaj˜dj�djlgjqgjíhjòhjnjjsjjHmjMmj=pjBpjyrj~rj(uj-ujQwjVwjyj$yj8{j={jÔ|jÙ|j�~j•~jL€jQ€jÍ�jÒ�jNƒjSƒj%…j*…jü†j‡jâˆjçˆjI‹jN‹jqj�j9�j>�jö�jû�jw‘j|‘jø’jý’j•j•j„–j‰–jß—jä—jí™jò™jw›j|›jøœjýœj¾žjÞj? jD ji¢jn¢jm¤jr¤j ªjªj¤¯j©¯jê´jï´jH·jM·jv¹j{¹jѺjÖºj¬¿j±¿jÄj ÄjWÆj\ÆjðÊjõÊjoÏjtÏjEÒjJÒjßÓjäÓj:Õj?Õj˜×j�×jNÚjSÚjõÜjúÜj�Þj¢Þj[àj`àjâjâjÒãj×ãj¡åj¦åjaéjféjìj ìj•íjšíjàïjåïj­ñj²ñj%ôj*ôjp÷ju÷jÏújÔújæüjëüjqþjvþjúÿjÿÿj=4jwj”j™j.j3jÊjÏjdjijþjj| j� j°jµjcjhj jjŒj‘j^jcj-!j2!ji#jn#j¥%jª%j)j#)jÕ+jÚ+jh-jm-j1j$1jIgjC4j`4je4jÏ6jÔ6jY8j^8j;;j@;jÏ<jÔ<jÚ>jß>jAj AjÐjCÐj¢Õj§ÕjÛj Ûj÷ÝjüÝjèàjíàjÁâjÆâjãåjèåjcéjhéj¨ëj­ëjAðjFðjÂñjÇñjÜójáójõj„õj.÷j3÷j§ùj¬ùjÃüjÈüjÓjØj jjÚjßj; j@ j=jBjj jÏjÔjùjþjjjwj|jž j£ j±"j¶"j³'j¸'jš*jŸ*j÷-jü-j¤0j©0j%3j*3j¥4jª4j%6j*6j¦7j«7j'9j,9j¨:j­:js<jx<j>j>j˜?j�?j(Aj-Aj/Cj4Cjßjj7EjËhjHEjeEjjEj[Ij`IjNMjSMj2Qj7QjUjUj YjYjü\j]jï`jô`jâdjçdj×jjÑhjîhjóhjªwjåjjkjkjmj mj…njŠnj¬qj±qjüsjtjŒuj‘ujë„j°wjÍwjÒwj×yjÜyjx{j}{jß~jä~jº�j¿�je³jñ„j…j…jñ‡jö‡j¦Šj«ŠjF�jK�jØ�jÝ�jk‘jp‘jt”jy”j¸–j½–jm™jr™jŒ›j‘›j«�j°�j j  jï¢jô¢j÷§jü§j‘ªj–ªj[­j`­jL¯jQ¯j!jk³jj|³j™³jž³j¶j#¶jQºjVºj¬¾j±¾jWÁj\Áj³Äj¸ÄjÎÇjÓÇj_ÉjdÉjvËj{ËjÎjÎjÏjÏj±Ðj¶Ðj3Òj8Òj|Ôj�Ôj§Öj¬ÖjÚj ÚjcÝjhÝjÁàjÆàjäj$äj†çj‹çj˜êj�êjªíj¯íj¼ðjÁðjÎójÓójàöjåöjòùj÷ùj<ýjAýj¦j«jxj}jðjõjª j¯ jjuŒ 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.